Index: firmware/App/Drivers/ConductivityTeensy.c =================================================================== diff -u -rd48829521f698f5fe55157bc688ca196a9376faa -r60ae19fffcc93ee4bfeb1756af18be93acc9dd70 --- firmware/App/Drivers/ConductivityTeensy.c (.../ConductivityTeensy.c) (revision d48829521f698f5fe55157bc688ca196a9376faa) +++ firmware/App/Drivers/ConductivityTeensy.c (.../ConductivityTeensy.c) (revision 60ae19fffcc93ee4bfeb1756af18be93acc9dd70) @@ -24,12 +24,12 @@ #include "ConductivityTeensy.h" -#define SCI_RECEIVE_DMA_REQUEST 28 ///< Serial port receive DMA request line. -#define SCI_TRANSMIT_DMA_REQUEST 29 ///< Serial port transmit DMA request line. -#define COND_WRITE_CMD_BUFFER_LEN 256 ///< Conductivity write command buffer byte length. -#define COND_READ_CMD_BUFFER_LEN 8 ///< Conductivity read command buffer byte length. -#define COND_WRITE_RSP_BUFFER_LEN 8 ///< Conductivity write command response buffer byte length. -#define COND_READ_RSP_BUFFER_LEN 256 ///< Conductivity read command response buffer byte length. +#define SCI_RECEIVE_DMA_REQUEST 30 ///< Serial port receive DMA request line. +#define SCI_TRANSMIT_DMA_REQUEST 31 ///< Serial port transmit DMA request line. +#define COND_WRITE_CMD_BUFFER_LEN 256 ///< Conductivity write command buffer byte length. +#define COND_READ_CMD_BUFFER_LEN 8 ///< Conductivity read command buffer byte length. +#define COND_WRITE_RSP_BUFFER_LEN 8 ///< Conductivity write command response buffer byte length. +#define COND_READ_RSP_BUFFER_LEN 256 ///< Conductivity read command response buffer byte length. // ********** private data ********** static CONDUCTIVITY_COMM_STATE_T conductivityCommState = COND_COMM_STATE_START; @@ -54,34 +54,33 @@ static CONDUCTIVITY_COEFFICIENTS_T conductivityCoeff[MAX_TEENSY_SENSOR]; static const char* teensyCmd[] = { "a", ///< COND_COMM_STATE_SEND_CMD_INIT_SENSOR - "l", ///< COND_COMM_STATE_SEND_CMD_GET_INIT_STATUS - "save", ///< COND_COMM_STATE_SEND_CMD_UPDATE_EEPROM_DATA, - "e", ///< COND_COMM_STATE_SEND_CMD_GET_EEPROM_DATA, - "cfg", ///< COND_COMM_STATE_SEND_CMD_UPDATE_MEASUREMENT_SETTINGS, - "k", ///< COND_COMM_STATE_SEND_CMD_GET_MEASUREMENT_SETTINGS, - "m", ///< COND_COMM_STATE_SEND_CMD_GET_MEASUREMENT, - "n", ///< Stop getting measurements - "g", ///< Get measurements of all the sensors - "j", ///< Select a sensor. ex : "j 1" selects sensor number 1 - "h" ///< Get that of selected sensor. (First Execute command "j".) + "l", ///< COND_COMM_STATE_SEND_CMD_GET_INIT_STATUS + "save", ///< COND_COMM_STATE_SEND_CMD_UPDATE_EEPROM_DATA, + "e", ///< COND_COMM_STATE_SEND_CMD_GET_EEPROM_DATA, + "cfg", ///< COND_COMM_STATE_SEND_CMD_UPDATE_MEASUREMENT_SETTINGS, + "k", ///< COND_COMM_STATE_SEND_CMD_GET_MEASUREMENT_SETTINGS, + "m", ///< COND_COMM_STATE_SEND_CMD_GET_MEASUREMENT, + "n", ///< Stop getting measurements + "g", ///< Get measurements of all the sensors + "j", ///< Select a sensor. ex : "j 1" selects sensor number 1 + "h" ///< Get that of selected sensor. (First Execute command "j".) }; // ********** private function prototypes ********** static void handleConductivitySendCmd( void ); -static void handlecConductivityReceiveResponse( void ); +static void handleConductivityReceiveResponse( void ); static void consumeUnexpectedConductivityData( void ); static void setupConductivityDMAForWriteCmd( U32 bytes2Transmit ); +static void startConductivityDMAWriteCmd( void ); static void setupConductivityDMAForWriteResp( U32 bytes2Receive ); -static void setupConductivityDMAForReadResp( U32 bytes2Receive ); -static void setupConductivityDMAForReadCmd( U32 bytes2Transmit ); - static void startConductivityDMAReceiptOfWriteResp( void ); -static void startConductivityDMAReceiptOfReadResp( void ); -static void startConductivityDMAWriteCmd( void ); +static void setupConductivityDMAForReadCmd( U32 bytes2Transmit ); static void startConductivityDMAReadCmd( void ); +static void setupConductivityDMAForReadResp( U32 bytes2Receive ); +static void startConductivityDMAReceiptOfReadResp( void ); static CONDUCTIVITY_PARSE_STATUS parseMeasurementSettings(const U32 *buffer, U32 len ); static CONDUCTIVITY_PARSE_STATUS parseEEPROMdata( const U32 *buffer, U32 len ); @@ -102,10 +101,14 @@ static CONDUCTIVITY_COMM_STATE_T sendCmd_getMeasurements( void ); static CONDUCTIVITY_COMM_STATE_T rcvRspns_getMeasurements( void ); -static void sendCmd_getSingleMeasurement( TEENSY_SENSOR_INDEX_T sensorNum ); -static void rcvRspns_getSingleMeasurement( TEENSY_SENSOR_INDEX_T sensorNum ); +static void sendCmd_stopMeasurement( void ); +static void rcvRspns_stopMeasurement( void ); static void sendCmd_getAllMeasurements( void ); static void rcvRspns_getAllMeasurements( void ); +static void sendCmd_selectSensor( TEENSY_SENSOR_INDEX_T sensorNum ); +static void rcvRspns_selectSensor( TEENSY_SENSOR_INDEX_T sensorNum ); +static void sendCmd_getSingleMeasurement( TEENSY_SENSOR_INDEX_T sensorNum ); +static void rcvRspns_getSingleMeasurement( TEENSY_SENSOR_INDEX_T sensorNum ); static CONDUCTIVITY_INIT_STATUS_T getInitStatus( void ); static const CONDUCTIVITY_EEPROM_DATA_T* getEEPROMdata( void ); @@ -205,14 +208,14 @@ void initConductivityDMAchannels( void ) { // Assign DMA channels to h/w DMA requests - dmaReqAssign( DMA_CH3, SCI_RECEIVE_DMA_REQUEST ); - dmaReqAssign( DMA_CH4, SCI_TRANSMIT_DMA_REQUEST ); + dmaReqAssign( DMA_CH1, SCI_RECEIVE_DMA_REQUEST ); + dmaReqAssign( DMA_CH3, SCI_TRANSMIT_DMA_REQUEST ); // Set DMA channel priorities - dmaSetPriority( DMA_CH3, HIGHPRIORITY ); - dmaSetPriority( DMA_CH4, LOWPRIORITY ); + dmaSetPriority( DMA_CH1, HIGHPRIORITY ); + dmaSetPriority( DMA_CH3, LOWPRIORITY ); // Enable DMA block transfer complete interrupts + dmaEnableInterrupt( DMA_CH1, BTC ); dmaEnableInterrupt( DMA_CH3, BTC ); - dmaEnableInterrupt( DMA_CH4, BTC ); // Initialize FPGA DMA Write Control Record condDMAWriteControlRecord.PORTASGN = 4; // Port B (only choice per datasheet) @@ -323,12 +326,12 @@ static void consumeUnexpectedConductivityData( void ) { // Clear any errors - sciRxError( scilinREG ); + sciRxError( sciREG ); // If a byte is pending read, read it - if ( sciIsRxReady( scilinREG ) != 0 ) + if ( sciIsRxReady( sciREG ) != 0 ) { - sciReceiveByte( scilinREG ); + sciReceiveByte( sciREG ); } } @@ -341,23 +344,28 @@ } } +static void startConductivityDMAWriteCmd( void ) +{ + dmaSetCtrlPacket( DMA_CH3, condDMAWriteControlRecord ); + dmaSetChEnable( DMA_CH3, DMA_HW ); + setSCIDMATransmitInterrupt(); +} + + static void setupConductivityDMAForWriteResp( U32 bytes2Receive ) { // Verify # of bytes does not exceed buffer length if ( bytes2Receive <= COND_WRITE_RSP_BUFFER_LEN ) { condDMAWriteRespControlRecord.FRCNT = bytes2Receive; } - } -static void setupConductivityDMAForReadResp( U32 bytes2Receive ) +static void startConductivityDMAReceiptOfWriteResp( void ) { - // Verify # of bytes does not exceed buffer length - if ( bytes2Receive <= COND_READ_RSP_BUFFER_LEN ) - { - condDMAReadRespControlRecord.FRCNT = bytes2Receive; - } + dmaSetCtrlPacket( DMA_CH1, condDMAWriteRespControlRecord ); + dmaSetChEnable( DMA_CH1, DMA_HW ); + setSCIDMAReceiveInterrupt(); } static void setupConductivityDMAForReadCmd( U32 bytes2Transmit ) @@ -369,35 +377,36 @@ } } -static void startConductivityDMAReceiptOfWriteResp( void ) +static void startConductivityDMAReadCmd( void ) { - dmaSetCtrlPacket( DMA_CH3, condDMAWriteRespControlRecord ); + dmaSetCtrlPacket( DMA_CH3, condDMAReadControlRecord ); dmaSetChEnable( DMA_CH3, DMA_HW ); - setSCI2DMAReceiveInterrupt(); + setSCIDMATransmitInterrupt(); } -static void startConductivityDMAReceiptOfReadResp( void ) +static void setupConductivityDMAForReadResp( U32 bytes2Receive ) { - dmaSetCtrlPacket( DMA_CH3, condDMAReadRespControlRecord ); - dmaSetChEnable( DMA_CH3, DMA_HW ); - setSCI2DMAReceiveInterrupt(); + // Verify # of bytes does not exceed buffer length + if ( bytes2Receive <= COND_READ_RSP_BUFFER_LEN ) + { + condDMAReadRespControlRecord.FRCNT = bytes2Receive; + } } - -static void startConductivityDMAWriteCmd( void ) +static void startConductivityDMAReceiptOfReadResp( void ) { - dmaSetCtrlPacket( DMA_CH4, condDMAWriteControlRecord ); - dmaSetChEnable( DMA_CH4, DMA_HW ); - setSCI2DMATransmitInterrupt(); + dmaSetCtrlPacket( DMA_CH1, condDMAReadRespControlRecord ); + dmaSetChEnable( DMA_CH1, DMA_HW ); + setSCIDMAReceiveInterrupt(); } -static void startConductivityDMAReadCmd( void ) -{ - dmaSetCtrlPacket( DMA_CH4, condDMAReadControlRecord ); - dmaSetChEnable( DMA_CH4, DMA_HW ); - setSCI2DMATransmitInterrupt(); -} + + + + + + /*********************************************************************//** * @brief * The parseMeasurementSettings Reads measurement settings from buffer and @@ -529,6 +538,7 @@ { CONDUCTIVITY_COMM_STATE_T state = COND_COMM_STATE_SEND_CMD_INIT_SENSOR; + // teensyCmd[TEENSY_CMD_INIT_SENSOR] // condWriteCmdBuffer return state; @@ -547,6 +557,7 @@ { CONDUCTIVITY_COMM_STATE_T state = COND_COMM_STATE_SEND_CMD_GET_INIT_STATUS; + // teensyCmd[TEENSY_CMD_GET_INIT_STATUS] // condReadCmdBuffer return state; @@ -565,6 +576,7 @@ { CONDUCTIVITY_COMM_STATE_T state = COND_COMM_STATE_SEND_CMD_UPDATE_EEPROM_DATA; + // teensyCmd[TEENSY_CMD_UPDATE_EEPROM_DATA] // condWriteCmdBuffer return state; @@ -583,6 +595,7 @@ { CONDUCTIVITY_COMM_STATE_T state = COND_COMM_STATE_SEND_CMD_GET_EEPROM_DATA; + // teensyCmd[TEENSY_CMD_GET_EEPROM_DATA] // condReadCmdBuffer return state; @@ -601,6 +614,7 @@ { CONDUCTIVITY_COMM_STATE_T state = COND_COMM_STATE_SEND_CMD_UPDATE_MEASUREMENT_SETTINGS; + // teensyCmd[TEENSY_CMD_UPDATE_MEASUREMENT_SETTINGS] // condWriteCmdBuffer return state; @@ -619,6 +633,7 @@ { CONDUCTIVITY_COMM_STATE_T state = COND_COMM_STATE_SEND_CMD_GET_MEASUREMENT_SETTINGS; + // teensyCmd[TEENSY_CMD_GET_MEASUREMENT_SETTINGS] // condReadCmdBuffer return state; @@ -637,6 +652,7 @@ { CONDUCTIVITY_COMM_STATE_T state = COND_COMM_STATE_SEND_CMD_GET_MEASUREMENT; + // teensyCmd[TEENSY_CMD_GET_MEASUREMENT] // condReadCmdBuffer return state; @@ -651,24 +667,60 @@ return state; } -static void sendCmd_getSingleMeasurement( TEENSY_SENSOR_INDEX_T sensorNum ) +static void sendCmd_stopMeasurement( void ) { + + // teensyCmd[TEENSY_CMD_STOP_MEASUREMENT] + // condReadCmdBuffer } -static void rcvRspns_getSingleMeasurement( TEENSY_SENSOR_INDEX_T sensorNum ) +static void rcvRspns_stopMeasurement( void ) { + + // condReadResponseBuffer } static void sendCmd_getAllMeasurements( void ) { + // teensyCmd[TEENSY_CMD_GET_ALL_MEASUREMENTS] + // condReadCmdBuffer + } static void rcvRspns_getAllMeasurements( void ) { + // condReadResponseBuffer + } +static void sendCmd_selectSensor( TEENSY_SENSOR_INDEX_T sensorNum ) +{ + // teensyCmd[TEENSY_CMD_SELECT_SENSOR] + // condWriteCmdBuffer + +} +static void rcvRspns_selectSensor( TEENSY_SENSOR_INDEX_T sensorNum ) +{ + // condWriteResponseBuffer + +} + +static void sendCmd_getSingleMeasurement( TEENSY_SENSOR_INDEX_T sensorNum ) +{ + + // teensyCmd[TEENSY_CMD_GET_SINGLE_MEASUREMENT] + // condReadCmdBuffer +} + +static void rcvRspns_getSingleMeasurement( TEENSY_SENSOR_INDEX_T sensorNum ) +{ + + // teensyCmd[] + // condReadResponseBuffer +} + static CONDUCTIVITY_INIT_STATUS_T getInitStatus( void ) { sendInitStatusCommand();