app.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /******************************************************************************
  2. 版权所有:
  3. 文件名称: app.c
  4. 文件版本: 01.01
  5. 创建作者: sunxi
  6. 创建日期: 2012-03-28
  7. 功能说明: 应用系统初始化
  8. 其它说明:
  9. 修改记录:
  10. */
  11. /*------------------------------- 头文件 --------------------------------------
  12. */
  13. #include "head.h"
  14. /*------------------------------- 宏定义 --------------------------------------
  15. */
  16. /*------------------------------ 类型结构 -------------------------------------
  17. */
  18. /*------------------------------ 全局变量 -------------------------------------
  19. */
  20. struct init_t_1 g_app_init_func[]=
  21. {
  22. #if(0) // xxxxxx 20220530 add 暂时屏蔽,am335x还没做授权的处理
  23. {auth_init,"auth_init",ERR_CODE_AUTH},
  24. #endif
  25. {Get_Code_CRC,"Get_Code_CRC",ERR_CODE_CRC_FLASH},
  26. {tbl_create_rsc,"tbl_create_rsc",ERR_CODE_RESOURCE_TABLE},
  27. {equ_init,"equ_init",ERR_CODE_EQU},
  28. #ifdef CPU_FUXI
  29. // {adc_init,"adc_init",ERR_CODE_INIT_SOFTWARE},
  30. {pit_init,"pit_init",ERR_CODE_UNKOWN}, //初始化PIT(可编程中断定时器)
  31. #endif
  32. {factor_init,"factor_init",ERR_CODE_FACTOR},
  33. {dcfactor_init,"dcfactor_init",ERR_CODE_DCFACTOR},
  34. {sw_init,"sw_init",ERR_CODE_INIT_SWITCH},
  35. {dido_init,"dido_init",ERR_CODE_INIT_SOFTWARE},
  36. {hf_init,"hf_init", ERR_CODE_INIT_SOFTWARE},
  37. {rcd_init,"rcd_init",ERR_CODE_INIT_RECORD},
  38. {set_create_desc_file,"set_create_desc_file",ERR_CODE_SET_DESC},
  39. // {set_create_data_file,ERR_CODE_SET_DATA},
  40. {tbl_init,"tbl_init",ERR_CODE_IEC_TABLE},
  41. {plc_init,"plc_init",ERR_CODE_PLC},
  42. {bat_init,"bat_init",ERR_CODE_BATHH},
  43. #ifdef CPU_AM335X
  44. {CheckSysProgramVer,"CheckSysProgramVer",ERR_CODE_SYSTEM},
  45. #endif
  46. // {esam_init,ERR_CODE_ESAM}, 此初始化函数需使用定值参数,推后到SystemInit中初始化
  47. };
  48. #define APP_INIT_NUM (sizeof(g_app_init_func)/sizeof(g_app_init_func[0]))
  49. INIT_FUNC g_app_exit_func[]=
  50. {
  51. #ifndef CPU_FUXI
  52. esam_exit,
  53. #endif
  54. bat_exit,
  55. plc_exit,
  56. tbl_exit,
  57. rcd_exit,
  58. hf_exit,
  59. sw_exit,
  60. factor_exit,
  61. dcfactor_exit,
  62. pit_exit,
  63. adc_exit,
  64. equ_exit,
  65. FA_exit,
  66. led_exit,
  67. mainimage_exit,
  68. auth_exit, // sunxi 20191204 added
  69. //pw_quality_exit,
  70. };
  71. #define APP_EXIT_NUM (sizeof(g_app_exit_func)/sizeof(INIT_FUNC))
  72. /*------------------------------ 函数声明 -------------------------------------
  73. */
  74. /*------------------------------ 外部函数 -------------------------------------
  75. 外部函数供其它实体文件引用,必须仔细检查传入参数的合法性.
  76. */
  77. int app_init(void)
  78. {
  79. int i,ret;
  80. for(i=0;i<APP_INIT_NUM;i++)
  81. {
  82. ret = g_app_init_func[i].func();
  83. if(ret != 0)
  84. {
  85. rt_err_set(g_app_init_func[i].err_code,0);
  86. dp_err_n_c_pk("%s err(i=%d,ret=%d)",g_app_init_func[i].init_name,i,ret);
  87. }
  88. }
  89. return 0;
  90. }
  91. int app_exit(void)
  92. {
  93. int i,ret;
  94. for(i=0;i<APP_EXIT_NUM;i++)
  95. {
  96. ret = g_app_exit_func[i]();
  97. if(ret != 0)
  98. {
  99. dp_err_n_c_pk("app_exit err(i=%d,ret=%d)",i,ret);
  100. }
  101. }
  102. return 0;
  103. }
  104. /*------------------------------ 内部函数 -------------------------------------
  105. 内部函数以下划线‘_’开头,不需要检查参数的合法性.
  106. */
  107. /*------------------------------ 测试函数 -------------------------------------
  108. 一个实体文件必须带一个本模块的测试函数来进行单元测试,如果的确不方便在本模块中
  109. 进行单元测试,必须在此注明实际的测试位置(例如在哪个实体文件中使用哪个测试函数).
  110. */
  111. /*------------------------------ 文件结束 -------------------------------------
  112. */