1: int32_t AG903_UARTMgrSetRs485Param(
AG903_UARTMgrHandle*handle,
AG903_UARTMgrRs485Param *param)
2: {
3: int32_t retval =
AG903_ENONE;
4: int32_t result;
5: uint8_t ch;
6:
7: result = UARTMgr_CheckHandle(handle, &ch);
8:
if(
AG903_ENONE != result) {
9:
return -
AG903_EINVAL;
10: }
11:
if(NULL == param) {
12:
return -
AG903_EINVAL;
13: }
14:
if( (AG903_UART_STAT_IDLE != UartChStat[ch].snd.stat) ||
15: (AG903_UART_STAT_IDLE != UartChStat[ch].rcv.stat) ) {
16:
return -
AG903_EBUSY;
17: }
18:
19:
AG903_UARTPrmSetSetuptime(ch, param->setuptime);
20:
AG903_UARTPrmSetHoldtime(ch, param->holdtime);
21:
22:
if(param->event & (
AG903_UART_RCVTIMEOUT_BIT|
AG903_UART_CHARATIMEOUT_BIT)) {
23:
AG903_UARTPrmDisableTimeoutDetect(ch);
24:
AG903_UARTPrmEnableTimeoutIntMask(ch, (
AG903_UART_DETECT_RTO_BIT|
AG903_UART_DETECT_CTO_BIT));
25:
26:
AG903_UARTPrmEnableTimeoutIntMask(ch,
AG903_UART_DETECT_ALL_BIT);
27:
AG903_UARTPrmClerTimeoutStatus(ch,
AG903_UART_DETECT_ALL_BIT);
28:
29:
AG903_UARTPrmSetReceivetime(ch, param->rcvtime);
30:
AG903_UARTPrmSetCharainterval(ch, param->interval);
31:
AG903_UARTPrmSetTimeout(ch, param->timeout);
32: }
33:
34:
AG903_UARTPrmSetAutoMode(ch,
true,
true);
35:
AG903_UARTPrmEnableRS485(ch);
36:
37: UartHandleStat[ch].event = param->event;
38: UartChStat[ch].rs485 =
true;
39:
40:
return retval;
41: }