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:
| M | src/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",