commit dfbf7d7788be411a0bd158f237c6f3f82af1f39f
parent c6d1cce6b5b06d6cbe470963655f3282c3399b16
Author: Dominik Hofer <dominik.hofer@bfh.ch>
Date: Sat, 28 Dec 2019 17:44:40 +0100
Added message for display of VM
Diffstat:
| M | src/main.c | | | 37 | +++++++++++++++++++++++++++++++++---- |
1 file changed, 33 insertions(+), 4 deletions(-)
diff --git a/src/main.c b/src/main.c
@@ -216,8 +216,13 @@ along with
/* Cancelled Command */
#define READER_CANCELLED "08"
-/* Unused reader commands */
+/* Display Request for Sold Out product */
#define READER_DISPLAY_REQUEST "02"
+#define READER_DISPLAY_REQUEST_TIME "32"
+#define READER_DISPLAY_SOLD_OUT "202020202020202020204175737665726b617566742020202020202020202020"
+#define READER_DISPLAY_INTERNAL_ERROR "202020496e7465726e616c204572726f72202d2054727920416761696e202020i"
+
+/* Unused reader commands */
#define READER_SESSION_CANCEL_REQUEST "04"
#define READER_REVALUE_DENIED "0E"
@@ -581,6 +586,16 @@ static struct MdbCommand revalueAmount;
* Send NACK
*/
static struct MdbCommand readerNACK;
+
+/**
+ * Display Request for Sold Out
+ */
+static struct MdbCommand readerDisplaySoldOut;
+
+/**
+ * Display Request for Error Message
+ */
+static struct MdbCommand readerDisplayInternalError;
/**
* Terminate session.
*/
@@ -1647,7 +1662,7 @@ read_keyboard_command (void *cls)
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"Product %s sold out, denying vend\n",
products[i].description);
- mdb.cmd = &denyVend;
+ mdb.cmd = &readerDisplaySoldOut;
run_mdb_event_loop ();
start_read_keyboard ();
return;
@@ -1866,6 +1881,11 @@ handle_ack ()
mdb.session_running = GNUNET_NO;
mdb.cmd = &endSession;
}
+ if (&readerDisplaySoldOut == mdb.last_cmd)
+ mdb.cmd = &denyVend;
+ if (&readerDisplayInternalError == mdb.last_cmd)
+ mdb.cmd = &denyVend;
+
mdb.last_cmd = NULL;
/* Cause the write-task to be re-scheduled now */
if (NULL != mdb.wtask)
@@ -1936,7 +1956,7 @@ handle_command (const char *hex,
}
if ( ((uint8_t) (chkSum & 0xFF)) != tmp )
{
- mdb.cmd = &denyVend;
+ mdb.cmd = &readerDisplayInternalError;
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"Received command with wrong checksum `%.*s'\n",
(int) hex_len,
@@ -2007,7 +2027,7 @@ handle_command (const char *hex,
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
"Product %s sold out, denying vend\n",
products[i].description);
- mdb.cmd = &denyVend;
+ mdb.cmd = &readerDisplaySoldOut;
return;
}
payment_activity = launch_payment (&products[i]);
@@ -2949,6 +2969,15 @@ main (int argc,
READER_NACK,
NULL);
+ readerDisplaySoldOut = setup_mdb_cmd ("Display Sold Out",
+ READER_DISPLAY_REQUEST,
+ READER_DISPLAY_REQUEST_TIME
+ READER_DISPLAY_SOLD_OUT);
+
+ readerDisplayInternalError = setup_mdb_cmd ("Display Communication Error",
+ READER_DISPLAY_REQUEST,
+ READER_DISPLAY_REQUEST_TIME
+ READER_DISPLAY_INTERNAL_ERROR);
ret = GNUNET_PROGRAM_run (argc,
argv,