|
Tezzeret
1
Tezzeret
|
Class developed in order to develop and debug MFAM-based applications, because a debug halt when running the MFAM SPI in the debuggers in code composer is not recoverable (TI acknowledged that the SPI interfaces would lock the debugger when running the Tiva SOCs in a communication sometime around 2017 or 2018, and stated that they did not plan to do anything about it; hard to argue with that position - the chip was more than 10 years in production at that point) . This class needs occasional dev work in order to keep up with changing application requirements, for example as the application uses more of the data in the SPI packet. More...
#include <GmMFAMEmulator.hpp>


Public Member Functions | |
| GmMfamEmulator (UInt8 iSubjectId, GmManagedArrayRingBuffer< uint8_t, GM_SIZE_OF_APP_DATA_QUEUE > *mainEventQueue) | |
| int | Initialize () |
| virtual void | Halt () |
| int | AddFakeRecord () |
Public Member Functions inherited from Geometrics::GmMfamDataSource | |
| GmMfamDataSource (UInt8 iSubjectId, GmManagedArrayRingBuffer< uint8_t, GM_SIZE_OF_APP_DATA_QUEUE > *mainEventQueue) | |
| int | Start () |
| virtual int | CheckCalibrate (Bool bForceCalibrate) |
| int | SetSimpleSubsampleRate (int iNewRate) |
| int | ResetBuffers (Bool bForceCalibrate) |
| virtual UInt16 | SystemStatus () |
| virtual int | WriteToStorage (UInt32 ui32Topic, char *pData, UInt32 iSize, GmStorage *psStorage, UInt32 ui32FormatId) |
| Bool | IsSuperMag () |
| Bool | MagOneDataValid () |
| Bool | MagTwoDataValid () |
| Bool | PpsLocked () |
| Bool | PpsAvailable () |
| int | MagOneStartupStatusString (char *strBuffer, int iBufferLength) |
| int | MagTwoStartupStatusString (char *strBuffer, int iBufferLength) |
| int | MagOneOperatingStatusString (char *strBuffer, int iBufferLength) |
| int | MagTwoOperatingStatusString (char *strBuffer, int iBufferLength) |
| int | LastMagOneDataValue (float *pfDataValue) |
| int | LastMagTwoDataValue (float *pfDataValue) |
| UInt16 | MagMainMode () |
| UInt16 | CompassStatus () |
| bool | IsInStartup () |
| Bool | SystemHasStartedUp () |
| Bool | SystemFailed () |
| void | SaveMonitorPacket (IndexedMfamFilteredPacketWithHeader *pMonitorPacket, Bool bFilter) |
Public Member Functions inherited from Geometrics::GmBufferedSensor | |
| GmBufferedSensor (UInt8 iSubjectId, int iRingCount, int iDataSize, GmManagedArrayRingBuffer< uint8_t, GM_SIZE_OF_APP_DATA_QUEUE > *mainEventQueue) | |
| Constructor for derived classes, when it's OK to allocate a local buffer dynamically. More... | |
| GmBufferedSensor (UInt8 iSubjectId, int iRingCount, int iDataSize, UInt8 *puiBuffer, UInt32 uiBufferSize, GmManagedArrayRingBuffer< uint8_t, GM_SIZE_OF_APP_DATA_QUEUE > *mainEventQueue) | |
| Constructor used by most derived classes on memory-constrained systems. In this case the derived class provides a buffer, usually static, so that the buffer doesn't need to be allocated dynamically. More... | |
| int | Start () |
| int | ResetBuffers () |
| Bool | HasData () |
| int | ReadRecord (char *pcDestination, int iSize) |
| The main interface for consumers of a sensors data to get that data. It simply copies the data in the sensor's buffer into the caller's buffer. It is up to the caller to know what to do with that data, and how to free any local memory. (This function should have been name ReadNextRecord) | |
| virtual int | DeleteNextRecord () |
| DeleteNextRecord allows a caller to discard the next record without retrieving it. The subclasses that implement DeleteNextRecord must be able to deal with any memory that needs to be freed, or other such concerns. | |
Public Member Functions inherited from Geometrics::GmEventSource | |
| void | SetSensorId (int iSensorId) |
| int | GetSensorId () |
Static Public Attributes | |
| static GmMfamEmulator * | m_static_msTheOneSensor = NULL |
Static Public Attributes inherited from Geometrics::GmMfamDataSource | |
| static UInt16 | m_static_iSystemStatus |
Additional Inherited Members | |
Static Public Member Functions inherited from Geometrics::GmMfamDataSource | |
| static int | DecodeMagStartupStatus (UInt16 iMagStatus, char *strBuffer, int iBufferLength) |
| static int | DecodeMagOperatingStatus (UInt16 iMagStatus, char *strBuffer, int iBufferLength) |
Public Attributes inherited from Geometrics::GmMfamDataSource | |
| uint32_t | mQueueFillTopThreshold |
| uint32_t | mQueueFillRestartThreshold |
Public Attributes inherited from Geometrics::GmBufferedSensor | |
| CChildRingBuffer * | m_rbBuffer |
| The local buffer into which the sensor or event source stores each of its events or measurements. When an item is committed to this buffer, it also adds an event (consisting of the sensor's subject ID) into the application main event queue. The full event or measurement remains here, until the application reads the subject ID out of the main queue and then asks this sensor object for the full information by calling ReadRecord. | |
| UInt8 | m_iSubjectId |
Protected Member Functions inherited from Geometrics::GmMfamDataSource | |
| int | RecordStatus (MfamSpiPacket *pmspRecord) |
Protected Attributes inherited from Geometrics::GmMfamDataSource | |
| IndexedMfamFilteredPacketWithHeader | m_mspStatusPacket |
| int | m_iSimpleSubsampleRate |
| IndexedMfamFilteredPacketWithHeader | m_amspStatusRecords [MAG_SPI_TOTAL_RECORDS] |
Protected Attributes inherited from Geometrics::GmEventSource | |
| int | m_iSensorId |
Static Protected Attributes inherited from Geometrics::GmMfamDataSource | |
| static bool | m_static_boolInitialized |
| static int | m_static_iSubsampleCount = 0 |
Class developed in order to develop and debug MFAM-based applications, because a debug halt when running the MFAM SPI in the debuggers in code composer is not recoverable (TI acknowledged that the SPI interfaces would lock the debugger when running the Tiva SOCs in a communication sometime around 2017 or 2018, and stated that they did not plan to do anything about it; hard to argue with that position - the chip was more than 10 years in production at that point) . This class needs occasional dev work in order to keep up with changing application requirements, for example as the application uses more of the data in the SPI packet.
To enable the emulator in an MFAM-based application, use this in GeoAppDefs.hpp:
#define EMULATE_MFAM_SENSOR GEO_TRUE
rather than this:
#define MFAM_MODULE GEO_FALSE