gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-mdb] 01/02: commented code


From: gnunet
Subject: [taler-taler-mdb] 01/02: commented code
Date: Tue, 10 Dec 2019 16:32:09 +0100

This is an automated email from the git hooks/post-receive script.

marco-boss pushed a commit to branch master
in repository taler-mdb.

commit 57de4d50cb0dfdc391386a7383a82dcfb47fbb38
Author: Boss Marco <address@hidden>
AuthorDate: Tue Dec 10 16:28:46 2019 +0100

    commented code
---
 src/main.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 65 insertions(+), 11 deletions(-)

diff --git a/src/main.c b/src/main.c
index e9ddb5a..29e9acc 100644
--- a/src/main.c
+++ b/src/main.c
@@ -24,7 +24,7 @@ along with
 * @author Dominik Hofer
 *
 * TODO:
-* - comment code (Boss)
+* - comment code mdb incl. doxygen struct members (hofer)
 */
 #include "config.h"
 #include <stdio.h>
@@ -552,8 +552,19 @@ static char *framebuffer_device_filename;
  */
 static char *framebuffer_backlight_filename;
 
+/**
+ * Global option '-i' to invert backlight on/off values
+ */
 static int backlight_invert;
+
+/**
+ * Standard backlight on value
+ */
 static char backlight_on = '1';
+
+/**
+ * Standard backlight off value
+ */
 static char backlight_off = '0';
 
 /**
@@ -689,12 +700,13 @@ show_qrcode (const char *uri)
     return;
   }
 
-  /* +8 for 4-pixels border */
+  /* set QR-code border */
   size = GNUNET_MIN (qrDisplay.var_info.xres,
                      qrDisplay.var_info.yres);
-  unsigned int nwidth = qrc->width + 8; /* 4 pixel border */
+  unsigned int nwidth = qrc->width + 8; /* +8 for 4 pixel border */
   xOff = 4 * size / nwidth;
   yOff = 4 * size / nwidth;
+  /* calculate offset to show the code centered */
   if (qrDisplay.var_info.xres < qrDisplay.var_info.yres)
     yOff += (qrDisplay.var_info.yres - qrDisplay.var_info.xres) / 2;
   else
@@ -708,6 +720,7 @@ show_qrcode (const char *uri)
       if ( (xoff >= (unsigned) qrc->width) ||
            (yoff >= (unsigned) qrc->width) )
         continue;
+      /* set the pixels in the display memory */
       qrDisplay.memory[(y + yOff) * qrDisplay.var_info.xres + (x + xOff)] =
         (0 == (qrc->data[off] & 1)) ? 0xFFFF : 0x0000;
     }
@@ -715,11 +728,11 @@ show_qrcode (const char *uri)
   QRcode_free (qrc);
   QRinput_free (qri);
 
+  /* turn on backlight if supported */
   if (0 < qrDisplay.backlightfd)
     (void) write (qrDisplay.backlightfd, &backlight_on, 1);
 }
 
-
 #endif
 
 
@@ -729,6 +742,7 @@ run_mdb_event_loop (void);
 
 /**
  * @brief Cleanup all the data when a order has succeeded or got cancelled
+ *
  * @param pa the payment activity to clean up
  */
 static void
@@ -873,13 +887,14 @@ shutdown_task (void *cls)
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
                   "failed to reset originial display state\n");
     }
-    /* close device */
+    /* close the device */
     close (qrDisplay.devicefd);
     qrDisplay.devicefd = -1;
     if (0 < qrDisplay.backlightfd)
       close (qrDisplay.backlightfd);
     qrDisplay.backlightfd = -1;
   }
+  /* free the allocated productes read from config file */
   if (NULL != products)
   {
     for (unsigned int i = 0; i < products_length; i++)
@@ -914,13 +929,16 @@ static void
 wallet_transmit_uri (void *cls)
 {
   struct PaymentActivity *pa = cls;
+  /* response array for APDU response status word */
   uint8_t response[] = { 0x00, 0x00 };
   size_t slen = strlen (pa->taler_pay_uri);
   uint8_t message[sizeof (put_data) + slen];
 
   pa->delay_task = NULL;
+  /* append the pay uri to the put data command */
   memcpy (message, put_data, sizeof (put_data));
   memcpy (&message[sizeof (put_data)], pa->taler_pay_uri, slen);
+  /* send the put data command via nfc */
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Sending 'PUT DATA' command for `%s' to wallet\n",
               pa->taler_pay_uri);
@@ -937,6 +955,7 @@ wallet_transmit_uri (void *cls)
                                          pa);
     return;
   }
+  /* check if the transmission succeeded */
   if (0 != memcmp (response,
                    APDU_SUCCESS,
                    sizeof (response)))
@@ -953,6 +972,10 @@ wallet_transmit_uri (void *cls)
               "'PUT DATA' command sent successfully via NFC\n");
   pa->wallet_has_uri = GNUNET_YES;
   /* FIXME: or just offer Internet service here? */
+
+  /* transmit the uri again later, there can be many external failures,
+     for example the taler wallet app was not opened and thus did not receive
+     the data */
   pa->delay_task = GNUNET_SCHEDULER_add_delayed (MAX_HTTP_RETRY_FREQ,
                                                  &wallet_transmit_uri,
                                                  pa);
@@ -960,7 +983,9 @@ wallet_transmit_uri (void *cls)
 
 
 /**
- * @brief Select the taler wallet app via NFC
+ * @brief Select the taler wallet app via NFC on the target selected with
+ * @e connect_target()
+ * (check if it is installed on the smartphone)
  *
  * @param cls closure
  */
@@ -968,13 +993,16 @@ static void
 wallet_select_aid (void *cls)
 {
   struct PaymentActivity *pa = cls;
+  /* response array for APDU response status word */
   uint8_t response[] = { 0x00, 0x00 };
   uint8_t message[sizeof(select_file) + sizeof(taler_aid)];
 
   pa->task = NULL;
+  /* append the taler wallet aid to the select file command */
   memcpy (message, select_file, sizeof (select_file));
   memcpy (&message[sizeof (select_file)], taler_aid, sizeof (taler_aid));
 
+  /* send the select file command via nfc */
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Trying to find Taler wallet on NFC\n");
   if (0 > nfc_initiator_transceive_bytes (pa->pnd,
@@ -990,6 +1018,7 @@ wallet_select_aid (void *cls)
                                          pa);
     return;
   }
+  /* check if the transmission succeeded */
   if (0 == memcmp (response,
                    APDU_SUCCESS,
                    sizeof (response)))
@@ -1000,6 +1029,7 @@ wallet_select_aid (void *cls)
                                                pa);
     return;
   }
+  /* if the transmission was not successful chack if the app is available at 
all */
   if (0 == memcmp (response,
                    APDU_NOT_FOUND,
                    sizeof (response)))
@@ -1010,10 +1040,12 @@ wallet_select_aid (void *cls)
                                          pa);
     return;
   }
+  /* If the upper cases did not match, there was an unknown APDU status 
returned */
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "AID selection failure, return code: %x%x, trying to find 
another NFC client\n",
               response[0],
               response[1]);
+  /* start the selection again */
   pa->task = GNUNET_SCHEDULER_add_delayed (NFC_FAILURE_RETRY_FREQ,
                                            &connect_target,
                                            pa);
@@ -1029,13 +1061,16 @@ static void
 connect_target (void *cls)
 {
   struct PaymentActivity *pa = cls;
+  /* nfc modulation used */
   const nfc_modulation nmMifare = {
     .nmt = NMT_ISO14443A,
     .nbr = NBR_212,
   };
 
   pa->task = NULL;
+  /* set the uid len to zero (maybe it is still set from earlier selections) */
   pa->nt.nti.nai.szUidLen = 0;
+  /* poll for a fitting nfc target (we use the shortest time possible to not 
block the scheduler) */
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Trying to find NFC client\n");
   if (0 > nfc_initiator_poll_target (pa->pnd,
@@ -1048,6 +1083,7 @@ connect_target (void *cls)
     GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                 "Failed to connect to NFC target\n");
   }
+  /* if the uid lenght are out of bound abort */
   else if ( (pa->nt.nti.nai.szUidLen > UID_LEN_UPPER) ||
             (pa->nt.nti.nai.szUidLen < UID_LEN_LOWER) )
   {
@@ -1056,12 +1092,15 @@ connect_target (void *cls)
   }
   else
   {
+    /* the target was successfully selected,
+       now we have to check if the taler wallet is installed on it */
     GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                 "Found NFC client\n");
     pa->task = GNUNET_SCHEDULER_add_now (&wallet_select_aid,
                                          pa);
     return;
   }
+  /* if no target was found try again */
   pa->task = GNUNET_SCHEDULER_add_delayed (NFC_FAILURE_RETRY_FREQ,
                                            &connect_target,
                                            pa);
@@ -1079,6 +1118,7 @@ open_nfc_reader (void *cls)
   struct PaymentActivity *pa = cls;
 
   pa->task = NULL;
+  /* open the nfc reader via libnfc's open */
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Trying to open NFC device\n");
   pa->pnd = nfc_open (context, NULL);
@@ -1091,6 +1131,7 @@ open_nfc_reader (void *cls)
                                              pa);
     return;
   }
+  /* initialize the reader as initiator */
   if (0 > nfc_initiator_init (pa->pnd))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -1105,6 +1146,7 @@ open_nfc_reader (void *cls)
               "NFC in operation %s / %s\n",
               nfc_device_get_name (pa->pnd),
               nfc_device_get_connstring (pa->pnd));
+  /* the nfc reader was opened successfully, now try to find a mobile device 
as a target */
   pa->task = GNUNET_SCHEDULER_add_now (&connect_target,
                                        pa);
 }
@@ -1319,6 +1361,7 @@ launch_payment (const struct Product *product)
   }
   pa = GNUNET_new (struct PaymentActivity);
   pa->amount = product->price;
+  /* put the order on the merchant's backend */
   pa->po = TALER_MERCHANT_order_put (ctx,
                                      backendBaseUrl,
                                      orderReq,
@@ -2051,7 +2094,7 @@ run_mdb_event_loop ()
 /**
  * @brief Read the products from the configuration file
  *
- * @param cls closure
+ * @param cls closure in this case the name of the configuration file to read 
from
  * @param section section of the config file to read from
  */
 static void
@@ -2061,10 +2104,12 @@ read_products (void *cls,
   struct Product tmpProduct;
   char *tmpKey;
 
+  /* if the current section is not a product skip it */
   if (0 != strncmp (section,
                     "product-",
                     strlen ("product-")))
     return;
+  /* the current section is a product, parse its specifications and store it 
in a temporary product */
   if (GNUNET_OK !=
       GNUNET_CONFIGURATION_get_value_string (cls,
                                              section,
@@ -2124,6 +2169,7 @@ read_products (void *cls,
     GNUNET_free (tmpProduct.description);
     return;
   }
+  /* append the temporary product to the existing products */
   GNUNET_array_append (products,
                        products_length,
                        tmpProduct);
@@ -2218,6 +2264,7 @@ run (void *cls,
   (void) args;
   (void) cfgfile;
 
+  /* parse the configuration file */
   if (GNUNET_OK !=
       GNUNET_CONFIGURATION_get_value_string (cfg,
                                              "taler",
@@ -2230,6 +2277,7 @@ run (void *cls,
     global_ret = EXIT_FAILURE;
     return;
   }
+  /* parse the devices, if no config entry is found, a standard is used */
   if (GNUNET_OK !=
       GNUNET_CONFIGURATION_get_value_filename (cfg,
                                                "taler-mdb",
@@ -2264,6 +2312,7 @@ run (void *cls,
     framebuffer_backlight_filename = GNUNET_strdup (
       "/sys/class/backlight/soc:backlight/brightness");
   }
+  /* parse the taler configurations */
   if (GNUNET_OK !=
       GNUNET_CONFIGURATION_get_value_string (cfg,
                                              "taler-mdb",
@@ -2290,6 +2339,7 @@ run (void *cls,
       global_ret = EXIT_FAILURE;
       return;
     }
+    /* concat the authorization e.g. Authorization: ApiKey sandbox */
     GNUNET_asprintf (&authorization,
                      "%s: %s",
                      MHD_HTTP_HEADER_AUTHORIZATION,
@@ -2320,6 +2370,7 @@ run (void *cls,
     global_ret = EXIT_FAILURE;
     return;
   }
+  /* parse the products */
   GNUNET_CONFIGURATION_iterate_sections (cfg,
                                          &read_products,
                                          (void *) cfg);
@@ -2402,20 +2453,20 @@ run (void *cls,
                               PROT_READ | PROT_WRITE, MAP_SHARED,
                               qrDisplay.devicefd,
                               0);
-
-    /* open backlight file to turn display backlight on and off */
-    if (0 > qrDisplay.devicefd)
+    if (0 > qrDisplay.memory)
     {
       GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
                            "mmap");
       return;
     }
 
+    /* set the screen to white */
     memset (qrDisplay.memory,
             0xFF,
             qrDisplay.var_info.xres * qrDisplay.var_info.yres
             * sizeof (uint16_t));
 
+    /* open backlight file to turn display backlight on and off */
     qrDisplay.backlightfd = open (
       framebuffer_backlight_filename, O_WRONLY);
     if (0 > qrDisplay.backlightfd)
@@ -2426,11 +2477,13 @@ run (void *cls,
     }
     else
     {
+      /* if '-i' flag was set, invert the on and off values */
       if (backlight_invert)
       {
         backlight_on = '0';
         backlight_off = '1';
       }
+      /* turn off the backlight */
       (void) write (qrDisplay.backlightfd, &backlight_off, 1);
     }
   }
@@ -2506,7 +2559,9 @@ main (int argc,
       char*const*argv)
 {
   struct termios tty_opts_backup, tty_opts_raw;
+  int have_tty;
   int ret;
+
   /* the available command line options */
   struct GNUNET_GETOPT_CommandLineOption options[] = {
     GNUNET_GETOPT_option_flag ('d',
@@ -2523,7 +2578,6 @@ main (int argc,
                                &backlight_invert),
     GNUNET_GETOPT_OPTION_END
   };
-  int have_tty;
 
   if (! disable_tty)
   {

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]