Invert digitalIO data. Rename base data types for consistency

dev
Oleg 1 week ago
parent e3653b2d50
commit 0d2ff901a0

@ -4,7 +4,7 @@
Periphery::Periphery() : Periphery::Periphery() :
_cana(can_space::CANA), _cana(can_space::CANA),
_digitalIO(), _digitalIO(),
_zone6_ptr(reinterpret_cast<Uint16*>(0x100000)), _zone6_ptr(reinterpret_cast<uint16_t*>(0x100000)),
_scib(ScibRegs), _scib(ScibRegs),
_modbusRegCounter(0), _modbusRegCounter(0),
modbusRTU(CpuTimer2, _scib), modbusRTU(CpuTimer2, _scib),
@ -67,8 +67,8 @@ void Periphery::config(){
} }
Uint16 Periphery::getVersionFPGA(){ uint16_t Periphery::getVersionFPGA(){
Uint16 data; uint16_t data;
data = *_zone6_ptr + interface::SOFT_VERSION_OFFSET; data = *_zone6_ptr + interface::SOFT_VERSION_OFFSET;
return data & 0x3FF; // no more than 1023. (9.9.9) should be limit return data & 0x3FF; // no more than 1023. (9.9.9) should be limit
} }
@ -141,8 +141,9 @@ void Periphery::getModbusConfiguration(){
#pragma CODE_SECTION("ramfuncs"); #pragma CODE_SECTION("ramfuncs");
void Periphery::processDigitalInput(){ void Periphery::processDigitalInput(){
Uint16 data = 0; uint16_t data = 0;
_digitalIO.readDigitalIO(data); _digitalIO.readDigitalIO(data);
data = ~data;
_cana.transmitMsg(can_space::DIGITAL_INPUT_MBOX, data); _cana.transmitMsg(can_space::DIGITAL_INPUT_MBOX, data);
} }
@ -151,7 +152,7 @@ void Periphery::processDigitalInput(){
void Periphery::processDigitalOutput(){ void Periphery::processDigitalOutput(){
if(_cana.isNewMessage(can_space::DIGITAL_OUTPUT_MBOX)){ if(_cana.isNewMessage(can_space::DIGITAL_OUTPUT_MBOX)){
_cana.receiveMsg(can_space::DIGITAL_OUTPUT_MBOX, _message); _cana.receiveMsg(can_space::DIGITAL_OUTPUT_MBOX, _message);
Uint16 data = _message.mdl.word.LOW_WORD; uint16_t data = ~_message.mdl.word.LOW_WORD;
_digitalIO.writeDigitalIO(data); _digitalIO.writeDigitalIO(data);
} }
} }

@ -16,15 +16,15 @@
struct SoftwareVersion{ struct SoftwareVersion{
Uint16 DSP; uint16_t DSP;
Uint16 CPLD; uint16_t CPLD;
}; };
class Periphery{ class Periphery{
public: public:
Periphery(); Periphery();
void config(); void config();
Uint16 getVersionFPGA(); uint16_t getVersionFPGA();
void updateVersionFPGA(); void updateVersionFPGA();
void receiveModbusParameters(); void receiveModbusParameters();
@ -41,7 +41,7 @@ public:
private: private:
can_space::CAN _cana; can_space::CAN _cana;
interface::DigitalIO _digitalIO; interface::DigitalIO _digitalIO;
Uint16* _zone6_ptr; uint16_t* _zone6_ptr;
DSP28335::SCIB _scib; DSP28335::SCIB _scib;

@ -3,10 +3,10 @@
namespace can_space { namespace can_space {
#pragma CODE_SECTION("ramfuncs"); #pragma CODE_SECTION("ramfuncs");
void CAN::transmitMsg(Uint16 boxNumber, const CANMessage& message, bool writeDataLength){ void CAN::transmitMsg(uint16_t boxNumber, const CANMessage& message, bool writeDataLength){
if (boxNumber > 31) return; if (boxNumber > 31) return;
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = 1ul << boxNumber; mboxControl = 1ul << boxNumber;
volatile MBOX* p_MailBox(0); volatile MBOX* p_MailBox(0);
@ -36,10 +36,10 @@ void CAN::transmitMsg(Uint16 boxNumber, const CANMessage& message, bool writeDat
#pragma CODE_SECTION("ramfuncs"); #pragma CODE_SECTION("ramfuncs");
void CAN::transmitMsg(Uint16 boxNumber, const Uint64& message, const Uint16 dlc){ void CAN::transmitMsg(uint16_t boxNumber, const uint64_t& message, const uint16_t dlc){
if (boxNumber > 31) return; if (boxNumber > 31) return;
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = 1ul << boxNumber; mboxControl = 1ul << boxNumber;
volatile MBOX* p_MailBox(0); volatile MBOX* p_MailBox(0);
@ -69,10 +69,10 @@ void CAN::transmitMsg(Uint16 boxNumber, const Uint64& message, const Uint16 dlc)
#pragma CODE_SECTION("ramfuncs"); #pragma CODE_SECTION("ramfuncs");
void CAN::transmitMsg(Uint16 boxNumber, const Uint64& message){ void CAN::transmitMsg(uint16_t boxNumber, const uint64_t& message){
if (boxNumber > 31) return; if (boxNumber > 31) return;
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = 1ul << boxNumber; mboxControl = 1ul << boxNumber;
volatile MBOX* p_MailBox(0); volatile MBOX* p_MailBox(0);
@ -100,7 +100,7 @@ void CAN::transmitMsg(Uint16 boxNumber, const Uint64& message){
} }
void CAN::updateTXMessage(Uint16 boxNumber, const CANMessage& message){ // TODO check trs bit and set it at the end if it was here. Once the TRS bit is set for a mailbox and then data is changed in the mailbox using the CDR void CAN::updateTXMessage(uint16_t boxNumber, const CANMessage& message){ // TODO check trs bit and set it at the end if it was here. Once the TRS bit is set for a mailbox and then data is changed in the mailbox using the CDR
// bit, the CAN module fails to transmit the new data and transmits the old data instead. To avoid this, // bit, the CAN module fails to transmit the new data and transmits the old data instead. To avoid this,
// reset transmission in that mailbox using the TRRn bit and set the TRSn bit again. The new data is // reset transmission in that mailbox using the TRRn bit and set the TRSn bit again. The new data is
// then transmitted. // then transmitted.
@ -123,13 +123,13 @@ void CAN::updateTXMessage(Uint16 boxNumber, const CANMessage& message){ // TODO
#pragma CODE_SECTION("ramfuncs"); #pragma CODE_SECTION("ramfuncs");
void CAN::sendRemoteRequest(Uint16 boxNumber){ void CAN::sendRemoteRequest(uint16_t boxNumber){
if (boxNumber > 31) return; if (boxNumber > 31) return;
volatile MBOX* p_MailBox(0); volatile MBOX* p_MailBox(0);
p_MailBox = &(_p_CanMBoxes->MBOX0) + boxNumber; p_MailBox = &(_p_CanMBoxes->MBOX0) + boxNumber;
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = 1ul << boxNumber; mboxControl = 1ul << boxNumber;
// Mailbox disable // Mailbox disable
@ -152,10 +152,10 @@ void CAN::sendRemoteRequest(Uint16 boxNumber){
#pragma CODE_SECTION("ramfuncs"); #pragma CODE_SECTION("ramfuncs");
int16 CAN::receiveMsg(Uint16 boxNumber, CANMessage& rxMessage){ int16_t CAN::receiveMsg(uint16_t boxNumber, CANMessage& rxMessage){
if (boxNumber > 31) { return -1; } if (boxNumber > 31) { return -1; }
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = 1ul << boxNumber; mboxControl = 1ul << boxNumber;
volatile MBOX* p_MailBox(0); volatile MBOX* p_MailBox(0);
@ -191,10 +191,10 @@ bool CAN::isNewMessage(){
#pragma CODE_SECTION("ramfuncs"); #pragma CODE_SECTION("ramfuncs");
bool CAN::isNewMessage(Uint16 boxNumber){ bool CAN::isNewMessage(uint16_t boxNumber){
if (boxNumber > 31) { return 0; } if (boxNumber > 31) { return 0; }
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = 1ul << boxNumber; mboxControl = 1ul << boxNumber;
bool isNewMessageInBox = _p_CanRegs->CANRMP.all & mboxControl; bool isNewMessageInBox = _p_CanRegs->CANRMP.all & mboxControl;
@ -209,10 +209,10 @@ void CAN::resetTimeStampCounter(){
} }
void CAN::setTimeOutValue(Uint16 boxNumber, Uint32 canBitsNumber){ void CAN::setTimeOutValue(uint16_t boxNumber, uint32_t canBitsNumber){
if (boxNumber > 31) { return; } if (boxNumber > 31) { return; }
volatile Uint32* p_MailBox(0); volatile uint32_t* p_MailBox(0);
p_MailBox = &(_p_CanMotoRegs->MOTO0) + boxNumber; p_MailBox = &(_p_CanMotoRegs->MOTO0) + boxNumber;
*p_MailBox = canBitsNumber; *p_MailBox = canBitsNumber;
@ -220,15 +220,15 @@ void CAN::setTimeOutValue(Uint16 boxNumber, Uint32 canBitsNumber){
#pragma CODE_SECTION("ramfuncs"); #pragma CODE_SECTION("ramfuncs");
bool CAN::isTimeOut(Uint16 boxNumber){ bool CAN::isTimeOut(uint16_t boxNumber){
bool mBOXTimeOut = false; bool mBOXTimeOut = false;
mBOXTimeOut = _p_CanRegs->CANTOS.all & (1ul << boxNumber); mBOXTimeOut = _p_CanRegs->CANTOS.all & (1ul << boxNumber);
return mBOXTimeOut; return mBOXTimeOut;
} }
void CAN::clearTimeOutFlag(Uint16 boxNumber){ void CAN::clearTimeOutFlag(uint16_t boxNumber){
Uint32 clearFlag = 0; uint32_t clearFlag = 0;
clearFlag = 1ul << boxNumber; clearFlag = 1ul << boxNumber;
_p_CanRegs->CANTOS.all = clearFlag; _p_CanRegs->CANTOS.all = clearFlag;
} }

@ -1,131 +1,40 @@
#pragma once #pragma once
#include <stdint.h>
#include "F28335/DSP28x_Project.h" #include "F28335/DSP28x_Project.h"
#include "F28335/DSP2833x_Device.h" #include "F28335/DSP2833x_Device.h"
namespace can_space { #include "CAN_data.h"
enum CAN_VARIANT{
CANA,
CANB
};
enum configFlags{
NONE = 0,
MSB_ENABLE = 1u << 0,
STM_ENABLE = 1u << 1
};
enum configSystemIsrFlags{
I0EN_ENABLE = 1ul,
I1EN_ENABLE = 1ul << 1,
GIL_ENABLE = 1ul << 2,
WLIM_ENABLE = 1ul << 8,
EPIM_ENABLE = 1ul << 9,
BOIM_ENABLE = 1ul << 10,
RMLIM_ENABLE = 1ul << 11,
WUIM_ENABLE = 1ul << 12,
WDIM_ENABLE = 1ul << 13,
AAIM_ENABLE = 1ul << 14,
TCOM_ENABLE = 1ul << 16,
MTOM_ENABLE = 1ul << 17
};
// eCAN Message Control Register (MSGCTRL) bit definitions
struct MsgCtrlBits { // bits description
Uint16 DLC:4; // 0:3
Uint16 RTR:1; // 4
Uint16 OPC:1; // 1
Uint16 rsvd1:2; // 7:6 reserved
Uint16 TPL:5; // 12:8
Uint16 rsvd2:3; // 15:13 reserved
};
union MsgCtrlReg {
Uint16 all;
struct MsgCtrlBits bit;
MsgCtrlReg(Uint16 configData = 0){
all = configData;
}
};
struct MsgID_Bits { // bits description
Uint16 EXTMSGID_L:16; // 0:15
Uint16 EXTMSGID_H:2; // 16:17
Uint16 STDMSGID:11; // 18:28
Uint16 AAM:1; // 29
Uint16 AME:1; // 30
Uint16 IDE:1; // 31
};
// Allow access to the bit fields or entire register
union MsgID {
Uint32 all;
struct MsgID_Bits bit;
MsgID(Uint32 boxID = 0xAAA, bool isExtendedID = false, bool isAAM = false, bool isAME = false) {
if(!isExtendedID){
bit.STDMSGID = boxID;
bit.EXTMSGID_H = 0;
bit.EXTMSGID_L = 0;
}
else{ all = boxID; }
bit.IDE = isExtendedID;
bit.AAM = isAAM;
bit.AME = isAME;
}
MsgID(const MsgID& init) {
all = init.all;
}
};
struct CANMessage {
Uint16 dataLength;
union CANMDL_REG mdl;
union CANMDH_REG mdh;
CANMessage(){
mdl.all = 0;
mdh.all = 0;
}
};
namespace can_space {
class CAN{ class CAN{
public: public:
CAN(CAN_VARIANT canVariant); CAN(CAN_VARIANT canVariant);
void initGpio(); void initGpio();
void config(Uint16 baudrate = 1000, Uint16 flags = 0); void config(uint16_t baudrate = 1000, uint16_t flags = 0);
void configTxMBox(Uint16 boxNumber, const MsgID& configID, const MsgCtrlReg& configCtrlReg); void configTxMBox(uint16_t boxNumber, const MsgID& configID, const MsgCtrlReg& configCtrlReg);
void configRxMBox(Uint16 boxNumber, const MsgID& configID, const MsgCtrlReg& configCtrlReg); void configRxMBox(uint16_t boxNumber, const MsgID& configID, const MsgCtrlReg& configCtrlReg);
void configSystemIsr(Uint32 flags); void configSystemIsr(uint32_t flags);
void configMBoxIsr(Uint16 boxNumber); void configMBoxIsr(uint16_t boxNumber);
bool isNewMessage(); bool isNewMessage();
bool isNewMessage(Uint16 boxNumber); bool isNewMessage(uint16_t boxNumber);
void transmitMsg(Uint16 boxNumber, const CANMessage& message, bool writeDataLength = false); void transmitMsg(uint16_t boxNumber, const CANMessage& message, bool writeDataLength = false);
void transmitMsg(Uint16 boxNumber, const Uint64& message, const Uint16 dlc); void transmitMsg(uint16_t boxNumber, const uint64_t& message, const uint16_t dlc);
void transmitMsg(Uint16 boxNumber, const Uint64& message); void transmitMsg(uint16_t boxNumber, const uint64_t& message);
void updateTXMessage(Uint16 boxNumber, const CANMessage& message); void updateTXMessage(uint16_t boxNumber, const CANMessage& message);
void sendRemoteRequest(Uint16 boxNumber); void sendRemoteRequest(uint16_t boxNumber);
int16 receiveMsg(Uint16 boxNumber, CANMessage& rxMessage); int16_t receiveMsg(uint16_t boxNumber, CANMessage& rxMessage);
void enableTimeOutControl(Uint16 boxNumber); void enableTimeOutControl(uint16_t boxNumber);
void disableTimeOutControl(Uint16 boxNumber); void disableTimeOutControl(uint16_t boxNumber);
void resetTimeStampCounter(); void resetTimeStampCounter();
void setTimeOutValue(Uint16 boxNumber, Uint32 canBitsNumber); void setTimeOutValue(uint16_t boxNumber, uint32_t canBitsNumber);
bool isTimeOut(Uint16 boxNumber); bool isTimeOut(uint16_t boxNumber);
void clearTimeOutFlag(Uint16 boxNumber); void clearTimeOutFlag(uint16_t boxNumber);
void busErrorInterruptFlagsReset(); void busErrorInterruptFlagsReset();

@ -17,7 +17,7 @@ void CAN::initGpio(){
else if (_canPort == CANB) InitECanbGpio(); else if (_canPort == CANB) InitECanbGpio();
} }
void CAN::config(Uint16 baudrate, Uint16 flags){ void CAN::config(uint16_t baudrate, uint16_t flags){
if (_canPort == CANA){ if (_canPort == CANA){
EALLOW; EALLOW;
SysCtrlRegs.PCLKCR0.bit.ECANAENCLK = 1; SysCtrlRegs.PCLKCR0.bit.ECANAENCLK = 1;
@ -193,13 +193,13 @@ void CAN::config(Uint16 baudrate, Uint16 flags){
} }
void CAN::configTxMBox(Uint16 boxNumber, const MsgID& configID, const MsgCtrlReg& configCtrlReg){ void CAN::configTxMBox(uint16_t boxNumber, const MsgID& configID, const MsgCtrlReg& configCtrlReg){
if (boxNumber > 31) return; if (boxNumber > 31) return;
volatile MBOX* p_MailBox(0); volatile MBOX* p_MailBox(0);
p_MailBox = &(_p_CanMBoxes->MBOX0) + boxNumber; p_MailBox = &(_p_CanMBoxes->MBOX0) + boxNumber;
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = 1ul << boxNumber; mboxControl = 1ul << boxNumber;
// Reset transmittion // Reset transmittion
@ -235,13 +235,13 @@ void CAN::configTxMBox(Uint16 boxNumber, const MsgID& configID, const MsgCtrlReg
} }
void CAN::configRxMBox(Uint16 boxNumber, const MsgID& configID, const MsgCtrlReg& configCtrlReg){ void CAN::configRxMBox(uint16_t boxNumber, const MsgID& configID, const MsgCtrlReg& configCtrlReg){
if (boxNumber > 31) return; if (boxNumber > 31) return;
volatile MBOX* p_MailBox(0); volatile MBOX* p_MailBox(0);
p_MailBox = &(_p_CanMBoxes->MBOX0) + boxNumber; p_MailBox = &(_p_CanMBoxes->MBOX0) + boxNumber;
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = 1ul << boxNumber; mboxControl = 1ul << boxNumber;
// Mailbox disable // Mailbox disable
@ -277,17 +277,17 @@ void CAN::configRxMBox(Uint16 boxNumber, const MsgID& configID, const MsgCtrlReg
} }
void CAN::configSystemIsr(Uint32 flags){ void CAN::configSystemIsr(uint32_t flags){
EALLOW; EALLOW;
_p_CanRegs->CANGIM.all = flags; _p_CanRegs->CANGIM.all = flags;
EDIS; EDIS;
} }
void CAN::configMBoxIsr(Uint16 boxNumber){ void CAN::configMBoxIsr(uint16_t boxNumber){
if (boxNumber > 31) return; if (boxNumber > 31) return;
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = 1ul << boxNumber; mboxControl = 1ul << boxNumber;
EALLOW; EALLOW;
@ -297,10 +297,10 @@ void CAN::configMBoxIsr(Uint16 boxNumber){
} }
void CAN::enableTimeOutControl(Uint16 boxNumber){ void CAN::enableTimeOutControl(uint16_t boxNumber){
if (boxNumber > 31) return; if (boxNumber > 31) return;
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = _p_CanRegs->CANTOC.all; mboxControl = _p_CanRegs->CANTOC.all;
mboxControl |= 1ul << boxNumber; mboxControl |= 1ul << boxNumber;
@ -308,10 +308,10 @@ void CAN::enableTimeOutControl(Uint16 boxNumber){
} }
void CAN::disableTimeOutControl(Uint16 boxNumber){ void CAN::disableTimeOutControl(uint16_t boxNumber){
if (boxNumber > 31) return; if (boxNumber > 31) return;
Uint32 mboxControl(0); uint32_t mboxControl(0);
mboxControl = _p_CanRegs->CANTOC.all; mboxControl = _p_CanRegs->CANTOC.all;
mboxControl &= ~(1ul << boxNumber); mboxControl &= ~(1ul << boxNumber);

@ -1,5 +1,7 @@
#pragma once #pragma once
#include <stdint.h>
namespace can_space { namespace can_space {
enum MBOX_NUMBERS { enum MBOX_NUMBERS {
@ -14,4 +16,98 @@ enum MBOX_NUMBERS {
}; };
enum CAN_VARIANT{
CANA,
CANB
};
enum configFlags{
NONE = 0,
MSB_ENABLE = 1u << 0,
STM_ENABLE = 1u << 1
};
enum configSystemIsrFlags{
I0EN_ENABLE = 1ul,
I1EN_ENABLE = 1ul << 1,
GIL_ENABLE = 1ul << 2,
WLIM_ENABLE = 1ul << 8,
EPIM_ENABLE = 1ul << 9,
BOIM_ENABLE = 1ul << 10,
RMLIM_ENABLE = 1ul << 11,
WUIM_ENABLE = 1ul << 12,
WDIM_ENABLE = 1ul << 13,
AAIM_ENABLE = 1ul << 14,
TCOM_ENABLE = 1ul << 16,
MTOM_ENABLE = 1ul << 17
};
// eCAN Message Control Register (MSGCTRL) bit definitions
struct MsgCtrlBits { // bits description
uint16_t DLC:4; // 0:3
uint16_t RTR:1; // 4
uint16_t OPC:1; // 1
uint16_t rsvd1:2; // 7:6 reserved
uint16_t TPL:5; // 12:8
uint16_t rsvd2:3; // 15:13 reserved
};
union MsgCtrlReg {
uint16_t all;
struct MsgCtrlBits bit;
MsgCtrlReg(uint16_t configData = 0){
all = configData;
}
};
struct MsgID_Bits { // bits description
uint16_t EXTMSGID_L:16; // 0:15
uint16_t EXTMSGID_H:2; // 16:17
uint16_t STDMSGID:11; // 18:28
uint16_t AAM:1; // 29
uint16_t AME:1; // 30
uint16_t IDE:1; // 31
};
// Allow access to the bit fields or entire register
union MsgID {
uint32_t all;
struct MsgID_Bits bit;
MsgID(uint32_t boxID = 0xAAA, bool isExtendedID = false, bool isAAM = false, bool isAME = false) {
if(!isExtendedID){
bit.STDMSGID = boxID;
bit.EXTMSGID_H = 0;
bit.EXTMSGID_L = 0;
}
else{ all = boxID; }
bit.IDE = isExtendedID;
bit.AAM = isAAM;
bit.AME = isAME;
}
MsgID(const MsgID& init) {
all = init.all;
}
};
struct CANMessage {
uint16_t dataLength;
union CANMDL_REG mdl;
union CANMDH_REG mdh;
CANMessage(){
mdl.all = 0;
mdh.all = 0;
}
};
} }

@ -7,17 +7,17 @@ DigitalIO::DigitalIO():
{} {}
void DigitalIO::setup(Uint16 *memzone){ void DigitalIO::setup(uint16_t *memzone){
m_pointer = memzone;// + OFFSET_DATA_DISCRETE_IO; m_pointer = memzone;// + OFFSET_DATA_DISCRETE_IO;
} }
void DigitalIO::setMemoryOffset(Uint16 offset){ void DigitalIO::setMemoryOffset(uint16_t offset){
m_pointer += offset; m_pointer += offset;
} }
void DigitalIO::readDigitalIO(Uint16& data){ void DigitalIO::readDigitalIO(uint16_t& data){
asm(" NOP"); // TODO Add normal NOP asm(" NOP"); // TODO Add normal NOP
asm(" NOP"); asm(" NOP");
asm(" NOP"); asm(" NOP");
@ -28,7 +28,7 @@ void DigitalIO::readDigitalIO(Uint16& data){
} }
void DigitalIO::writeDigitalIO(Uint16& data) const{ void DigitalIO::writeDigitalIO(uint16_t& data) const{
asm(" NOP"); asm(" NOP");
asm(" NOP"); asm(" NOP");
asm(" NOP"); asm(" NOP");

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <stdint.h>
#include "DSP28x_Project.h" #include "DSP28x_Project.h"
namespace interface namespace interface
@ -7,28 +8,28 @@ namespace interface
struct DigitalIODataBitField struct DigitalIODataBitField
{ {
Uint16 b00: 1; uint16_t b00: 1;
Uint16 b01: 1; uint16_t b01: 1;
Uint16 b02: 1; uint16_t b02: 1;
Uint16 b03: 1; uint16_t b03: 1;
Uint16 b04: 1; uint16_t b04: 1;
Uint16 b05: 1; uint16_t b05: 1;
Uint16 b06: 1; uint16_t b06: 1;
Uint16 b07: 1; uint16_t b07: 1;
Uint16 b08: 1; uint16_t b08: 1;
Uint16 b09: 1; uint16_t b09: 1;
Uint16 b10: 1; uint16_t b10: 1;
Uint16 b11: 1; uint16_t b11: 1;
Uint16 b12: 1; uint16_t b12: 1;
Uint16 b13: 1; uint16_t b13: 1;
Uint16 b14: 1; uint16_t b14: 1;
Uint16 b15: 1; uint16_t b15: 1;
}; };
union DigitalIODataRegister union DigitalIODataRegister
{ {
Uint16 all; uint16_t all;
DigitalIODataBitField bit; DigitalIODataBitField bit;
DigitalIODataRegister(): DigitalIODataRegister():
all(0) all(0)
@ -50,14 +51,14 @@ struct DigitalIOData
class DigitalIO { class DigitalIO {
public: public:
DigitalIO(); DigitalIO();
void setup(Uint16 *memzone); void setup(uint16_t *memzone);
void setMemoryOffset(Uint16 offset); void setMemoryOffset(uint16_t offset);
void readDigitalIO(Uint16& data); void readDigitalIO(uint16_t& data);
void writeDigitalIO(Uint16& data) const; void writeDigitalIO(uint16_t& data) const;
private: private:
Uint16 *m_pointer; uint16_t *m_pointer;
}; };
} // interface } // interface

@ -3,9 +3,9 @@
namespace interface { namespace interface {
enum MemoryOffset { enum MemoryOffset {
SOFT_VERSION_OFFSET = static_cast<Uint16>(0x0), SOFT_VERSION_OFFSET = static_cast<uint16_t>(0x0),
DISCRETE_DATA_OFFSET = static_cast<Uint16>(0xA), DISCRETE_DATA_OFFSET = static_cast<uint16_t>(0xA),
PROFIBUS_OFFSET = static_cast<Uint16>(0x14) PROFIBUS_OFFSET = static_cast<uint16_t>(0x14)
}; };
} }

Loading…
Cancel
Save