usapack public

Dependents:   optWingforHAPS_Eigen hexaTest_Eigen

Revision:
1:7d6e751f5986
Parent:
0:8adbff0ff843
Child:
3:526f824b50ef
--- a/UsaPack.hpp	Fri Apr 23 18:53:23 2021 +0000
+++ b/UsaPack.hpp	Sat Apr 24 04:18:05 2021 +0000
@@ -17,11 +17,12 @@
     void* package_object[package_types];
     
     void Receive();
+    void Decode();
     
 public:
     UsaPack(PinName tx, PinName rx, int baud);
-    static void CobsEncode(uint8_t data[], int length, uint8_t send_data[]);
-    static void CobsDecode(uint8_t receive_data[], int length, uint8_t data[]);
+    static void CobsEncode(char data[], int length, char send_data[]);
+    static void CobsDecode(char receive_data[], int length, char data[]);
     
     template <typename T>
     void Subscribe(int address, T* receive_data)
@@ -33,7 +34,7 @@
     }
     
     template <typename T>
-    void UsaPack::Send(int address, T  send_data)
+    void UsaPack::Send(int address, T*  send_data)
     {
         union _package
         {
@@ -42,15 +43,15 @@
                 int _address;
                 T raw_data;
             } address_package;
-            uint8_t byte_data[sizeof(T)];
+            char byte_data[sizeof(address_package)];
         };
-        uint8_t send_cobs_data[sizeof(T)+2];
+        char send_cobs_data[sizeof(_package)+2];
         
         _package package;
         package.address_package._address = address;
-        package.address_package.raw_data = send_data;
-        CobsEncode(package.byte_data, (int)sizeof(T), send_cobs_data);
-        for (int i = 0; i < sizeof(T)+2; i++)
+        package.address_package.raw_data = *send_data;
+        CobsEncode(package.byte_data, (int)sizeof(_package), send_cobs_data);
+        for (int i = 0; i < sizeof(_package)+2; i++)
         {
             serial.putc(send_cobs_data[i]);
         }