return success of save_code
This commit is contained in:
parent
2ef68f1a1c
commit
6e68b14cc9
|
@ -186,8 +186,13 @@ void write_code(uint16_t address)
|
|||
}
|
||||
|
||||
/* look in the memory for the code (global variable)
|
||||
* if not present, write it a the next free memory space */
|
||||
void save_code()
|
||||
* if not present, write it a the next free memory space
|
||||
* return 0 if the code is already in EEPROM
|
||||
* return 1 if the code is new and saved
|
||||
* return 2 if error occured
|
||||
* return 3 if no space in memory
|
||||
*/
|
||||
uint8_t save_code(void)
|
||||
{
|
||||
uint16_t address;
|
||||
uint8_t stored[3];
|
||||
|
@ -195,21 +200,21 @@ void save_code()
|
|||
send_start();
|
||||
if (send_byte(0xa0)) { /* write address to eeprom at 0xA0/0x50 */
|
||||
send_stop();
|
||||
return;
|
||||
return 2;
|
||||
}
|
||||
if (send_byte(0x00)) { /* go to address 0x0000 */
|
||||
send_stop();
|
||||
return;
|
||||
return 2;
|
||||
}
|
||||
if (send_byte(0x00)) { /* go to address 0x0000 */
|
||||
send_stop();
|
||||
return;
|
||||
return 2;
|
||||
}
|
||||
/* start reading */
|
||||
send_start();
|
||||
if (send_byte(0xa1)) { /* read eeprom at 0xA0/0x50 */
|
||||
send_stop();
|
||||
return;
|
||||
return 2;
|
||||
}
|
||||
/* go through memory */
|
||||
for (address=0; address<0x7FFF-2; address+=3) {
|
||||
|
@ -221,13 +226,14 @@ void save_code()
|
|||
read_byte(0); /* send a NACK to stop reading */
|
||||
send_stop(); /* finish transaction */
|
||||
write_code(address); /* write code at this space */
|
||||
return;
|
||||
return 1;
|
||||
} else if (stored[0]==code[0] && stored[1]==code[1] && stored[2]==code[2]) { /* code already stored */
|
||||
read_byte(0); /* send a NACK to stop reading */
|
||||
send_stop(); /* finish transaction */
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 3;
|
||||
}
|
||||
|
||||
void clear_memory(void)
|
||||
|
@ -254,9 +260,7 @@ void clear_memory(void)
|
|||
send_byte(0x00); /* clear byte */
|
||||
if ((address%0x40)==0x3f) { /* end of page */
|
||||
send_stop(); /* finish transaction */
|
||||
for (wait=0; wait<1024; wait++) { /* wait for eeprom to be writen */
|
||||
wait;
|
||||
}
|
||||
for (wait=0; wait<1024; wait++); /* wait for eeprom to be writen */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -300,6 +304,7 @@ void main (void)
|
|||
uint8_t rx = 0; /* are we receiving a pulse */
|
||||
uint8_t bit = 0; /* the current received bit */
|
||||
uint8_t time = 0; /* time since previous bitframe start, in 0.256ms steps */
|
||||
uint16_t new = 0; /* is the code new */
|
||||
|
||||
init(); /* configure micro-controller */
|
||||
|
||||
|
@ -335,7 +340,7 @@ void main (void)
|
|||
}
|
||||
if (bit==24) { /* received all 24 bits */
|
||||
led_on();
|
||||
save_code();
|
||||
save_code(); /* save code in external EEPROM */
|
||||
led_off();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue