AG903ライブラリリファレンス
内容インデックスホーム
Body Source
本文ソース
1: 9: 10: 14: 15: 16: #include "AG903_errno.h" 17: #include "AG903_intno.h" 18: #include "wdt/wdtctl.h" 19: #include "wdt/wdtprm.h" 20: #include "int/intmgr.h" 21: 22: typedef struct _AG903_WDTCtlInthdrStat { 23: int32_t hdrid; 24: void* func; 25: }AG903_WDTCtlInthdrStat; 26: 27: static AG903_WDTCtlInthdrStat WdtInthdrStat = {0, NULL}; 28: 29: 40: int32_t AG903_WDTCtlInit(AG903_WDTCtlParam* param) 41: { 42: _Bool rst = false; 43: _Bool intr = false; 44: _Bool ext = false; 45: 46: if(NULL == param) { 47: return -AG903_EINVAL; 48: } 49: 50: AG903_WDTPrmDisableCount(); 51: AG903_WDTPrmClearStatus(); 52: AG903_WDTPrmSetIntrlen(param->intrlen); 53: AG903_WDTPrmSetCount(param->count); 54: AG903_WDTPrmRestartCount(); 55: if(AG903_WDT_SYSRESET_ENABLE & param->enable) { 56: rst = true; 57: } 58: if(AG903_WDT_SYSINTR_ENABLE & param->enable) { 59: intr = true; 60: } 61: if(AG903_WDT_EXTSIGNAL_ENABLE & param->enable) { 62: ext = true; 63: } 64: AG903_WDTPrmSetControl(rst, intr, ext); 65: 66: return AG903_ENONE; 67: } 68: 69: 81: int32_t AG903_WDTCtlSetIntHandler(void* func, void* param) 82: { 83: AG903_INTMgrHdrPrm inthdr; 84: int32_t hdrid; 85: 86: if(NULL == func) { 87: return -AG903_EINVAL; 88: } 89: if(NULL != WdtInthdrStat.func) { 90: return -AG903_EPERM; 91: } 92: inthdr.atr = AG903_INT_HLNG; 93: inthdr.intno = AG903_IRQ25_WDT; 94: inthdr.func = func; 95: inthdr.exinf = param; 96: hdrid = AG903_INTMgrSetHandler(&inthdr); 97: if(0 >= hdrid) { 98: return -AG903_EFAULT; 99: } 100: AG903_INTMgrEnableInt(AG903_IRQ25_WDT); 101: WdtInthdrStat.hdrid = hdrid; 102: WdtInthdrStat.func = func; 103: 104: return AG903_ENONE; 105: } 106: 107: 115: int32_t AG903_WDTCtlDeleteIntHandler(void) 116: { 117: int32_t retval = AG903_ENONE; 118: 119: if(NULL != WdtInthdrStat.func) { 120: retval = AG903_INTMgrDeleteHandler(WdtInthdrStat.hdrid); 121: if(AG903_ENONE != retval) { 122: return -AG903_EFAULT; 123: } 124: WdtInthdrStat.hdrid = 0; 125: WdtInthdrStat.func = NULL; 126: } 127: 128: return retval; 129: } 130: 131: 138: void AG903_WDTCtlEnable(void) 139: { 140: AG903_WDTPrmEnableCount(); 141: } 142: 143: 150: void AG903_WDTCtlDisable(void) 151: { 152: AG903_WDTPrmDisableCount(); 153: } 154: 155: 162: void AG903_WDTCtlRestart(void) 163: { 164: AG903_WDTPrmRestartCount(); 165: } 166: 167: 176: int32_t AG903_WDTCtlGetStatus(uint32_t* status) 177: { 178: if(NULL == status) { 179: return -AG903_EINVAL; 180: } 181: 182: AG903_WDTPrmGetStatus(status); 183: 184: return AG903_ENONE; 185: } 186: 187: 194: int32_t AG903_WDTCtlClearStatus(void) 195: { 196: AG903_WDTPrmClearStatus(); 197: 198: return AG903_ENONE; 199: } 200: 201: 209: int32_t AG903_WDTCtlGetCount(uint32_t* count) 210: { 211: if(NULL == count) { 212: return -AG903_EINVAL; 213: } 214: 215: AG903_WDTPrmGetCount(count); 216: 217: return AG903_ENONE; 218: } 219:
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.