lpcmanager

Devices Bus : Removed explicit RTS pin toggling as GPIO, now that kernel side RS485 driver handles it. Also changed UART task sleep/unblock into suspend/resume, since it looks unreliable in xenomai3
#define ONBOARDDEVFILENAME "/dev/rtdm/onBoard"
int err;
bzero(&usRegInputValue , sizeof(usRegInputValue ));
bzero(&usRegHoldingValue , sizeof(usRegHoldingValue ));
bzero(&ubCoilValue , sizeof(ubCoilValue ));
bzero(&ubRegDiscreteValue, sizeof(ubRegDiscreteValue));
bzero(&mbRtuSlaveDev , sizeof(mbRtuSlaveDev ));
bzero(&mbRtuDevTim , sizeof(mbRtuDevTim ));
#ifdef ONBOARD_I2C
bzero(&onBoardReadBuf , sizeof(onBoardReadBuf_t ));
bzero(&onBoardWriteBuf , sizeof(onBoardWriteBuf_t ));
bzero(&onBoardBusInit , sizeof(onBoardBusInit_t ));
onBoardBusInit.common_ticktime__ = common_ticktime__;
#define onBoardDev (onBoardBusInit.onBoardDev)
#endif /* ONBOARD_I2C */
%(init_code)s
#ifdef CAN0_EN_GPIO_0_21
CAN0_EN_dev = gpio_open(21);
gpio_set_pin_value(CAN0_EN_dev, 0);
#endif /* CAN0_EN_GPIO_0_21 */
#ifdef CAN1_EN_GPIO_0_17
CAN1_EN_dev = gpio_open(17);
gpio_set_pin_value(CAN1_EN_dev, 0);
#endif /* CAN1_EN_GPIO_0_17 */
RTU_GPIO_dev = gpio_open(111);
if (!RTU_GPIO_dev) {
fprintf(stderr, "Error while initializing RTU GPIO.\n");
return 1;
}
if((err = rt_mutex_create (&RTU_BuffMutex, "RTU_BuffMutex")))
return err;
if((err = rt_task_create(&RTU_UART_task, "RTU_UART_task", 0, 50, T_JOINABLE)))
return err;
mbmrtu_init(mbBaudRate, mbParity);
if((err = rt_task_create(&RTU_task, "RTU_task", 0, 50, T_JOINABLE)))
return err;
if(rt_task_start(&RTU_task, mbmrtu_BusUpdate_proc, NULL))
return err;
#ifdef ONBOARD_I2C
unsigned char i;
for(i=0; i<MAX_ONBOARD_DEVICES; i++) {
switch(onBoardDev[i][1]) {
case 1:
/* OnBoard I2C bus */
onboardbusfd = open(ONBOARDDEVFILENAME, 0);
if(onboardbusfd < 0) {
printf("can't open %%s rtdm device, %%s\n", ONBOARDDEVFILENAME,
strerror(-onboardbusfd));
return onboardbusfd;
}
err = ioctl(onboardbusfd, RTSMT_ONBOARD_RTIOC_INIT, &onBoardBusInit);
if(err) {
printf("error while RTSMT_ONBOARD_RTIOC_INIT, %%s\n", strerror(-err));
close(onboardbusfd);
return err;
}
break;
default:
break;
}
}
#endif /* ONBOARD_I2C */
#if defined RUN_LED_GPIO_1_13
RUN_LED_dev = gpio_open(45);
#elif defined RUN_LED_GPIO_1_31
RUN_LED_dev = gpio_open(63);
#endif /* RUN LED GPIO_1_13/GPIO_1_31 */
gpio_set_pin_value(RUN_LED_dev, 0);