1: int32_t AG903_TIMRMgrEnableResetTrigger(
AG903_TIMRMgrHandle* handle,
AG903_TIMRMgrResetParam* param)
2: {
3:
AG903_TIMRPrmResetTriggerParam rstprm = {0};
4: int32_t retval =
AG903_ENONE;
5: int32_t result;
6: uint8_t ch;
7:
8: result = TIMRMgr_CheckHandle(handle, &ch);
9:
if(
AG903_ENONE != result) {
10:
return -
AG903_EINVAL;
11: }
12:
if(NULL == param) {
13:
return -
AG903_EINVAL;
14: }
15:
if(AG903_TIMR_RSTTRG_TYPENUM <= param->trigger) {
16:
return -
AG903_EINVAL;
17: }
18:
if(AG903_TIMR_RSTTRG_EXTPORT == param->trigger) {
19:
if( (AG903_TIMR_INPUT_TYPENUM <= param->intype) ||
20: (AG903_TIMR_CNT_TYPENUM <= param->sampling) ||
21: (AG903_TIMR_POL_TYPENUM <= param->polarity) ) {
22:
return -
AG903_EINVAL;
23: }
24: }
25:
else {
26:
if(
AG903_TIMR_EVENT_NUM <= param->event) {
27:
return -
AG903_EINVAL;
28: }
29: }
30:
31:
switch(TimrChStat[ch].mode) {
32:
case AG903_TIMR_CTRLMOD_TICKCNT:
33: rstprm.boot = AG903_TIMR_RSTBOOT_TICKCNT;
34:
break;
35:
case AG903_TIMR_CTRLMOD_EVENTCNT:
36: rstprm.boot = AG903_TIMR_RSTBOOT_EVENTCNT;
37:
break;
38:
case AG903_TIMR_CTRLMOD_PLUSECNT:
39: rstprm.boot = AG903_TIMR_RSTBOOT_PLUSECNT;
40:
break;
41:
case AG903_TIMR_CTRLMOD_LEVELCNT:
42: rstprm.boot = AG903_TIMR_RSTBOOT_LEVELCNT;
43:
break;
44:
default:
45: retval = -
AG903_EFAULT;
46:
break;
47: }
48:
49:
if(
AG903_ENONE == retval) {
50: rstprm.en = TimrResetTriggerTbl[param->trigger];
51:
if(AG903_TIMR_RSTEN_EXTPORT == rstprm.en) {
52: rstprm.res = TimrResolutionTypeTbl[param->sampling];
53: rstprm.lo = TimrInputTbl[param->intype][0];
54: rstprm.ch = TimrInputTbl[param->intype][1];
55: rstprm.pol = param->polarity;
56: }
57:
else {
58: rstprm.eve = param->event;
59: }
60:
AG903_TIMRPrmSetResetTrigger(ch, &rstprm);
61: }
62:
63:
return retval;
64: }