taler-mdb

GNU Taler Extensions and Integrations
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/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,