--- a/LPCBus/MC9_OnBoard_cleanup.c Tue Apr 11 13:03:50 2017 +0200
+++ b/LPCBus/MC9_OnBoard_cleanup.c Wed Apr 19 10:01:19 2017 +0200
@@ -5,6 +5,10 @@
rt_mutex_delete(&RTU_BuffMutex);
gpio_close(RTU_GPIO_dev);
+ rt_dev_close(onboardbusfd); gpio_set_pin_value(CAN0_EN_dev, 1);
--- a/LPCBus/MC9_OnBoard_decl.c Tue Apr 11 13:03:50 2017 +0200
+++ b/LPCBus/MC9_OnBoard_decl.c Wed Apr 19 10:01:19 2017 +0200
@@ -4,7 +4,7 @@
#include <native/timer.h>
/*------------------------- GPIO -------------------------------------*/
@@ -242,8 +242,6 @@
MB_PAR_NONE = 2 /**< No parity. */
-#define MAX_ONBOARD_DEVICES 2
-unsigned char onBoardDev[MAX_ONBOARD_DEVICES][2]; /**< Arrays containing information about enabled on-board devices (initialized by Composer) */
mbRtuSlaveConfig mbRtuSlaveDev[MAX_MOD_RTU_DEVICES];/**< Tables containing information about connected Modbus network devices (initialized by Composer) */
commTimer mbRtuDevTim[MAX_MOD_RTU_DEVICES]; /**< Table of timers (one for each position) */
short usRegInputValue[REG_INPUT_NREGS]; /**< Array of Modbus input registers */
@@ -353,4 +351,28 @@
gpio_set_pin_value(RTU_GPIO_dev, 0);
+#define MAX_ONBOARD_DEVICES 2 +#define ONBOARD_READ_BUFSIZE 30 +#define ONBOARD_WRITE_BUFSIZE 30 +typedef char onBoardReadBuf_t[MAX_ONBOARD_DEVICES][ONBOARD_READ_BUFSIZE]; +typedef char onBoardWriteBuf_t[MAX_ONBOARD_DEVICES][ONBOARD_WRITE_BUFSIZE]; +typedef char onBoardDev_t[MAX_ONBOARD_DEVICES][2]; + onBoardDev_t onBoardDev; + unsigned long long common_ticktime__; +#define RTIOC_TYPE_SMT_ONBOARD RTDM_CLASS_EXPERIMENTAL +#define RTSMT_ONBOARD_RTIOC_INIT _IOR(RTIOC_TYPE_SMT_ONBOARD, 0x00, onBoardBusInit_t) +#define RTSMT_ONBOARD_RTIOC_READ _IOR(RTIOC_TYPE_SMT_ONBOARD, 0x01, onBoardReadBuf_t) +#define RTSMT_ONBOARD_RTIOC_WRITE _IOR(RTIOC_TYPE_SMT_ONBOARD, 0x02, onBoardWriteBuf_t) +static onBoardReadBuf_t onBoardReadBuf; +static onBoardWriteBuf_t onBoardWriteBuf; +static onBoardBusInit_t onBoardBusInit; +static int onboardbusfd = -1; --- a/LPCBus/MC9_OnBoard_init.c Tue Apr 11 13:03:50 2017 +0200
+++ b/LPCBus/MC9_OnBoard_init.c Wed Apr 19 10:01:19 2017 +0200
@@ -1,12 +1,21 @@
+#define ONBOARDDEVFILENAME "onBoard" -bzero(&onBoardDev , sizeof(onBoardDev ));
bzero(&usRegInputValue , sizeof(usRegInputValue ));
bzero(&usRegHoldingValue , sizeof(usRegHoldingValue ));
bzero(&ubCoilValue , sizeof(ubCoilValue ));
bzero(&ubRegDiscreteValue, sizeof(ubRegDiscreteValue));
bzero(&mbRtuSlaveDev , sizeof(mbRtuSlaveDev ));
bzero(&mbRtuDevTim , sizeof(mbRtuDevTim ));
+bzero(&onBoardReadBuf , sizeof(onBoardReadBuf_t )); +bzero(&onBoardWriteBuf , sizeof(onBoardWriteBuf_t )); +bzero(&onBoardBusInit , sizeof(onBoardBusInit_t )); +onBoardBusInit.common_ticktime__ = common_ticktime__; +#define onBoardDev (onBoardBusInit.onBoardDev) @@ -36,6 +45,31 @@
if(rt_task_start(&RTU_task, mbmrtu_BusUpdate_proc, NULL))
+for(i=0; i<MAX_ONBOARD_DEVICES; i++) { + switch(onBoardDev[i][1]) { + onboardbusfd = rt_dev_open(ONBOARDDEVFILENAME, 0); + printf("can't open %%s rtdm device, %%s\n", ONBOARDDEVFILENAME, + strerror(-onboardbusfd)); + err = rt_dev_ioctl(onboardbusfd, RTSMT_ONBOARD_RTIOC_INIT, &onBoardBusInit); + printf("error while RTSMT_ONBOARD_RTIOC_INIT, %%s\n", strerror(-err)); + rt_dev_close(onboardbusfd); RUN_LED_dev = gpio_open(45);
--- a/LPCBus/MC9_OnBoard_publish.c Tue Apr 11 13:03:50 2017 +0200
+++ b/LPCBus/MC9_OnBoard_publish.c Wed Apr 19 10:01:19 2017 +0200
@@ -4,4 +4,9 @@
-rt_task_unblock(&RTU_task);
+rt_task_unblock(&RTU_task); + rt_dev_ioctl(onboardbusfd, RTSMT_ONBOARD_RTIOC_WRITE, &onBoardWriteBuf); --- a/LPCBus/MC9_OnBoard_retrieve.c Tue Apr 11 13:03:50 2017 +0200
+++ b/LPCBus/MC9_OnBoard_retrieve.c Wed Apr 19 10:01:19 2017 +0200
@@ -1,4 +1,8 @@
+ rt_dev_ioctl(onboardbusfd, RTSMT_ONBOARD_RTIOC_READ, &onBoardReadBuf);