cleaning
authorLaurent Mazet <mazet@softndesign.org>
Sat, 29 Mar 2025 16:05:24 +0000 (17:05 +0100)
committerLaurent Mazet <mazet@softndesign.org>
Sat, 29 Mar 2025 16:05:24 +0000 (17:05 +0100)
morep.h
morep_valid.c
verbose.h

diff --git a/morep.h b/morep.h
index 247e9f0908e043f4be7345e85ac875073b633d3e..36d600e37431a06900b850a5aa3e77ca4a3eb258 100644 (file)
--- a/morep.h
+++ b/morep.h
@@ -100,4 +100,4 @@ __END_DECLS
 
 #endif /* __MOREP_H__ */
 
-/* vi:set tabstop=4 expandtab shiftwidth=4: this line set vi mode */
+/* vim: set ts=4 sw=4 et: */
index cc7008b592336a58e9bff10d4d3913aadd39b3eb..96154260329a5a75e2732d779d3f327e33ef9dd2 100644 (file)
@@ -84,15 +84,15 @@ char *read_stream (FILE *sd, int *plen)
 uint8_t *parse_payload (char *value, int *plen)
 {
     int slen = strlen (value);
-    uint8_t *payload = NULL;
+    uint8_t *buffer = NULL;
     int length = 0;
 
-    /* string payload: "..." */
+    /* string payload: "..." (no space, tab or =) */
     if ((*value == '"') && (slen > 1)) {
         if (value[slen - 1] == '"') {
             length = slen - 2;
-            payload = (uint8_t *) calloc (length + 1, 1);
-            memcpy (payload, value + 1, length);
+            buffer = (uint8_t *) calloc (length + 1, 1);
+            memcpy (buffer, value + 1, length);
         } else {
             VERBOSE (morep, ERROR, PRINTF ("incomplet string '%s'\n", value));
         }
@@ -102,28 +102,28 @@ uint8_t *parse_payload (char *value, int *plen)
     else if (*value == '@') {
         FILE *fid = fopen (value + 1, "r");
         if (fid != NULL) {
-            payload = (uint8_t *) read_stream (fid, &length);
+            buffer = (uint8_t *) read_stream (fid, &length);
             fclose (fid);
         } else {
             VERBOSE (morep, ERROR, PRINTF ("can't open file '%s'\n", value));
         }
     }
 
-    /* hexa string: xxxxxx */
+    /* hexa payload: xxxxxx [0-9a-fA-F] */
     else if (slen % 2 == 0) {
         length = slen / 2;
-        payload = (uint8_t *) calloc (length, 1);
+        buffer = (uint8_t *) calloc (length, 1);
         int i;
         for (i = 0; i < length; i++) {
             char digit[3] = {0};
             char *ptr = NULL;
             digit[0] = value[2 * i];
             digit[1] = value[2 * i + 1];
-            payload[i] = strtol (digit, &ptr, 16);
+            buffer[i] = strtol (digit, &ptr, 16);
             if (*ptr != '\0') {
-                VERBOSE (morep, ERROR, PRINTF ("unrecognize hexa string (%d) '%s'\n", 2 * i, value));
-                free (payload);
-                payload = NULL;
+                VERBOSE (morep, ERROR, PRINTF ("unrecognize hexa-string (%d) '%s'\n", 2 * i, value));
+                free (buffer);
+                buffer = NULL;
                 break;
             }
         }
@@ -131,26 +131,29 @@ uint8_t *parse_payload (char *value, int *plen)
 
     /* unrecognize format */
     else {
-        VERBOSE (morep, WARNING, PRINTF ("can't parse payload '%s'\n", value));
+        VERBOSE (morep, WARNING, PRINTF ("can't parse buffer '%s'\n", value));
     }
 
     if (plen) {
         *plen = length;
     }
 
-    return payload;
+    return buffer;
 }
 
 
-int parse_line (char *line, uint8_t *msgtype, uint8_t **payload)
+uint8_t *parse_line (char *line, uint8_t *msgtype, int *plen)
 {
-    int rc = -1;
+    uint8_t *payload = NULL;
+    int length = -1;
     *msgtype = -1;
 
+    /* trim line */
     while ((*line == ' ') || (*line == '\t')) {
         line++;
     }
 
+    /* segment line as var=val */
     char *delim = " =\t";
     char *str = strdup (line);
     char *save_ptr;
@@ -162,22 +165,38 @@ int parse_line (char *line, uint8_t *msgtype, uint8_t **payload)
         char *val = strtok_r (NULL, delim, &save_ptr);
         if (!var) break;
 
-        if (0) {
-        } else if (strcmp ("MSG", var) == 0) {
+        /* switch on string */
+        if (0) { }
+
+        /* case message type */
+        else if (strcmp ("MSG", var) == 0) {
             *msgtype = strtol (val, NULL, 0);
-            if (rc < 0 ) {
-                rc = 0;
+            if (length < 0 ) {
+                length = 0;
             }
-        } else if (strcmp ("PAYLOAD", var) == 0) {
-            *payload = parse_payload (val, &rc);
-        } else {
+        }
+
+        /* case payload */
+        else if (strcmp ("PAYLOAD", var) == 0) {
+            payload = parse_payload (val, &length);
+        }
+
+        /* default */
+        else {
             VERBOSE (morep, WARNING, PRINTF ("unknown word '%s'\n", var));
             break;
         }
+        /* end switch */
+
     }
+    /* end of segmentation */
     free (str);
 
-    return rc;
+    if (plen) {
+        *plen = length;
+    }
+
+    return payload;
 }
 
 typedef struct {
@@ -350,8 +369,8 @@ int main (int argc, char **argv)
 
         /* get values */
         uint8_t msgtype = 0;
-        uint8_t *payload = NULL;
-        int len = parse_line (pt, &msgtype, &payload);
+        int len = 0;
+        uint8_t *payload = parse_line (pt, &msgtype, &len);
         if (len < 0) {
             VERBOSE (morep, WARNING, PRINTF ("can't parse line '%s'\n", line));
             continue;
@@ -366,16 +385,20 @@ int main (int argc, char **argv)
             uint8_t rxpayload[1496 * 16 - 1] = {0};
             int rxlen = 0;
             int seqnum = MOREP_Receive (comm->morep, &rxmsgtype, rxpayload, &rxlen);
+
+            /* check msg type */
             if (rxmsgtype != msgtype) {
-                VERBOSE (morep, WARNING, PRINTF ("R%04x seqnum=%d: expected msgtype %04x\n", rxmsgtype, seqnum, msgtype));
-            } else {
+                VERBOSE (morep, WARNING, PRINTF ("R%04x seqnum=%d msg=%d: expected msgtype %04x\n", rxmsgtype, seqnum, rxmsgtype, msgtype));
+            }
+            /* check payload */
+            else {
                 int ok = (rxlen == len);
                 i = -1;
                 for (i = 0; ok && (i < rxlen); i++) {
                     ok = (rxpayload[i] == payload[i]);
                 }
                 if (!ok) {
-                    VERBOSE (morep, WARNING, PRINTF ("R%04x seqnum=%d: payload diff at %d/%d\n", rxmsgtype, seqnum, i, rxlen));
+                    VERBOSE (morep, WARNING, PRINTF ("R%04x seqnum=%d msg=%d: payloads differed at %d/%d\n", rxmsgtype, seqnum, rxmsgtype, i, rxlen));
                 } else {
                     VERBOSE (morep, INFO, PRINTF ("R%04x seqnum=%d msg=%d length=%d\n", rxmsgtype, seqnum, rxmsgtype, rxlen));
                 }
index 4bdb4d2df03f6a03810e48fcfa88e30b66c3c084..c33ec51f103b847f956a0c973a6c4b91e3ef66e2 100644 (file)
--- a/verbose.h
+++ b/verbose.h
@@ -120,3 +120,5 @@ __BEGIN_DECLS
 __END_DECLS
 
 #endif /* __VERBOSE_H__ */
+
+/* vim: set ts=4 sw=4 et: */