Device: Add start/stop/clear script, script status, and preload coremini commands

This commit is contained in:
Emily Brooks
2022-10-11 14:48:39 -04:00
parent 3b80746fb8
commit 5b14ec7246
10 changed files with 292 additions and 0 deletions
+4
View File
@@ -10,6 +10,8 @@ enum class Command : uint8_t {
EnableNetworkCommunicationEx = 0x08,
NeoReadMemory = 0x40,
NeoWriteMemory = 0x41,
ClearCoreMini = 0x42,
LoadCoreMini = 0x43,
RequestSerialNumber = 0xA1,
GetMainVersion = 0xA3, // Previously known as RED_CMD_APP_VERSION_REQ
SetSettings = 0xA4, // Previously known as RED_CMD_SET_BAUD_REQ, follow up with SaveSettings to write to EEPROM
@@ -25,9 +27,11 @@ enum class Command : uint8_t {
RequestBitSmash = 0xDC, // Previously known as RED_CMD_CM_BITSMASH
WiVICommand = 0xDD, // Previously known as RED_CMD_WIVI_COMM
GetVBattReq = 0xDF, // Previously known as RED_CMD_VBATT_REQUEST
ScriptStatus = 0xE0, // Previously known as RED_CMD_SCRIPT_STATUS
MiscControl = 0xE7,
Extended = 0xF0,
FlexRayControl = 0xF3,
CoreMiniPreload = 0xF4, // Previously known as RED_CMD_COREMINI_PRELOAD
PHYControlRegisters = 0xEF
};
@@ -30,6 +30,7 @@ public:
LogicalDiskInfo = 0x8008,
ExtendedResponse = 0x8009,
WiVICommandResponse = 0x800a,
ScriptStatus = 0x800b,
};
Message(Type t) : type(t) {}
@@ -0,0 +1,36 @@
#ifndef __SCRIPTSTATUSMESSAGE_H
#define __SCRIPTSTATUSMESSAGE_H
#ifdef __cplusplus
#include "icsneo/communication/message/message.h"
#include "icsneo/communication/packet/scriptstatuspacket.h"
namespace icsneo
{
//Response to Command::ScriptStatus
class ScriptStatusMessage : public Message {
public:
ScriptStatusMessage() : Message( Message::Type::ScriptStatus ) {}
bool isCoreminiRunning;
uint32_t sectorOverflows;
uint32_t numRemainingSectorBuffers;
int32_t lastSector;
int32_t readBinSize;
int32_t minSector;
int32_t maxSector;
int32_t currentSector;
uint64_t coreminiCreateTime;
uint16_t fileChecksum;
uint16_t coreminiVersion;
uint16_t coreminiHeaderSize;
uint8_t diagnosticErrorCode;
uint8_t diagnosticErrorCodeCount;
uint16_t maxCoreminiSizeKB;
};
}
#endif // __cplusplus
#endif //__SCRIPTSTATUSMESSAGE_H
+10
View File
@@ -119,9 +119,11 @@ public:
LSFTCAN2 = 99,
LogicalDiskInfo = 187,
WiVICommand = 221,
ScriptStatus = 224,
EthPHYControl = 239,
ExtendedCommand = 240,
FlexRayControl = 243,
CoreMiniPreLoad = 244,
HW_COM_Latency_Test = 512,
DeviceStatus = 513,
UDP = 514,
@@ -281,7 +283,9 @@ public:
case NetID::ReadSettings:
case NetID::LogicalDiskInfo:
case NetID::WiVICommand:
case NetID::ScriptStatus:
case NetID::EthPHYControl:
case NetID::CoreMiniPreLoad:
case NetID::ExtendedCommand:
case NetID::NeoMemorySDRead:
case NetID::NeoMemoryWriteDone:
@@ -526,6 +530,10 @@ public:
return "Logical Disk Information";
case NetID::WiVICommand:
return "WiVI Command";
case NetID::ScriptStatus:
return "Script Status";
case NetID::CoreMiniPreLoad:
return "CoreMini PreLoad";
case NetID::EthPHYControl:
return "Ethernet PHY Register Control";
case NetID::ExtendedCommand:
@@ -934,9 +942,11 @@ private:
#define ICSNEO_NETID_LSFTCAN2 99
#define ICSNEO_NETID_LOGICAL_DISK_INFO 187
#define ICSNEO_NETID_WIVI_COMMAND 221
#define ICSNEO_NETID_SCRIPT_STATUS 224
#define ICSNEO_NETID_ETH_PHY_CONTROL 239
#define ICSNEO_NETID_EXTENDED_COMMAND 240
#define ICSNEO_NETID_FLEXRAY_CONTROL 243
#define ICSNEO_NETID_COREMINI_PRELOAD 244
#define ICSNEO_NETID_HW_COM_LATENCY_TEST 512
#define ICSNEO_NETID_DEVICE_STATUS 513
#define ICSNEO_NETID_UDP 514
@@ -0,0 +1,86 @@
#ifndef __SCRIPTSTATUSPACKET_H
#define __SCRIPTSTATUSPACKET_H
#ifdef __cplusplus
#include "icsneo/communication/packet.h"
#include <cstdint>
#include <memory>
#pragma pack(push,2)
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable: 4201) // nonstandard extension used: nameless struct/union
#pragma warning(disable: 4200) // nonstandard extension used: zero-sized array in struct/union
#endif // _MSC_VER
namespace icsneo
{
class ScriptStatusMessage;
struct CoreMiniStatus
{
uint32_t justReset : 1;
uint32_t communicationEnabled : 1;
uint32_t isRunning : 1;
uint32_t checksumFailed : 1;
uint32_t licenseFailed : 1;
uint32_t versionMismatch : 1;
uint32_t bootOff : 1;
uint32_t hardwareFailure : 1; // To check SRAM failure (for now)
uint32_t isPassiveConnect : 1; // Always zero. Set to one when neoVI connection is passive,i.e. no async traffic
uint32_t usbCommunicationEnabled : 1; // Set to one when USB Host PC has enabled communication.
uint32_t linuxCommunicationEnabled : 1; // Set to one when Android (Linux) has enabled communication.
uint32_t tooBig : 1;
uint32_t hidUsbState : 1;
uint32_t fpgaUsbState : 1;
uint32_t filesystem : 1;
uint32_t isEncrypted : 1;
uint32_t reserved : 16;
};
struct ScriptStatus
{
static std::shared_ptr<ScriptStatusMessage> DecodeToMessage(const std::vector<uint8_t>& bytestream);
CoreMiniStatus status;
uint32_t sectorOverflows;
uint32_t numRemainingSectorBuffers;
int32_t lastSector;
int32_t readBinSize;
int32_t minSector;
int32_t maxSector;
int32_t currentSector;
uint32_t coreminiCreateTimeMsb;
uint32_t coreminiCreateTimeLsb;
uint16_t zero2;
uint16_t zero3;
uint16_t fileChecksum;
uint16_t coreminiVersion;
uint16_t coreminiHeaderSize;
uint16_t coreminiEngineMinVersion; // This firmware min version
uint16_t coreminiScriptMinEngineVers; // Current loaded script's min engine requirements.
uint8_t eolResults1;
uint8_t eolResults2;
uint8_t eolResults3;
uint8_t zero6;
uint8_t diagErrCode;
uint8_t diagErrCodeCount;
/* FPGA version Fpga reports to HID over SPI */
uint8_t spiFpgaVers1;
uint8_t spiFpgaVers2;
uint16_t maxCoreminiSizeKB;
uint16_t maxCoreminiFlashSizeKB;
};
} // namespace icsneo
#ifdef _MSC_VER
#pragma warning(pop)
#endif // _MSC_VER
#pragma pack(pop)
#endif // __cplusplus
#endif //__SCRIPTSTATUSPACKET_H