Преглед на файлове

changed naming convention of transport layer

stefan преди 3 години
родител
ревизия
afd0d44aac
променени са 5 файла, в които са добавени 62 реда и са изтрити 19 реда
  1. 1 1
      api/shellmatta.h
  2. 4 4
      src/shellmatta.c
  3. 12 7
      src/shellmatta_transport.c
  4. 7 6
      src/shellmatta_transport.h
  5. 38 1
      test/integrationtest/test_integration_transport.cpp

+ 1 - 1
api/shellmatta.h

@@ -224,7 +224,7 @@ typedef struct
  * @brief helper macro for the send function
  */
 #define SHELLMATTA_WRITE(data, length)  inst->transportLayer.active == true ?                                                                   \
-                                        shellmatta_write_transport((shellmatta_transport_layer_t*)&inst->transportLayer, (data), (length)) :    \
+                                        shellmatta_transport_write((shellmatta_transport_layer_t*)&inst->transportLayer, (data), (length)) :    \
                                         inst->write((data), (length))
 
 shellmatta_retCode_t shellmatta_doInit( shellmatta_instance_t   *inst,

+ 4 - 4
src/shellmatta.c

@@ -117,7 +117,7 @@ shellmatta_retCode_t shellmatta_doInit(
         *handle     = (shellmatta_handle_t)inst;
 
         /* init transport layer */
-        shellmatta_init_transport_inst(&inst->transportLayer, inst->write);
+        shellmatta_transport_init(&inst->transportLayer, inst->write);
 
         /** -# print the first prompt */
         utils_terminateInput(inst);
@@ -448,12 +448,12 @@ shellmatta_retCode_t shellmatta_processData(shellmatta_handle_t     handle,
                     break;
                 }
                 /* handling of transport layer fsm */
-                ret = shellmatta_handle_transport_fsm(&inst->transportLayer, data);
+                ret = shellmatta_transport_process(&inst->transportLayer, data, 0);
                 
                 /* crc error handling */
                 if (SHELLMATTA_ERROR == ret)
                 {
-                    shellmatta_reset_transport(&inst->transportLayer);
+                    shellmatta_transport_reset(&inst->transportLayer);
                     utils_writeEcho(inst, "crc error\r\n", 11);
                     utils_terminateInput(inst);
                     return SHELLMATTA_OK;
@@ -469,7 +469,7 @@ shellmatta_retCode_t shellmatta_processData(shellmatta_handle_t     handle,
                                            inst->transportLayer.payloadBuffer,
                                            inst->transportLayer.payloadLength);
 
-                    shellmatta_handle_transport_fsm(&inst->transportLayer, data);
+                    shellmatta_transport_process(&inst->transportLayer, data, 0);
                     return SHELLMATTA_OK;
                 }
             }

+ 12 - 7
src/shellmatta_transport.c

@@ -16,8 +16,8 @@
  * @param[in]       writeFct        function pointer to output function
  * @return          errorcode       #SHELLMATTA_OK
  */
-shellmatta_retCode_t shellmatta_init_transport_inst(shellmatta_transport_layer_t    *transportLayer,
-                                                    shellmatta_write_t              writeFct)
+shellmatta_retCode_t shellmatta_transport_init( shellmatta_transport_layer_t    *transportLayer,
+                                                shellmatta_write_t              writeFct)
 {
     memset(transportLayer, 0u, sizeof(shellmatta_transport_layer_t));
     transportLayer->originalWrite = writeFct;
@@ -30,7 +30,7 @@ shellmatta_retCode_t shellmatta_init_transport_inst(shellmatta_transport_layer_t
  * @param[in, out]  transportLayer  transport layer instance to work on
  * @return          errorcode       #SHELLMATTA_OK
  */
-shellmatta_retCode_t shellmatta_reset_transport(shellmatta_transport_layer_t *transportLayer)
+shellmatta_retCode_t shellmatta_transport_reset(shellmatta_transport_layer_t *transportLayer)
 {
     uint8_t h2s_sequenceCnt = transportLayer->h2s_sequenceCnt;
     uint8_t s2h_sequenceCnt = transportLayer->s2h_sequenceCnt;
@@ -49,11 +49,16 @@ shellmatta_retCode_t shellmatta_reset_transport(shellmatta_transport_layer_t *tr
  * @return          errorcode       #SHELLMATTA_OK\n
  *                                  #SHELLMATTA_ERROR   in case of crc error
  */
-shellmatta_retCode_t shellmatta_handle_transport_fsm(shellmatta_transport_layer_t *transportLayer,
-                                                     char *data)
+shellmatta_retCode_t shellmatta_transport_process(shellmatta_transport_layer_t   *transportLayer,
+                                                  char                           *data,
+                                                  uint32_t                       *length)
 {
     shellmatta_retCode_t ret = SHELLMATTA_OK;
 
+
+    //TODO
+    (void)length;
+
     switch (transportLayer->state)
     {
         /* look for start of header */
@@ -177,7 +182,7 @@ shellmatta_retCode_t shellmatta_handle_transport_fsm(shellmatta_transport_layer_
                     /* change packet type to response */
                     transportLayer->packetType = PACKET_SEQ_CNT_RESPOND;
                     /* send out packet with no payload */
-                    shellmatta_write_transport(transportLayer, "", 0u);
+                    shellmatta_transport_write(transportLayer, "", 0u);
                     break;
 
                 case PACKET_SEQ_CNT_RESPOND:
@@ -256,7 +261,7 @@ shellmatta_retCode_t shellmatta_handle_transport_fsm(shellmatta_transport_layer_
  * @param[in]       data            pointer to input data to process
  * @return          errorcode       #SHELLMATTA_OK
  */
-shellmatta_retCode_t shellmatta_write_transport(shellmatta_transport_layer_t *transportLayer,
+shellmatta_retCode_t shellmatta_transport_write(shellmatta_transport_layer_t *transportLayer,
                                                 const char* data,
                                                 uint32_t length)
 {

+ 7 - 6
src/shellmatta_transport.h

@@ -64,15 +64,16 @@
 #define SHELLMATTA_SHIFT_BY_24              ((uint8_t)(24))
 
 
-shellmatta_retCode_t shellmatta_reset_transport(shellmatta_transport_layer_t *transportLayer);
+shellmatta_retCode_t shellmatta_transport_reset(shellmatta_transport_layer_t *transportLayer);
 
-shellmatta_retCode_t shellmatta_init_transport_inst(shellmatta_transport_layer_t    *transportLayer,
-                                                    shellmatta_write_t              writeFct);
+shellmatta_retCode_t shellmatta_transport_init( shellmatta_transport_layer_t    *transportLayer,
+                                                shellmatta_write_t              writeFct);
 
-shellmatta_retCode_t shellmatta_handle_transport_fsm(shellmatta_transport_layer_t *transportLayer,
-                                                     char *data);
+shellmatta_retCode_t shellmatta_transport_process(shellmatta_transport_layer_t   *transportLayer,
+                                                  char                           *data,
+                                                  uint32_t                       *length);
 
-shellmatta_retCode_t shellmatta_write_transport(shellmatta_transport_layer_t *transportLayer,
+shellmatta_retCode_t shellmatta_transport_write(shellmatta_transport_layer_t *transportLayer,
                                                 const char* data,
                                                 uint32_t length);
 

+ 38 - 1
test/integrationtest/test_integration_transport.cpp

@@ -50,7 +50,15 @@ static shellmatta_retCode_t doSomething(shellmatta_handle_t handle, const char *
     shellmatta_printf(handle, "%s - length: %u", arguments, length);
     return SHELLMATTA_OK;
 }
-shellmatta_cmd_t doSomethingCmd = {(char*)"doSomething", (char*)"do", (char*)"Function does something", (char*)"use me, please", doSomething, NULL};
+shellmatta_cmd_t doSomethingCmd =
+{
+    (char*)"doSomething",
+    (char*)"do",
+    (char*)"Function does something",
+    (char*)"use me, please",
+    doSomething,
+    NULL
+};
 
 SCENARIO("Integration test of Transport layer", "[integration, transport]")
 {
@@ -117,6 +125,35 @@ SCENARIO("Integration test of Transport layer", "[integration, transport]")
             }
         }
 
+
+        WHEN("manual mode is used after transport layer mode")
+        {
+            /* check with valid payload - disable echo to reduce cluttering */
+            shellmatta_configure(handle, SHELLMATTA_MODE_INSERT, false, '\r');
+            shellmatta_processData(handle, (char*)"\x01\x01\x00\x16\x00\x00\x00\x00"
+                                                "doSomething argument\r\n"
+                                                "\x7b\x49\xfa\x72", 34u);
+            shellmatta_processData(handle, (char*)"doSomething argument\r\n", 22u);
+            THEN("The shellmatta responds to the command")
+            {
+                char *dummyData =   (char*)"\x01\x01\x00\x21\x00\x00\x01\x01"
+                                           "doSomething argument - length: 20"
+                                            "\xac\xf5\xe9\x4f"
+                                            "\x01\x01\x00\x02\x00\x00\x01\x02"
+                                            "\r\n"
+                                            "\x62\xef\x22\x7a"
+                                            "\x01\x01\x00\x0C\x00\x00\x01\x03"
+                                            "shellmatta->"
+                                            "\xd2\x0b\x8f\x3e"
+                                            "doSomething argument - length: 20\r\n"
+                                            "shellmatta->";
+
+                CHECK( write_length == 130);
+                REQUIRE( memcmp(write_data, dummyData, 130) == 0);
+
+            }
+        }
+
         WHEN("Sequence counter is requested")
         {
             /* request sequence counter */