*
* 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
* 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 */
*/
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 ***/