app.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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. #ifdef CPU_COLDFIRE // 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. {equ_init_later,"equ_init_later",ERR_CODE_EQU},
  29. #ifdef CPU_FUXI
  30. // {adc_init,"adc_init",ERR_CODE_INIT_SOFTWARE},
  31. {pit_init,"pit_init",ERR_CODE_UNKOWN}, //初始化PIT(可编程中断定时器)
  32. #endif
  33. {factor_init,"factor_init",ERR_CODE_FACTOR},
  34. {dcfactor_init,"dcfactor_init",ERR_CODE_DCFACTOR},
  35. {sw_init,"sw_init",ERR_CODE_INIT_SWITCH},
  36. #ifndef CPU_FUXI
  37. {dido_init,"dido_init",ERR_CODE_INIT_SOFTWARE},
  38. #endif
  39. {hf_init,"hf_init", ERR_CODE_INIT_SOFTWARE},
  40. {rcd_init,"rcd_init",ERR_CODE_INIT_RECORD},
  41. {set_create_desc_file,"set_create_desc_file",ERR_CODE_SET_DESC},
  42. // {set_create_data_file,ERR_CODE_SET_DATA},
  43. {tbl_init,"tbl_init",ERR_CODE_IEC_TABLE},
  44. {plc_init,"plc_init",ERR_CODE_PLC},
  45. {bat_init,"bat_init",ERR_CODE_BATHH},
  46. #ifdef CPU_AM335X
  47. {CheckSysProgramVer,"CheckSysProgramVer",ERR_CODE_SYSTEM},
  48. #endif
  49. // {esam_init,ERR_CODE_ESAM}, 此初始化函数需使用定值参数,推后到SystemInit中初始化
  50. };
  51. #define APP_INIT_NUM (sizeof(g_app_init_func)/sizeof(g_app_init_func[0]))
  52. INIT_FUNC g_app_exit_func[]=
  53. {
  54. #ifndef CPU_FUXI
  55. esam_exit,
  56. #endif
  57. bat_exit,
  58. plc_exit,
  59. tbl_exit,
  60. rcd_exit,
  61. hf_exit,
  62. sw_exit,
  63. factor_exit,
  64. dcfactor_exit,
  65. pit_exit,
  66. adc_exit,
  67. equ_exit,
  68. #ifndef GW_AREA_MAIN_2021
  69. FA_exit,
  70. #endif
  71. led_exit,
  72. menudesc_exit,
  73. auth_exit, // sunxi 20191204 added
  74. //pw_quality_exit,
  75. };
  76. #define APP_EXIT_NUM (sizeof(g_app_exit_func)/sizeof(INIT_FUNC))
  77. /*------------------------------ 函数声明 -------------------------------------
  78. */
  79. /*------------------------------ 外部函数 -------------------------------------
  80. 外部函数供其它实体文件引用,必须仔细检查传入参数的合法性.
  81. */
  82. int app_init(void)
  83. {
  84. int i,ret;
  85. for(i=0;i<APP_INIT_NUM;i++)
  86. {
  87. ret = g_app_init_func[i].func();
  88. if(ret != 0)
  89. {
  90. rt_err_set(g_app_init_func[i].err_code,0);
  91. printk("%s err(i=%d,ret=%d)\r\n",g_app_init_func[i].init_name,i,ret);
  92. }
  93. }
  94. return 0;
  95. }
  96. int app_exit(void)
  97. {
  98. int i,ret;
  99. for(i=0;i<APP_EXIT_NUM;i++)
  100. {
  101. ret = g_app_exit_func[i]();
  102. if(ret != 0)
  103. {
  104. printk("app_exit err(i=%d,ret=%d)\r\n",i,ret);
  105. }
  106. }
  107. return 0;
  108. }
  109. /*------------------------------ 内部函数 -------------------------------------
  110. 内部函数以下划线‘_’开头,不需要检查参数的合法性.
  111. */
  112. /*------------------------------ 测试函数 -------------------------------------
  113. 一个实体文件必须带一个本模块的测试函数来进行单元测试,如果的确不方便在本模块中
  114. 进行单元测试,必须在此注明实际的测试位置(例如在哪个实体文件中使用哪个测试函数).
  115. */
  116. /*------------------------------ 文件结束 -------------------------------------
  117. */