Revision 271
| trunk/cardbox/cardreader.h (revision 271) | ||
|---|---|---|
| 25 | 25 |
extern volatile uint16_t cr_buf_idx; |
| 26 | 26 |
|
| 27 | 27 |
void card_reader_setup(void); |
| 28 |
void parse_card(void); |
|
| 28 |
int8_t parse_card(void); |
|
| 29 | 29 |
#endif |
| trunk/cardbox/main.c (revision 271) | ||
|---|---|---|
| 175 | 175 |
read_card = 1; |
| 176 | 176 |
if (cr_flag != CR_NONE) {
|
| 177 | 177 |
read_card = 0; |
| 178 |
parse_card(); |
|
| 178 |
if (parse_card() < 0) {
|
|
| 179 |
rs485_send_byte('F');
|
|
| 180 |
} |
|
| 179 | 181 |
cr_flag = CR_NONE; |
| 180 | 182 |
} |
| 181 | 183 |
} |
| trunk/cardbox/cardreader.c (revision 271) | ||
|---|---|---|
| 77 | 77 |
cr_buf_idx++; |
| 78 | 78 |
} |
| 79 | 79 |
} |
| 80 |
void parse_card(void) {
|
|
| 80 |
|
|
| 81 |
int8_t parse_card(void) {
|
|
| 81 | 82 |
int32_t i = cr_buf_idx - 1; |
| 82 | 83 |
uint8_t start_sentinal = 0; |
| 83 | 84 |
uint8_t byte_idx = 0; |
| ... | ... | |
| 110 | 111 |
if (byte_idx == CR_MAX_IDX) {
|
| 111 | 112 |
|
| 112 | 113 |
if (!(cr_buf[i]) != (parity % 2)) {
|
| 113 |
rs485_send_byte('F');
|
|
| 114 |
return -1; |
|
| 114 | 115 |
} |
| 115 | 116 |
|
| 116 | 117 |
rs485_send_byte(cr_dict[byte]); |
| 117 | 118 |
|
| 118 | 119 |
// Stop at the stop sentinal |
| 119 | 120 |
if (cr_dict[byte] == CR_ES) {
|
| 120 |
return; |
|
| 121 |
return 0; |
|
| 121 | 122 |
} |
| 122 | 123 |
|
| 123 | 124 |
byte_idx = 0; |
| ... | ... | |
| 134 | 135 |
// Goto next bit in cr_buf |
| 135 | 136 |
i--; |
| 136 | 137 |
} |
| 138 |
|
|
| 139 |
return -1; |
|
| 137 | 140 |
} |
Also available in: Unified diff