Code:
//login.c
//state==1
#include "system.h"
#include <stdlib.h>
#include <avr/pgmspace.h>
//declare variables
//extern unsigned char ticks;
extern volatile unsigned char screen;
extern volatile unsigned char state;
extern unsigned char last_btn_clicked; //variable returned by interrupt buttons
extern unsigned char last_btn_clicked_held;
extern unsigned char loggedin;
extern unsigned char user_time;
extern unsigned char dpError;
extern char user_file;
void login(void){
//define local variables
//login values
signed char li1=1;
signed char li2=2;
signed char li3=3;
signed char li4=4;
signed char li5=5;
signed char li6=0;
signed char li7=9;
signed char li8=2;
signed char li9=1;
signed char li10=0;
signed char li11=1;
signed char li12=8;
signed char li13=0;
//validation values
signed char vi1=0;
signed char vi2=0;
signed char vi3=0;
signed char vi4=0;
signed char vi5=0;
signed char vi6=0;
signed char vi7=0;
signed char vi8=0;
unsigned int cutterNo;
char loop=1;
unsigned int parseA;
unsigned int parseB;
long login_code;
char pass;
//get the cutterNo number
cutterNo=1234;
while(loop){
input();
//*********************** Login
LCDdisplay(0,0,"Login:");
if(screen>=13){
LCDdisplay(0,1," ");
LCDdisplay(0,2," ");
}
else{
LCDdisplay(0,2,"Left & Right to Set");
LCDdisplay(0,3,"Accept to Continue");
}
//************************************************************
// Enter set one
//************************************************************
if(screen==0){ //enter digit 1
LCDdisplay(0,1,"_____ - ____ - ____");
li1=set_val(0,1,0,9,li1,1);
if(last_btn_clicked==3){
screen=1;
}
}
else if(screen==1){ //enter digit 2
li2=set_val(1,1,0,9,li2,1);
if(last_btn_clicked==3){
screen=2;
}
}
else if(screen==2){ //enter digit 3
li3=set_val(2,1,0,9,li3,1);
if(last_btn_clicked==3){
screen=3;
}
}
else if(screen==3){ //enter digit 4
li4=set_val(3,1,0,9,li4,1);
if(last_btn_clicked==3){
screen=4;
}
}
else if(screen==4){ //enter digit 5
li5=set_val(4,1,0,9,li5,1);
if(last_btn_clicked==3){
screen=5;
}
}
//************************************************************
// Enter set two
//************************************************************
else if(screen==5){ //enter digit 6
li6=set_val(8,1,0,9,li6,1);
if(last_btn_clicked==3){
screen=6;
}
}
else if(screen==6){ //enter digit 7
li7=set_val(9,1,0,9,li7,1);
if(last_btn_clicked==3){
screen=7;
}
}
else if(screen==7){ //enter digit 8
li8=set_val(10,1,0,9,li8,1);
if(last_btn_clicked==3){
screen=8;
}
}
else if(screen==8){ //enter digit 9
li9=set_val(11,1,0,9,li9,1);
if(last_btn_clicked==3){
screen=9;
}
}
//************************************************************
// Enter set three
//************************************************************
else if(screen==9){ //enter digit 10
li10=set_val(15,1,0,9,li10,1);
if(last_btn_clicked==3){
screen=10;
}
}
else if(screen==10){ //enter digit 11
li11=set_val(16,1,0,9,li11,1);
if(last_btn_clicked==3){
screen=11;
}
}
else if(screen==11){ //enter digit 12
li12=set_val(17,1,0,9,li12,1);
if(last_btn_clicked==3){
screen=12;
}
}
else if(screen==12){ //enter digit 13
li13=set_val(18,1,0,9,li13,1);
if(last_btn_clicked==3){
screen=13;
}
}
else if(screen==13){
//**************************************************
// Validate Login Structure
//**************************************************
if(li5==0){
vi1=li6;
vi2=li7;
vi3=li8;
vi4=li13;
vi5=li10;
vi6=li9;
vi7=li11;
vi8=li12;
}
else if(li5==1){
vi1=li7;
vi2=li9;
vi3=li8;
vi4=li13;
vi5=li12;
vi6=li11;
vi7=li10;
vi8=li6;
}
else if(li5==2){
vi1=li8;
vi2=li10;
vi3=li9;
vi4=li6;
vi5=li7;
vi6=li11;
vi7=li12;
vi8=li13;
}
else if(li5==3){
vi1=li9;
vi2=li13;
vi3=li11;
vi4=li10;
vi5=li8;
vi6=li12;
vi7=li6;
vi8=li7;
}
else if(li5==4){
vi1=li10;
vi2=li13;
vi3=li11;
vi4=li6;
vi5=li8;
vi6=li9;
vi7=li12;
vi8=li7;
}
else if(li5==5){
vi1=li11;
vi2=li10;
vi3=li12;
vi4=li7;
vi5=li9;
vi6=li8;
vi7=li6;
vi8=li13;
}
else if(li5==6){
vi1=li12;
vi2=li11;
vi3=li9;
vi4=li10;
vi5=li8;
vi6=li7;
vi7=li13;
vi8=li6;
}
else if(li5==7){
vi5=li13;
vi6=li11;
vi4=li6;
vi1=li9;
vi8=li7;
vi7=li8;
vi2=li12;
vi3=li10;
}
else if(li5==8){
vi5=li13;
vi4=li9;
vi6=li12;
vi3=li8;
vi1=li11;
vi7=li6;
vi2=li10;
vi8=li7;
}
else if(li5==9){
vi1=li7;
vi2=li9;
vi3=li6;
vi4=li12;
vi5=li8;
vi6=li10;
vi7=li11;
vi8=li13;
}
parseA=((vi1*1000)+(vi2*100)+(vi3*10)+vi4) + ((li1*100)+(li3*10)+li5);
parseB=((vi5*1000)+(vi6*100)+(vi7*10)+vi8) + ((li2*10)+li4);
pass=1;
if((cutterNo-parseA)!=10 && (cutterNo-parseA)!=5 && (cutterNo-parseA)!=1){
pass=0;
}
if((cutterNo-parseB)!=10 && (cutterNo-parseB)!=5 && (cutterNo-parseB)!=1){
pass=0;
}
if((cutterNo-parseA) != (cutterNo-parseB)){
pass=0;
}
if(pass){
//name the user file
user_time=(cutterNo-parseA)*60;
// index the array
//int index = 0;
//copy the unique name into the new array
user_file[0] = li1;
user_file[1] = li2;
user_file[2] = li3;
user_file[3] = li4;
user_file[4] = li5;
// now add what ever other filename identification you like
user_file[5] = '.';
if(user_time==60){
user_file[6] = 'o';
user_file[7] = 'n';
user_file[8] = 'e';
}
else if(user_time==300){
user_file[6] = 'f';
user_file[7] = 'i';
user_file[8] = 'v';
}
else if(user_time==600){
user_file[6] = 't';
user_file[7] = 'e';
user_file[8] = 'n';
}
// and null terminate the string
user_file[9] = '\0';
screen=14;
}
else{
//itoa(parseA, buffer, 10);
//LCDdisplay(0,1,buffer);
//itoa(parseB, buffer, 10);
//LCDdisplay(0,2,buffer);
LCDdisplay(0,2,"Invalid Login ");
LCDdisplay(0,3,"Press Reset ");
}
}
else if(screen==14){
//see if the card is in the card holder
sd_card(1);
if(dpError==0){
//mount the card
//sd_card(2);
}
if(dpError==0){
//create a file and store initial values
//sd_card(3);
}
loop=0;
}
}//end of loop
state=2;
screen=0;
}