From 650b46fad21681696c421a8b14a11c1f394ac126 Mon Sep 17 00:00:00 2001 From: Paul Hollinsky Date: Tue, 25 Sep 2018 18:41:05 -0400 Subject: [PATCH] Fix structs for FIRE 2 settings --- communication/include/decoder.h | 3 +- communication/message/include/neomessage.h | 3 +- device/include/idevicesettings.h | 75 +++++++++++++++++++ device/neovifire2/include/neovifire2eth.h | 2 + .../neovifire2/include/neovifire2settings.h | 9 ++- device/neovifire2/include/neovifire2usb.h | 2 + 6 files changed, 88 insertions(+), 6 deletions(-) diff --git a/communication/include/decoder.h b/communication/include/decoder.h index d6c4ae4..0e5a57c 100644 --- a/communication/include/decoder.h +++ b/communication/include/decoder.h @@ -9,8 +9,7 @@ #include #include -#pragma pack(push) -#pragma pack(1) +#pragma pack(push, 1) namespace icsneo { diff --git a/communication/message/include/neomessage.h b/communication/message/include/neomessage.h index 942d5db..56eaabe 100644 --- a/communication/message/include/neomessage.h +++ b/communication/message/include/neomessage.h @@ -4,8 +4,7 @@ #include #include -#pragma pack(push) -#pragma pack(1) +#pragma pack(push, 1) typedef struct { uint64_t timestamp; diff --git a/device/include/idevicesettings.h b/device/include/idevicesettings.h index 3b5960b..cf29087 100644 --- a/device/include/idevicesettings.h +++ b/device/include/idevicesettings.h @@ -26,6 +26,8 @@ protected: #endif +#pragma pack(push, 2) + /* SetBaudrate in CAN_SETTINGS */ enum { @@ -106,6 +108,77 @@ typedef struct _CANFD_SETTINGS } CANFD_SETTINGS; #define CANFD_SETTINGS_SIZE 10 +typedef struct ETHERNET_SETTINGS_t +{ + uint8_t duplex; /* 0 = half, 1 = full */ + uint8_t link_speed; + uint8_t auto_neg; + uint8_t led_mode; + uint8_t rsvd[4]; +} ETHERNET_SETTINGS; +#define ETHERNET_SETTINGS_SIZE 8 + +typedef struct +{ + uint8_t MasterEnable; + uint8_t SlaveEnable; + uint8_t MasterNetwork; + uint8_t SlaveNetwork; +} TIMESYNC_ICSHARDWARE_SETTINGS; +#define TIMESYNC_ICSHARDWARE_SETTINGS_SIZE 4 + +typedef struct _STextAPISettings +{ + uint32_t can1_tx_id; + uint32_t can1_rx_id; + union { + struct sCAN1Options + { + unsigned bExtended : 1; + unsigned : 15; + }; + uint32_t DWord; + } can1_options; + uint32_t can2_tx_id; + uint32_t can2_rx_id; + union { + struct sCAN2Options + { + unsigned bExtended : 1; + unsigned : 15; + }; + uint32_t DWord; + } can2_options; + + uint32_t network_enables; + + uint32_t can3_tx_id; + uint32_t can3_rx_id; + union { + struct sCAN3Options + { + unsigned bExtended : 1; + unsigned : 15; + }; + uint32_t DWord; + } can3_options; + + uint32_t can4_tx_id; + uint32_t can4_rx_id; + union { + struct sCAN4Options + { + unsigned bExtended : 1; + unsigned : 15; + }; + uint32_t DWord; + } can4_options; + + uint32_t reserved[5]; + +} STextAPISettings; +#define STextAPISettings_SIZE 72 + /* high_speed_auto_switch in SWCAN_SETTINGS */ enum { @@ -218,6 +291,8 @@ typedef struct _UART_SETTINGS } UART_SETTINGS; #define UART_SETTINGS_SIZE 16 +#pragma pack(pop) + #ifdef __cplusplus } // End of the namespace #endif diff --git a/device/neovifire2/include/neovifire2eth.h b/device/neovifire2/include/neovifire2eth.h index 1e3a46d..e5e0b83 100644 --- a/device/neovifire2/include/neovifire2eth.h +++ b/device/neovifire2/include/neovifire2eth.h @@ -3,6 +3,7 @@ #include "device/neovifire2/include/neovifire2.h" #include "platform/include/pcap.h" +#include "device/neovifire2/include/neovifire2settings.h" #include namespace icsneo { @@ -15,6 +16,7 @@ public: auto packetizer = std::make_shared(); auto decoder = std::make_shared(); com = std::make_shared(transport, packetizer, decoder); + settings = std::make_shared(com); productId = PRODUCT_ID; } diff --git a/device/neovifire2/include/neovifire2settings.h b/device/neovifire2/include/neovifire2settings.h index fc9c8ba..21f5db2 100644 --- a/device/neovifire2/include/neovifire2settings.h +++ b/device/neovifire2/include/neovifire2settings.h @@ -4,6 +4,12 @@ #include #include "device/include/idevicesettings.h" +#ifdef __cplusplus + +namespace icsneo { + +#endif + #pragma pack(push, 2) typedef struct { uint16_t perf_en; @@ -105,10 +111,9 @@ typedef struct { #include -namespace icsneo { - class NeoVIFIRE2Settings : public IDeviceSettings { public: + NeoVIFIRE2Settings(std::shared_ptr com) : IDeviceSettings(com) {} void refresh() { IDeviceSettings::refresh(); if(settingsLoaded) { diff --git a/device/neovifire2/include/neovifire2usb.h b/device/neovifire2/include/neovifire2usb.h index daa589b..6dedc7e 100644 --- a/device/neovifire2/include/neovifire2usb.h +++ b/device/neovifire2/include/neovifire2usb.h @@ -3,6 +3,7 @@ #include "device/neovifire2/include/neovifire2.h" #include "platform/include/ftdi.h" +#include "device/neovifire2/include/neovifire2settings.h" namespace icsneo { @@ -14,6 +15,7 @@ public: auto packetizer = std::make_shared(); auto decoder = std::make_shared(); com = std::make_shared(transport, packetizer, decoder); + settings = std::make_shared(com); productId = PRODUCT_ID; }