lpcmanager

Smarteh 485: uart data is copied to beremiz buffer even if reception was not successfull. This ensures that communication statuses are updated. Otherwise these statuses are not updated in case controller can't communicate with any slave. This bug was introduced in revision 614.
#define ONBOARDDEVFILENAME "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 GOT
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 /* GOT */
%(init_code)s
#ifdef MC9
CAN0_EN_dev = gpio_open(21);
gpio_set_pin_value(CAN0_EN_dev, 0);
CAN1_EN_dev = gpio_open(17);
gpio_set_pin_value(CAN1_EN_dev, 0);
#endif /* MC9 */
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 GOT
unsigned char i;
for(i=0; i<MAX_ONBOARD_DEVICES; i++) {
switch(onBoardDev[i][1]) {
case 1:
/* OnBoard I2C bus */
onboardbusfd = rt_dev_open(ONBOARDDEVFILENAME, 0);
if(onboardbusfd < 0) {
printf("can't open %%s rtdm device, %%s\n", ONBOARDDEVFILENAME,
strerror(-onboardbusfd));
return onboardbusfd;
}
err = rt_dev_ioctl(onboardbusfd, RTSMT_ONBOARD_RTIOC_INIT, &onBoardBusInit);
if(err) {
printf("error while RTSMT_ONBOARD_RTIOC_INIT, %%s\n", strerror(-err));
rt_dev_close(onboardbusfd);
return err;
}
break;
default:
break;
}
}
#endif /* GOT */
#if defined MC9
RUN_LED_dev = gpio_open(45);
#elif defined GOT
RUN_LED_dev = gpio_open(63);
#endif /* MC9/GOT */
gpio_set_pin_value(RUN_LED_dev, 0);