Compare commits
2 Commits
bb711ae7e2
...
44d0e3de64
| Author | SHA1 | Date |
|---|---|---|
|
|
44d0e3de64 | |
|
|
023f5aa089 |
|
|
@ -32,6 +32,7 @@ pybind11_add_module(icsneopy
|
|||
icsneopy/communication/message/mdiomessage.cpp
|
||||
icsneopy/communication/message/gptpstatusmessage.cpp
|
||||
icsneopy/communication/message/allmacaddressesmessage.cpp
|
||||
icsneopy/communication/message/apperrormessage.cpp
|
||||
icsneopy/communication/message/ethernetstatusmessage.cpp
|
||||
icsneopy/communication/message/spimessage.cpp
|
||||
icsneopy/communication/message/scriptstatusmessage.cpp
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
#include <pybind11/pybind11.h>
|
||||
#include <pybind11/stl.h>
|
||||
#include <pybind11/native_enum.h>
|
||||
|
||||
#include "icsneo/communication/message/apperrormessage.h"
|
||||
|
||||
namespace icsneo {
|
||||
|
||||
void init_errortypes(pybind11::module_& m) {
|
||||
pybind11::native_enum<AppErrorType>(m, "AppErrorType", "enum.IntEnum")
|
||||
.value("RxMessagesFull", AppErrorType::AppErrorRxMessagesFull)
|
||||
.value("TxMessagesFull", AppErrorType::AppErrorTxMessagesFull)
|
||||
.value("TxReportMessagesFull", AppErrorType::AppErrorTxReportMessagesFull)
|
||||
.value("BadCommWithDspIC", AppErrorType::AppErrorBadCommWithDspIC)
|
||||
.value("DriverOverflow", AppErrorType::AppErrorDriverOverflow)
|
||||
.value("PCBuffOverflow", AppErrorType::AppErrorPCBuffOverflow)
|
||||
.value("PCChksumError", AppErrorType::AppErrorPCChksumError)
|
||||
.value("PCMissedByte", AppErrorType::AppErrorPCMissedByte)
|
||||
.value("PCOverrunError", AppErrorType::AppErrorPCOverrunError)
|
||||
.value("SettingFailure", AppErrorType::AppErrorSettingFailure)
|
||||
.value("TooManySelectedNetworks", AppErrorType::AppErrorTooManySelectedNetworks)
|
||||
.value("NetworkNotEnabled", AppErrorType::AppErrorNetworkNotEnabled)
|
||||
.value("RtcNotCorrect", AppErrorType::AppErrorRtcNotCorrect)
|
||||
.value("LoadedDefaultSettings", AppErrorType::AppErrorLoadedDefaultSettings)
|
||||
.value("FeatureNotUnlocked", AppErrorType::AppErrorFeatureNotUnlocked)
|
||||
.value("FeatureRtcCmdDropped", AppErrorType::AppErrorFeatureRtcCmdDropped)
|
||||
.value("TxMessagesFlushed", AppErrorType::AppErrorTxMessagesFlushed)
|
||||
.value("TxMessagesHalfFull", AppErrorType::AppErrorTxMessagesHalfFull)
|
||||
.value("NetworkNotValid", AppErrorType::AppErrorNetworkNotValid)
|
||||
.value("TxInterfaceNotImplemented", AppErrorType::AppErrorTxInterfaceNotImplemented)
|
||||
.value("TxMessagesCommEnableIsOff", AppErrorType::AppErrorTxMessagesCommEnableIsOff)
|
||||
.value("RxFilterMatchCountExceeded", AppErrorType::AppErrorRxFilterMatchCountExceeded)
|
||||
.value("EthPreemptionNotEnabled", AppErrorType::AppErrorEthPreemptionNotEnabled)
|
||||
.value("TxNotSupportedInMode", AppErrorType::AppErrorTxNotSupportedInMode)
|
||||
.value("JumboFramesNotSupported", AppErrorType::AppErrorJumboFramesNotSupported)
|
||||
.value("EthernetIpFragment", AppErrorType::AppErrorEthernetIpFragment)
|
||||
.value("TxMessagesUnderrun", AppErrorType::AppErrorTxMessagesUnderrun)
|
||||
.value("DeviceFanFailure", AppErrorType::AppErrorDeviceFanFailure)
|
||||
.value("DeviceOvertemperature", AppErrorType::AppErrorDeviceOvertemperature)
|
||||
.value("TxMessageIndexOutOfRange", AppErrorType::AppErrorTxMessageIndexOutOfRange)
|
||||
.value("UndersizedFrameDropped", AppErrorType::AppErrorUndersizedFrameDropped)
|
||||
.value("OversizedFrameDropped", AppErrorType::AppErrorOversizedFrameDropped)
|
||||
.value("WatchdogEvent", AppErrorType::AppErrorWatchdogEvent)
|
||||
.value("SystemClockFailure", AppErrorType::AppErrorSystemClockFailure)
|
||||
.value("SystemClockRecovered", AppErrorType::AppErrorSystemClockRecovered)
|
||||
.value("SystemPeripheralReset", AppErrorType::AppErrorSystemPeripheralReset)
|
||||
.value("SystemCommunicationFailure", AppErrorType::AppErrorSystemCommunicationFailure)
|
||||
.value("TxMessagesUnsupportedSourceOrPacketId", AppErrorType::AppErrorTxMessagesUnsupportedSourceOrPacketId)
|
||||
.value("WbmsManagerConnectFailed", AppErrorType::AppErrorWbmsManagerConnectFailed)
|
||||
.value("WbmsManagerConnectBadState", AppErrorType::AppErrorWbmsManagerConnectBadState)
|
||||
.value("WbmsManagerConnectTimeout", AppErrorType::AppErrorWbmsManagerConnectTimeout)
|
||||
.value("FailedToInitializeLoggerDisk", AppErrorType::AppErrorFailedToInitializeLoggerDisk)
|
||||
.value("InvalidSetting", AppErrorType::AppErrorInvalidSetting)
|
||||
.value("SystemFailureRequestedReset", AppErrorType::AppErrorSystemFailureRequestedReset)
|
||||
.value("PortKeyMistmatch", AppErrorType::AppErrorPortKeyMistmatch)
|
||||
.value("BusFailure", AppErrorType::AppErrorBusFailure)
|
||||
.value("TapOverflow", AppErrorType::AppErrorTapOverflow)
|
||||
.value("EthTxNoLink", AppErrorType::AppErrorEthTxNoLink)
|
||||
.value("ErrorBufferOverflow", AppErrorType::AppErrorErrorBufferOverflow)
|
||||
.value("NoError", AppErrorType::AppNoError)
|
||||
.finalize();
|
||||
}
|
||||
|
||||
void init_apperrormessage(pybind11::module_& m) {
|
||||
init_errortypes(m);
|
||||
pybind11::classh<AppErrorMessage, Message>(m, "AppErrorMessage")
|
||||
.def("get_app_error_type", &AppErrorMessage::getAppErrorType)
|
||||
.def("get_app_error_string", &AppErrorMessage::getAppErrorString);
|
||||
}
|
||||
|
||||
} // namespace icsneo
|
||||
|
|
@ -20,6 +20,7 @@ void init_linmessage(pybind11::module_&);
|
|||
void init_tc10statusmessage(pybind11::module_&);
|
||||
void init_gptpstatusmessage(pybind11::module_&);
|
||||
void init_allmacaddressesmessage(pybind11::module_&);
|
||||
void init_apperrormessage(pybind11::module_&);
|
||||
void init_mdiomessage(pybind11::module_&);
|
||||
void init_spimessage(pybind11::module_&);
|
||||
void init_ethernetstatusmessage(pybind11::module_&);
|
||||
|
|
@ -61,6 +62,7 @@ PYBIND11_MODULE(icsneopy, m) {
|
|||
init_tc10statusmessage(m);
|
||||
init_gptpstatusmessage(m);
|
||||
init_allmacaddressesmessage(m);
|
||||
init_apperrormessage(m);
|
||||
init_mdiomessage(m);
|
||||
init_ethernetstatusmessage(m);
|
||||
init_macsecconfig(m);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
import icsneopy
|
||||
import time
|
||||
|
||||
#
|
||||
# App errors are responses from the device indicating internal runtime errors
|
||||
# NOTE: To trigger the app error in this example, disable the DW CAN 01 network on the device
|
||||
# (e.g. with ICS Device Manager)
|
||||
#
|
||||
def apperror():
|
||||
devices = icsneopy.find_all_devices()
|
||||
|
||||
if len(devices) == 0:
|
||||
print("no devices found")
|
||||
return False
|
||||
|
||||
device = devices[0]
|
||||
print(f"selected {device}")
|
||||
|
||||
def on_apperror(message):
|
||||
if message.get_app_error_type() != icsneopy.AppErrorType.NetworkNotEnabled:
|
||||
print("unexpected app error type")
|
||||
return
|
||||
print(message.get_app_error_string())
|
||||
|
||||
filter = icsneopy.MessageFilter(icsneopy.Message.Type.AppError)
|
||||
callback = icsneopy.MessageCallback(on_apperror, filter)
|
||||
device.add_message_callback(callback)
|
||||
|
||||
if not device.open():
|
||||
print("unable to open device")
|
||||
return False
|
||||
|
||||
if not device.go_online():
|
||||
print("unable to go online")
|
||||
return False
|
||||
|
||||
frame = icsneopy.CANMessage()
|
||||
frame.network = icsneopy.Network(icsneopy.Network.NetID.DWCAN_01)
|
||||
frame.arbid = 0x22
|
||||
frame.data = (0xAA, 0xBB, 0xCC)
|
||||
|
||||
if not device.transmit(frame):
|
||||
print("failed to transmit frame")
|
||||
return False
|
||||
|
||||
time.sleep(2) # wait for error to come back
|
||||
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
apperror()
|
||||
|
|
@ -217,7 +217,7 @@ public:
|
|||
protected:
|
||||
RADGigastar2(neodevice_t neodevice, const driver_factory_t &makeDriver) : Device(neodevice)
|
||||
{
|
||||
initialize<RADGigastar2Settings>(makeDriver);
|
||||
initialize<RADGigastar2Settings, Disk::ExtExtractorDiskReadDriver, Disk::NeoMemoryDiskDriver>(makeDriver);
|
||||
}
|
||||
|
||||
void setupPacketizer(Packetizer &packetizer) override
|
||||
|
|
|
|||
Loading…
Reference in New Issue