Merge branch 'master' of https://github.com/intrepidcs/libicsneo
commit
0b4ffdbaad
|
|
@ -0,0 +1,26 @@
|
|||
# Intrepid Control System, Inc. neoVI Devices
|
||||
SUBSYSTEM=="usb", ATTRS{idVendor}=="093c", GROUP="users", MODE="0666"
|
||||
KERNEL=="ttyUSB?", ATTRS{idVendor}=="093c", GROUP="users", MODE="0666"
|
||||
KERNEL=="ttyACM?", ATTRS{idVendor}=="093c", GROUP="users", MODE="0666"
|
||||
|
||||
# neoVI ION/PLASMA PIDs are not in the latest ftdi_sio driver so lets make a
|
||||
# rule to add it when we see a new unclaimed device.
|
||||
# PLASMA = 0x0801, ION = 0x0901
|
||||
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", \
|
||||
ATTRS{idVendor}=="093c", ATTRS{idProduct}=="0801", \
|
||||
DRIVER=="", \
|
||||
RUN+="/sbin/modprobe -b ftdi_sio"
|
||||
ACTION=="add", SUBSYSTEM=="drivers", \
|
||||
ENV{DEVPATH}=="/bus/usb-serial/drivers/ftdi_sio", \
|
||||
ATTR{new_id}="093c 0801"
|
||||
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", \
|
||||
ATTRS{idVendor}=="093c", ATTRS{idProduct}=="0901", \
|
||||
DRIVER=="", \
|
||||
RUN+="/sbin/modprobe -b ftdi_sio"
|
||||
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_interface", \
|
||||
ATTRS{idVendor}=="093c", ATTRS{idProduct}=="1000", \
|
||||
DRIVER=="", \
|
||||
RUN+="/sbin/modprobe -b ftdi_sio"
|
||||
ACTION=="add", SUBSYSTEM=="drivers", \
|
||||
ENV{DEVPATH}=="/bus/usb-serial/drivers/ftdi_sio", \
|
||||
ATTR{new_id}="093c 0901"
|
||||
|
|
@ -122,3 +122,9 @@ The dependencies are as follows
|
|||
- GCC 4.7 or above, 4.8+ recommended
|
||||
- `libusb-1.0-0-dev`
|
||||
- `build-essential` is recommended
|
||||
|
||||
If you'd like to be able to run programs that use this library without being root, consider using the included udev rules
|
||||
|
||||
```
|
||||
$ sudo cp 99-intrepidcs.rules /etc/udev/rules.d/
|
||||
```
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ static void NeoMessageToSpyMessage(const neomessage_t& newmsg, icsSpyMessage& ol
|
|||
oldmsg.ExtraDataPtr = (void*)newmsg.data;
|
||||
memcpy(oldmsg.Data, newmsg.data, std::min(newmsg.length, (size_t)8));
|
||||
oldmsg.ArbIDOrHeader = *(uint32_t*)newmsg.header;
|
||||
oldmsg.ExtraDataPtrEnabled = newmsg.length > 8;
|
||||
oldmsg.NetworkID = (uint8_t)newmsg.netid; // Note: NetID remapping from the original API is not supported
|
||||
oldmsg.StatusBitField = newmsg.status.statusBitfield[0];
|
||||
oldmsg.StatusBitField2 = newmsg.status.statusBitfield[1];
|
||||
|
|
@ -187,24 +186,7 @@ int icsneoGetMessages(void* hObject, icsSpyMessage* pMsg, int* pNumberOfMessages
|
|||
}
|
||||
|
||||
int icsneoTxMessages(void* hObject, icsSpyMessage* pMsg, int lNetworkID, int lNumMessages) {
|
||||
if(!icsneoValidateHObject(hObject))
|
||||
return false;
|
||||
neodevice_t* device = (neodevice_t*)hObject;
|
||||
std::vector<uint8_t> data;
|
||||
neomessage_t newmsg = {};
|
||||
newmsg.netid = (uint16_t)lNetworkID;
|
||||
memcpy(newmsg.header, &pMsg[0].ArbIDOrHeader, sizeof(newmsg.header));
|
||||
for(int i = 0; i < lNumMessages; i++)
|
||||
data.insert(data.end(), pMsg[i].Data, pMsg[i].Data + pMsg[i].NumberBytesData);
|
||||
newmsg.data = data.data();
|
||||
newmsg.length = data.size();
|
||||
newmsg.status.statusBitfield[0] = pMsg[0].StatusBitField;
|
||||
newmsg.status.statusBitfield[1] = pMsg[0].StatusBitField2;
|
||||
newmsg.status.statusBitfield[2] = pMsg[0].StatusBitField3;
|
||||
newmsg.status.statusBitfield[3] = pMsg[0].StatusBitField4;
|
||||
if(pMsg[0].Protocol == SPY_PROTOCOL_CANFD)
|
||||
newmsg.status.canfdFDF = true;
|
||||
return icsneo_transmit(device, &newmsg);
|
||||
return icsneoTxMessagesEx(hObject, pMsg, lNetworkID, lNumMessages, nullptr, 0);
|
||||
}
|
||||
|
||||
int icsneoTxMessagesEx(void* hObject, icsSpyMessage* pMsg, unsigned int lNetworkID, unsigned int lNumMessages, unsigned int* NumTxed, unsigned int zero2) {
|
||||
|
|
@ -212,6 +194,9 @@ int icsneoTxMessagesEx(void* hObject, icsSpyMessage* pMsg, unsigned int lNetwork
|
|||
return false;
|
||||
neodevice_t* device = (neodevice_t*)hObject;
|
||||
neomessage_t newmsg;
|
||||
unsigned int temp = 0;
|
||||
if(NumTxed == nullptr)
|
||||
NumTxed = &temp;
|
||||
*NumTxed = 0;
|
||||
for(unsigned int i = 0; i < lNumMessages; i++) {
|
||||
const icsSpyMessage& oldmsg = pMsg[i];
|
||||
|
|
@ -219,7 +204,7 @@ int icsneoTxMessagesEx(void* hObject, icsSpyMessage* pMsg, unsigned int lNetwork
|
|||
newmsg.netid = (uint16_t)lNetworkID;
|
||||
memcpy(newmsg.header, &oldmsg.ArbIDOrHeader, sizeof(newmsg.header));
|
||||
newmsg.length = oldmsg.NumberBytesData | (oldmsg.NodeID << 8);
|
||||
if (oldmsg.ExtraDataPtrEnabled)
|
||||
if (oldmsg.ExtraDataPtr != nullptr)
|
||||
newmsg.data = reinterpret_cast<const uint8_t*>(oldmsg.ExtraDataPtr);
|
||||
else
|
||||
newmsg.data = oldmsg.Data;
|
||||
|
|
|
|||
Loading…
Reference in New Issue