System Management code
Dependencies: mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP
Fork of SystemManagement by
Diff: outDiagnostics/outDiagnostics.cpp
- Revision:
- 39:ddf38df9699e
- Parent:
- 38:8efacce315ae
--- a/outDiagnostics/outDiagnostics.cpp Sat Feb 07 08:54:51 2015 +0000 +++ b/outDiagnostics/outDiagnostics.cpp Wed Feb 11 23:09:57 2015 +0000 @@ -122,9 +122,6 @@ ADD_SPRINTF_LINE snprintf(temp, max_charsPerLine, "CANtxSize: %4d %sCANrxSize: %4d %sSerialBaud: %6d%sSerialTx: %5d", dashParam->CANtxSize,barSpace, dashParam->CANrxSize,barSpace, dashParam->SerialBaud,barSpace, dashParam->SerialTxSize); ADD_SPRINTF_LINE - snprintf(temp, max_charsPerLine, "XbeeBaud: %6d %sXbeeTxSize: %4d%sXbeeRxSize: %4d %s CANack: %5s", dashParam->XbeeBaud, barSpace, dashParam->XbeeTxSize,barSpace, dashParam->XbeeRxSize,barSpace, dashParam->CANnoAck?"NOACK":"ACK"); - ADD_SPRINTF_LINE - BLANK_LINE } snprintf(temp, max_charsPerLine, " Operating Info %s", freeze?"(Viewing Freeze of Last Fault) ":""); @@ -257,8 +254,15 @@ BLANK_LINE snprintf(temp, max_charsPerLine, " IMD %s", freeze?"(Viewing Freeze of Last Fault) ":""); TITLE(temp) - const char IMDstr[7][12] = {"OFF","NORMAL","UNDERVOLT","SPEEDSTART","ERROR","GROUNDFLT","INVALID"}; - sprintf(temp, "Status: %10s Resistance: %7.0fKohm Error: %3s", IMDstr[dashOp->imd.status], dashOp->imd.resistance/1.0e3, dashOp->imd.error?"ERR":"OK"); + char imdStatN=6; + if (dashOp->imd.status & OFF) imdStatN=0; + if (dashOp->imd.status & NORMAL) imdStatN=1; + if (dashOp->imd.status & UNDERVOLT) imdStatN=2; + if (dashOp->imd.status & SPEEDSTART) imdStatN=3; + if (dashOp->imd.status & ERROR) imdStatN=4; + if (dashOp->imd.status & GROUNDERR) imdStatN=5; + const char IMDstr[7][12] = {"OFF","NORMAL","UNDERVOLT","SPEEDSTART","ERROR","GROUNDERR","INVALID"}; + sprintf(temp, "Status: %10s Resistance: %7.0fKohm Error: %3s", IMDstr[imdStatN], dashOp->imd.resistance/1.0e3, dashOp->imd.error?"ERR":"OK"); ADD_SPRINTF_LINE BLANK_LINE @@ -280,14 +284,6 @@ else sprintf(temp, "%s is OPEN.", switchNames[switches-1]); ADD_SPRINTF_LINE - BLANK_LINE - snprintf(temp, max_charsPerLine, " Telemetry %s", freeze?"(Viewing Freeze of Last Fault) ":""); - TITLE(temp) - sprintf(temp, "Channel 1 - MsgIn: %5d MsgOut: %5d %5.2f", dashOp->xbee1.msgIn, dashOp->xbee1.msgOut, dashOp->xbee1.rateOut); - ADD_SPRINTF_LINE - sprintf(temp, "Channel 2 - MsgIn: %5d MsgOut: %5d %5.2f", dashOp->xbee2.msgIn, dashOp->xbee2.msgOut, dashOp->xbee2.rateOut); - ADD_SPRINTF_LINE - // Erase screen every few counts to remove glitches static int count = 0; if (count % 50 == 0 || lastModeExtended != inExtendedMode) { @@ -334,56 +330,53 @@ // OPERATING DIAGNOSTICS // Error Frame - CAN_SINGLE(faultCode, SYS_ERROR_ID) + CAN_SINGLE(faultCode, FAULTCODE_TX_ID) // Mode - CAN_SINGLE(mode, SYS_MODE_ID) + CAN_SINGLE(mode, MODE_TX_ID) // Flags - CAN_SINGLE(signals, SYS_FLAGS_ID) + CAN_SINGLE(signals, SIGNALS_TX_ID) // Profile - char byte = (op->profileIndex != -1) ? op->profileIndex : 1<<6; // Mark the second to last bit of the byte if using Freeze profile (data[0]=64 for freeze, data[0]=0 for default) - byte |= (op->profileModded) ? 1<<7 : 0; // Mark the last bit of the byte if the profile was modified (OR'd with profile id from above) - SEND_CAN_SINGLE(byte, SYS_PROFILE_ID); + char byte=0; + byte = (op->profileIndex != -1)? 1 << op->profileIndex : 1<<6; + byte |= (op->profileModded) ? 1<<7 : 0; // Mark the last bit of the byte if the profile was modified (OR'd with profile id from above) + SEND_CAN_SINGLE(byte, PROFILE_TX_ID); // Time - CAN_PAIR(SysTime, startTime, SYS_TIME_ID) - - // Xbee1 Counter - CAN_PAIR(xbee1.msgIn, xbee1.msgOut, SYS_XBEE1_MSG_ID) - - // Xbee2 Counter - CAN_PAIR(xbee2.msgIn, xbee2.msgOut, SYS_XBEE2_MSG_ID) + CAN_PAIR(SysTime, startTime, TIME_TX_ID) // Internal temperature - CAN_SINGLE(internalTemp, SYS_TEMP_ID) + CAN_SINGLE(internalTemp, TEMP_TX_ID) // GLV Battery - CAN_SINGLE(glvBat.current, SYS_GLV_CURRENT_ID) - CAN_SINGLE(glvBat.capacity, SYS_GLV_CAPACITY_ID) - CAN_SINGLE(glvBat.Ah, SYS_GLV_AH_ID) - CAN_SINGLE(glvBat.SOC, SYS_GLV_SOC_ID) - CAN_SINGLE(glvBat.error, SYS_GLV_ERROR_ID) + CAN_SINGLE(glvBat.current, GLV_CURRENT_TX_ID) + CAN_SINGLE(glvBat.capacity, GLV_CAPACITY_TX_ID) + CAN_SINGLE(glvBat.Ah, GLV_AH_TX_ID) + CAN_SINGLE(glvBat.SOC, GLV_SOC_TX_ID) + CAN_SINGLE(glvBat.error, GLV_ERROR_TX_ID) // DC-DC Converter - CAN_SINGLE(dcdc.current, SYS_DCDC_CURRENT_ID) - CAN_SINGLE(dcdc.status, SYS_DCDC_STATUS_ID) + CAN_SINGLE(dcdc.current, DCDC_CURRENT_TX_ID) + CAN_SINGLE(dcdc.status, DCDC_STATUS_TX_ID) // PWM Channels - CAN_PAIR(dcdc.actual.fan1, dcdc.actual.fan2, SYS_PWM_FAN_ID) - CAN_PAIR(dcdc.actual.pump1, dcdc.actual.pump2, SYS_PWM_PUMP_ID) + CAN_PAIR(dcdc.actual.fan1, dcdc.actual.fan2, PWM_FAN_TX_ID) + CAN_PAIR(dcdc.actual.pump1, dcdc.actual.pump2, PWM_PUMP_TX_ID) // IMD - CAN_SINGLE(imd.status, SYS_IMD_STATUS_ID) - CAN_SINGLE(imd.resistance, SYS_IMD_RESIST_ID) + CAN_SINGLE(imd.status, IMD_STATUS_TX_ID) + CAN_SINGLE(imd.resistance, IMD_RESIST_TX_ID) // Latches - CAN_SINGLE(latch.imd, SYS_IMD_LATCH_ID) - CAN_SINGLE(latch.ams, SYS_AMS_LATCH_ID) + CAN_SINGLE(latch.imd, IMD_LATCH_TX_ID) + CAN_SINGLE(latch.ams, AMS_LATCH_TX_ID) // Shutdown Switches - CAN_SINGLE(switchState, SYS_SWITCHES_ID) + uint16_t tmp=0; + if (op->switchState != 0) tmp |= 1 << (op->switchState-1); + SEND_CAN_SINGLE(tmp, SWITCHES_TX_ID); osSignalSet((osThreadId)(tempData.wdtThreadId), 1<<4); // Signal watchdog thread Thread::wait(CAN_LOOP*1000);