taler-mdb

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

commit db45e5f9ba282383f050e07285ef412620ec817b
parent 66c6ba7873cad11cbf4c3456cc405f7dcceb3551
Author: Dominik Hofer <dominik.hofer@bfh.ch>
Date:   Mon, 23 Dec 2019 14:08:43 +0100

Added revalue limit cmd)

Diffstat:
Msrc/main.c | 66+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 59 insertions(+), 7 deletions(-)

diff --git a/src/main.c b/src/main.c @@ -155,6 +155,8 @@ along with * VMC Revalue Request */ #define VMC_REVALUE 0x15 +#define VMC_REVALUE_REQUEST 0x00 +#define VMC_REVALUE_LIMIT_REQUEST 0x01 /** * Commands for the reader (our device). */ @@ -199,8 +201,11 @@ along with #define READER_VEND_AMOUNT "0001" #define READER_VEND_DENIED "06" -/* Approve Revalue */ -#define READER_APPROVE_REVALUE "0D" +/* Revalue */ +#define READER_REVALUE_APPROVED "0D" +#define READER_REVALUE_APPROVED "0D" +#define READER_REVALUE_LIMIT "0F" +#define READER_REVALUE_LIMIT_AMOUNT "FFFF" /* Cancelled Command */ #define READER_CANCELLED "08" @@ -208,7 +213,6 @@ along with /* Unused reader commands */ #define READER_DISPLAY_REQUEST "02" #define READER_SESSION_CANCEL_REQUEST "04" -#define READER_REVALUE_APPROVED "0D" #define READER_REVALUE_DENIED "0E" /** @@ -562,6 +566,11 @@ static struct MdbCommand readerCancelled; static struct MdbCommand revalueApproved; /** + * Send Revalue Limit Amount + */ +static struct MdbCommand revalueAmount; + +/** * Terminate session. */ static struct MdbCommand endSession; @@ -1922,10 +1931,49 @@ handle_command (const char *hex, break; } case VMC_REVALUE: - GNUNET_log (GNUNET_ERROR_TYPE_INFO, + { + unsigned int subcmd; + + if (4 > hex_len) + { + GNUNET_break_op (0); + return; + } + if (1 != sscanf (&hex[2], + "%2X", + &subcmd)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Received non-HEX input `%.*s'\n", + (int) hex_len - 2, + &hex[2]); + GNUNET_break_op (0); + return; + } + switch (subcmd) + { + case VMC_REVALUE_REQUEST: + { + GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Received request for revalue via MDB\n"); - mdb.cmd = &revalueApproved; - break; + mdb.cmd = &revalueApproved; + break; + } + case VMC_REVALUE_LIMIT_REQUEST: + { + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Received request for revalue limit amount via MDB\n"); + mdb.cmd = &revalueAmount; + break; + } + default: + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Unknown MDB sub-command %X of command %X\n", + subcmd, + cmd); + break; + break; + } case VMC_CONF: GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Received request for configuration via MDB\n"); @@ -2680,9 +2728,13 @@ main (int argc, READER_END_SESSION, NULL); revalueApproved = setup_mdb_cmd ("Reader Approve Revalue", - READER_APPROVE_REVALUE, + READER_REVALUE_APPROVED, NULL); + revalueAmount = setup_mdb_cmd ("Send Revalue Limit Amount", + READER_REVALUE_LIMIT, + READER_REVALUE_LIMIT_AMOUNT); + ret = GNUNET_PROGRAM_run (argc, argv, "taler-mdb",