I messed up the merge, so pushing it over to another repo so I don't lose it. Will tidy up and remove later

Dependencies:   BufferedSerial FatFileSystemCpp mbed

Files at this revision

API Documentation at this revision

Comitter:
JamieB
Date:
Thu Feb 10 10:25:10 2022 +0000
Parent:
72:da2f1df6a50d
Child:
74:a1bf25282cb1
Commit message:
Changed FreeD UDP port to be configurable between FreeD or VIPS output

Changed in this revision

LTCApp.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/LTCApp.h	Thu Feb 10 09:24:29 2022 +0000
+++ b/LTCApp.h	Thu Feb 10 10:25:10 2022 +0000
@@ -32,6 +32,7 @@
     int FIZmode;
     int SerialOutMode;
     int FreeDPort;
+    int DataOutPort;
     int VipsUDPPort;
     int SettingsPort;
     char IPAddress[32];
--- a/main.cpp	Thu Feb 10 09:24:29 2022 +0000
+++ b/main.cpp	Thu Feb 10 10:25:10 2022 +0000
@@ -513,12 +513,12 @@
     if ((UserSettings.SerialOutMode==mode_FreeD) || UserSettings.FreeDPort)
         createFreeDPacket(posPtr);
 
-    if ((UserSettings.SerialOutMode==mode_VIPS) || UserSettings.VipsUDPPort)
+    if ((UserSettings.SerialOutMode==mode_VIPS) || UserSettings.VipsUDPPort || (UserSettings.DataOutPort && !UserSettings.FreeDPort))
         createVIPSPacket(posPtr);
 
 
 // Network is faster so send that first.
-    if (UserSettings.FreeDPort || UserSettings.VipsUDPPort) {
+    if (UserSettings.DataOutPort || UserSettings.VipsUDPPort) {
         if (UserSettings.UDPTxDelayMS > 0) {
             UDPOutputDelayTimer.attach_us(&UDP_Tx_Now,UserSettings.UDPTxDelayMS*1000);
         } else
@@ -645,6 +645,7 @@
     UserSettings.FIZmode = formatPreston;
     UserSettings.SerialOutMode = mode_VIPS;
     UserSettings.FreeDPort = 0;
+    UserSettings.DataOutPort = 0;
     UserSettings.VipsUDPPort = 0;
     UserSettings.SettingsPort = 0;
     UserSettings.IPAddress[0] = 0;
@@ -706,6 +707,15 @@
                 if (sscanf(lineBuffer,"FreeD_Port=%d",&valueIn) == 1) {
                     pc.printf("Got FreeD_Port value from file of %d\r\n",valueIn);
                     UserSettings.FreeDPort = valueIn;
+                    UserSettings.DataOutPort = valueIn;
+                }
+                if (sscanf(lineBuffer,"FreeD_Mode=%d",&valueIn) == 1) {
+                    pc.printf("Got FreeD_Mode value from file of %d\r\n",valueIn);
+                    UserSettings.FreeDPort = valueIn;
+                }
+                if (sscanf(lineBuffer,"DataOut_Port=%d",&valueIn) == 1) {
+                    pc.printf("Got DataOut_Port value from file of %d\r\n",valueIn);
+                    UserSettings.DataOutPort = valueIn;
                 }
                 if (sscanf(lineBuffer,"VIPS_UDP_Port=%d",&valueIn) == 1) {
                     pc.printf("Got VIPS_Port value from file of %d\r\n",valueIn);
@@ -923,8 +933,8 @@
 {
 
     Thread* ListenTask=NULL;
-    UDPSocket* FreeDSocket = NULL;
-    Endpoint FreeDTarget;
+    UDPSocket* PrimaryDataSocket = NULL;
+    Endpoint PrimaryDataTarget;
 
     UDPSocket* VIPSSocket = NULL;
     Endpoint VIPSTarget;
@@ -932,7 +942,7 @@
     UserSettings_t *settingsPtr = (UserSettings_t *) settings;
 
     pc.puts("Ethernet task startup\r\n");
-    if (!settingsPtr->FreeDPort && !settingsPtr->VipsUDPPort && !settingsPtr->SettingsPort) {
+    if (!settingsPtr->DataOutPort && !settingsPtr->VipsUDPPort && !settingsPtr->SettingsPort) {
         pc.puts("No ports set. Ethernet task exiting\r\n");
         return;
     }
@@ -975,15 +985,15 @@
             pc.puts("Done\r\n");
             Thread::wait(100);
         }
-        if (FreeDSocket)
-            delete FreeDSocket;
-        if (UserSettings.FreeDPort) {
-            pc.puts("Starting FreeD socket\r\n");
+        if (PrimaryDataSocket)
+            delete PrimaryDataSocket;
+        if (UserSettings.DataOutPort) {
+            pc.printf("Starting Primary data socket - %s\r\n", (UserSettings.FreeDPort ? "FreeD Output Mode" : "VIPS Output Mode"));
             Thread::wait(50);
-            FreeDSocket = new UDPSocket();
-            FreeDSocket->init();
-            FreeDSocket->set_broadcasting(true);
-            FreeDTarget.set_address(0xFFFFFFFF, UserSettings.FreeDPort);
+            PrimaryDataSocket = new UDPSocket();
+            PrimaryDataSocket->init();
+            PrimaryDataSocket->set_broadcasting(true);
+            PrimaryDataTarget.set_address(0xFFFFFFFF, UserSettings.DataOutPort);
         }
 
         if (VIPSSocket)
@@ -1004,7 +1014,7 @@
             if (EthTxNow) {
 //                NewData.lock();
                 EthTxNow = false;
-                if (!FreeDSocket && UserSettings.FreeDPort) {
+                if (!PrimaryDataSocket && UserSettings.DataOutPort) {
                     pc.puts("No FreeD UDP socket\r\n");
                     break;
                 }
@@ -1012,12 +1022,16 @@
                     pc.puts("No VIPS UDP socket\r\n");
                     break;
                 }
-                if (FreeDSocket) {
-                    Result = FreeDSocket->sendTo(FreeDTarget,(char *)&fdPacket, sizeof(struct D1MsgFormat_s));
+                if (PrimaryDataSocket) {
+                    if (UserSettings.FreeDPort)
+                        Result = PrimaryDataSocket->sendTo(PrimaryDataTarget,(char *)&fdPacket, sizeof(struct D1MsgFormat_s));
+                    else
+                        Result = PrimaryDataSocket->sendTo(PrimaryDataTarget,(char *)FlexibleVIPSOut, VIPSOutSize);
                     //uint32_t ethtime = EthernetTimer.read_us();
                     //EthernetTimer.reset();
-                    if (Result != sizeof(struct D1MsgFormat_s)) {
-                        pc.puts("FreeD UDP Tx Failed!\r\n");
+                    int expected_size = UserSettings.FreeDPort ? sizeof(struct D1MsgFormat_s) :  VIPSOutSize;
+                    if (Result != expected_size) {
+                        pc.puts("Primary Port UDP Tx Failed!\r\n");
                         break;
                     } //else
                     //pc.printf("%d\r\n", ethtime);