X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=ROM2%2Fcomm.h;h=c203708ab5cd9d226cc52259f2c7bda86febda05;hb=27fb8a023fa0572ef4171624781460bc59537d49;hp=69f8d004e60faef59b04e55d2dca1f07d81b9f5d;hpb=2e7a8beb908896930042bc0564fbd16f3e0b0b62;p=uccvend-snackrom.git diff --git a/ROM2/comm.h b/ROM2/comm.h index 69f8d00..c203708 100644 --- a/ROM2/comm.h +++ b/ROM2/comm.h @@ -10,8 +10,11 @@ * * Messages Sent: * KX - keypad press where X is (ascii 0..9 or R) - * CXXXXX - coin balance, XXXXX is number of cents. + * CYXXXXX - coin balance, XXXXX is number of cents. Y is 0 if we have change, + * 1 otherwise * MXYY - dispense ack/nack. X is what happened (0..MOTOR_*_FAIL), YY is the motor + * DX - door open/close event where X is 1 for open, 0 for closed. + * PONG - response to a ping * * Messages Received: * VXX - vend a slot XX @@ -20,10 +23,11 @@ * U - query current coin balance. - replies with CXXXXX * GXXXXX - give change, XXXXX is the amount of the cost of the item hence change * is the current value in the coin mech - XXXXX + * PING - ping. responds with PONG * */ -#define TX_BUFFER_LEN 6 /* maximum 13 due to the way tx_int works with the FIFO */ +#define TX_BUFFER_LEN 8 /* maximum 12 due to the way tx_int works with the FIFO */ extern char tx_buffer[TX_BUFFER_LEN+2]; /* \n + null terminated */ #define RX_BUFFER_LEN 11 extern volatile char rx_buffer[RX_BUFFER_LEN+1]; /* null terminated */ @@ -42,8 +46,13 @@ extern volatile u8 rx_queue_state; */ extern volatile u8 tx_queue_state; +extern inline void wait_for_tx_free() { while (tx_queue_state & 0x01); } + void comm_init(); void msg_clr(); +void send_packet(); +void send_ack(); +void send_nack(); /*************************************/ /*** 16550 UART specific #defines ***/