cli_main.h 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. /**
  2. * \file cli_main.h
  3. *
  4. * Header File for the CLI application to test the Mindtree
  5. * Mesh stack.
  6. */
  7. /*
  8. * Copyright (C) 2017. Mindtree Ltd.
  9. * All rights reserved.
  10. */
  11. #ifndef _H_CLI_MAIN_
  12. #define _H_CLI_MAIN_
  13. /* --------------------------------------------- Header File Inclusion */
  14. #include "cliface.h"
  15. #include "MS_access_api.h"
  16. #include "MS_config_api.h"
  17. #include "MS_health_server_api.h"
  18. #include "appl_main.h"
  19. #include "blebrr.h"
  20. /* --------------------------------------------- Global Definitions */
  21. /* --------------------------------------------- Structures/Data Types */
  22. // ---------------- add by HZF, CLI options
  23. #define CLI_NO_MAIN
  24. //#define CLI_PROVISION
  25. //#define CLI_PROXY
  26. //#define CLI_TRANSPORT
  27. //#define CLI_NETWORK
  28. //#define CLI_GENERICS_SERVER_MODEL
  29. //#define CLI_GENERICS_CLIENT_MODEL
  30. //#define CLI_GENERICS_ONOFF_SERVER_MODEL
  31. //#define CLI_GENERICS_ONOFF_CLIENT_MODEL
  32. //#define CLI_CONFIG_SERVER_MODEL
  33. //#define CLI_CONFIG_CLIENT_MODEL
  34. //#define CLI_HEALTH_SERVER_MODEL
  35. //#define CLI_HEALTH_CLIENT_MODEL
  36. /*
  37. - CLI_GENERICS_ONOFF_CLIENT_MODEL
  38. - CLI_GENERICS_LEVEL_CLIENT_MODEL
  39. - CLI_GENERICS_TRANSITIONTIME_CLIENT_MODEL
  40. - CLI_GENERICS_PWRONOFF_CLIENT_MODEL
  41. - CLI_GENERICS_PWRLEVEL_CLIENT_MODEL
  42. - CLI_GENERICS_BATTERY_CLIENT_MODEL
  43. - CLI_GENERICS_LOCATION_CLIENT_MODEL
  44. - CLI_GENERICS_PROPERTY_CLIENT_MODEL
  45. CLI_LIGHTINGS_CLIENT_MODEL -> Enables lightings client related CLI menu and submodel client menu with beow flags
  46. - CLI_LIGHTINGS_LIGHTNESS_CLIENT_MODEL
  47. - CLI_LIGHTINGS_CTL_CLIENT_MODEL
  48. - CLI_LIGHTINGS_HSL_CLIENT_MODEL
  49. - CLI_LIGHTINGS_XYL_CLIENT_MODEL
  50. - CLI_LIGHTINGS_LC_CLIENT_MODEL
  51. - CLI_GENERICS_LEVEL_SERVER_MODEL
  52. - CLI_GENERICS_TRANSITIONTIME_SERVER_MODEL
  53. - CLI_GENERICS_PWRONOFF_SERVER_MODEL
  54. - CLI_GENERICS_PWRLEVEL_SERVER_MODEL
  55. - CLI_GENERICS_BATTERY_SERVER_MODEL
  56. - CLI_GENERICS_LOCATION_SERVER_MODEL
  57. - CLI_GENERICS_PROPERTY_SERVER_MODEL
  58. CLI_LIGHTINGS_SERVER_MODEL -> Enables setup of lightings server model and submodel with below flags
  59. - CLI_LIGHTINGS_LIGHTNESS_SERVER_MODEL
  60. - CLI_LIGHTINGS_CTL_SERVER_MODEL
  61. - CLI_LIGHTINGS_HSL_SERVER_MODEL
  62. - CLI_LIGHTINGS_XYL_SERVER_MODEL
  63. - CLI_LIGHTINGS_LC_SERVER_MODEL
  64. */
  65. /* --------------------------------------------- Macros */
  66. /* Debug Macros */
  67. /* TBD: Mapped with debug sub-system */
  68. #define CLI_APP_ERR(...) printf(__VA_ARGS__)
  69. #define CLI_APP_TRC(...) printf(__VA_ARGS__)
  70. #define CLI_APP_INF(...) printf(__VA_ARGS__)
  71. /* Console Input/Output */
  72. #define CONSOLE_OUT(...) printf(__VA_ARGS__)
  73. #define CONSOLE_IN(...) scanf(__VA_ARGS__)
  74. /* Macro to declare a CLI Command Handler */
  75. #define CLI_CMD_HANDLER_DECL(x) \
  76. API_RESULT (x) (UINT32 arc, UCHAR * arv[])
  77. /* Macro to define an empty CLI Command Handler */
  78. #define CLI_CMD_HANDLER_EMPTY_DEF(x) \
  79. API_RESULT (x) (UINT32 argc, UCHAR * argv[]) \
  80. { \
  81. UINT32 index; \
  82. \
  83. CLI_APP_TRC(#x ". Argc %d\n", argc); \
  84. \
  85. for (index = 0; index < argc; index++) \
  86. { \
  87. CLI_APP_TRC("Argv[%d]: %s\n", index, argv[index]); \
  88. } \
  89. \
  90. return API_SUCCESS; \
  91. }
  92. /* --------------------------------------------- Internal Functions */
  93. /* CLI Command Handler declaration for configuration client */
  94. /* Level - Root */
  95. CLI_CMD_HANDLER_DECL( cli_help );
  96. CLI_CMD_HANDLER_DECL( cli_core );
  97. CLI_CMD_HANDLER_DECL( cli_model );
  98. CLI_CMD_HANDLER_DECL( cli_reset );
  99. CLI_CMD_HANDLER_DECL( cli_ps );
  100. CLI_CMD_HANDLER_DECL( cli_brr );
  101. CLI_CMD_HANDLER_DECL( cli_set_log_level );
  102. CLI_CMD_HANDLER_DECL(cli_back);
  103. CLI_CMD_HANDLER_DECL(cli_root);
  104. /* Level - Core */
  105. CLI_CMD_HANDLER_DECL( cli_core_setup );
  106. CLI_CMD_HANDLER_DECL( cli_core_provision );
  107. CLI_CMD_HANDLER_DECL( cli_core_proxy );
  108. CLI_CMD_HANDLER_DECL( cli_core_transport );
  109. CLI_CMD_HANDLER_DECL( cli_core_network );
  110. CLI_CMD_HANDLER_DECL( cli_core_enable_feature );
  111. CLI_CMD_HANDLER_DECL( cli_core_disable_feature );
  112. /* Level - Core - Network */
  113. CLI_CMD_HANDLER_DECL(cli_core_network_send_packet);
  114. CLI_CMD_HANDLER_DECL(cli_core_network_set_pkt_hdr);
  115. CLI_CMD_HANDLER_DECL(cli_core_network_snb);
  116. CLI_CMD_HANDLER_DECL(cli_core_network_get_ivindex);
  117. /* Level - Core - Transport */
  118. CLI_CMD_HANDLER_DECL(cli_core_transport_send_packet);
  119. CLI_CMD_HANDLER_DECL(cli_core_transport_frndreq);
  120. CLI_CMD_HANDLER_DECL(cli_core_transport_ctrlmsg);
  121. CLI_CMD_HANDLER_DECL(cli_core_transport_clrreplaycache);
  122. /* Level - Core - Provision */
  123. CLI_CMD_HANDLER_DECL(cli_provision_uuid);
  124. CLI_CMD_HANDLER_DECL(cli_core_provision_setup);
  125. CLI_CMD_HANDLER_DECL(cli_core_provision_bind);
  126. CLI_CMD_HANDLER_DECL(cli_core_provision_input_auth_val);
  127. CLI_CMD_HANDLER_DECL(cli_core_provision_set_auth_action);
  128. CLI_CMD_HANDLER_DECL(cli_core_provision_set_dev_pkey);
  129. CLI_CMD_HANDLER_DECL(cli_core_provision_get_pkey);
  130. CLI_CMD_HANDLER_DECL(cli_core_provision_get_dev_list);
  131. CLI_CMD_HANDLER_DECL(cli_core_provision_delete_all_dev_keys);
  132. /* Level - Core - Proxy */
  133. CLI_CMD_HANDLER_DECL(cli_core_proxy_server_op);
  134. CLI_CMD_HANDLER_DECL(cli_core_proxy_client_op);
  135. CLI_CMD_HANDLER_DECL(cli_core_start_proxy_adv);
  136. CLI_CMD_HANDLER_DECL(cli_core_stop_proxy_adv);
  137. CLI_CMD_HANDLER_DECL(cli_core_set_wl_filter);
  138. CLI_CMD_HANDLER_DECL(cli_core_set_bl_filter);
  139. CLI_CMD_HANDLER_DECL(cli_core_add_addr_to_filter);
  140. CLI_CMD_HANDLER_DECL(cli_core_rm_addr_to_filter);
  141. /* Level - Model */
  142. CLI_CMD_HANDLER_DECL(cli_model_server);
  143. CLI_CMD_HANDLER_DECL(cli_model_client);
  144. /* Level - Persistent Storage */
  145. CLI_CMD_HANDLER_DECL(cli_ps_get_device_key);
  146. CLI_CMD_HANDLER_DECL(cli_ps_get_app_key);
  147. CLI_CMD_HANDLER_DECL(cli_ps_get_net_key);
  148. CLI_CMD_HANDLER_DECL(cli_ps_get_primary_unicast_addr);
  149. /* Level - Bearer Layer */
  150. CLI_CMD_HANDLER_DECL(cli_create_gatt_conn);
  151. CLI_CMD_HANDLER_DECL(cli_terminate_gatt_conn);
  152. CLI_CMD_HANDLER_DECL(cli_discover_service);
  153. CLI_CMD_HANDLER_DECL(cli_config_ntf);
  154. CLI_CMD_HANDLER_DECL(cli_scan_feature);
  155. CLI_CMD_HANDLER_DECL(cli_scan_rsp_data_set);
  156. /* Model Server - Foundation Models */
  157. CLI_CMD_HANDLER_DECL(cli_models_foundation);
  158. /* Model Server - Health */
  159. CLI_CMD_HANDLER_DECL(cli_models_health);
  160. /* Model Server - Health - Log Fault */
  161. CLI_CMD_HANDLER_DECL(cli_models_health_log_fault);
  162. /* Health - TODO: Temporary till model publication period is triggered */
  163. CLI_CMD_HANDLER_DECL(cli_health_status_publish);
  164. /* Level - Model - Server */
  165. /* Generics */
  166. CLI_CMD_HANDLER_DECL(cli_models_generics);
  167. /* Model Server - Generics - OnOff */
  168. CLI_CMD_HANDLER_DECL(cli_models_generics_onoff);
  169. /* Model Server - Generics - Level */
  170. CLI_CMD_HANDLER_DECL(cli_models_generics_level);
  171. /* Model Server - Generics - Default Transition Time */
  172. CLI_CMD_HANDLER_DECL(cli_models_generics_default_transition_time);
  173. /* Model Server - Generics - Power OnOff */
  174. CLI_CMD_HANDLER_DECL(cli_models_generics_power_onoff);
  175. /* Model Server - Generics - Power Level */
  176. CLI_CMD_HANDLER_DECL(cli_models_generics_power_level);
  177. /* Model Server - Generics - Battery */
  178. CLI_CMD_HANDLER_DECL(cli_models_generics_battery);
  179. /* Model Server - Generics - Location */
  180. CLI_CMD_HANDLER_DECL(cli_models_generics_location);
  181. /* Model Server - Generics - Property */
  182. CLI_CMD_HANDLER_DECL(cli_models_generics_property);
  183. /* Sensors */
  184. CLI_CMD_HANDLER_DECL(cli_models_sensor);
  185. /* Time and Scene */
  186. /* Time */
  187. CLI_CMD_HANDLER_DECL(cli_models_time);
  188. /* Scene */
  189. CLI_CMD_HANDLER_DECL(cli_models_scene);
  190. /* Scheduler */
  191. CLI_CMD_HANDLER_DECL(cli_models_scheduler);
  192. /* Light */
  193. CLI_CMD_HANDLER_DECL(cli_models_light);
  194. /* Model Server - Light Lightness */
  195. CLI_CMD_HANDLER_DECL(cli_models_light_lightness);
  196. /* Model Server - Light CTL */
  197. CLI_CMD_HANDLER_DECL(cli_models_light_ctl);
  198. /* Model Server - Light HSL */
  199. CLI_CMD_HANDLER_DECL(cli_models_light_hsl);
  200. /* Model Server - Light xyL */
  201. CLI_CMD_HANDLER_DECL(cli_models_light_xyl);
  202. /* Model Server - Light LC */
  203. CLI_CMD_HANDLER_DECL(cli_models_light_lc);
  204. /* Model Server - Vendor */
  205. CLI_CMD_HANDLER_DECL(cli_models_vendor);
  206. /* Model Server - Set Default Transition Time in ms */
  207. CLI_CMD_HANDLER_DECL(cli_models_light_lc_set_default_trans_timeout_in_ms);
  208. /* Reset */
  209. /* TODO: Shall be part of common reset called from root */
  210. CLI_CMD_HANDLER_DECL(cli_models_reset);
  211. /* Level - Model - Client */
  212. CLI_CMD_HANDLER_DECL(cli_modelc_config);
  213. CLI_CMD_HANDLER_DECL(cli_modelc_health);
  214. CLI_CMD_HANDLER_DECL(cli_modelc_generic_onoff);
  215. CLI_CMD_HANDLER_DECL(cli_modelc_generic_level);
  216. CLI_CMD_HANDLER_DECL(cli_modelc_generic_default_transition_time);
  217. CLI_CMD_HANDLER_DECL(cli_modelc_generic_power_onoff);
  218. CLI_CMD_HANDLER_DECL(cli_modelc_generic_power_level);
  219. CLI_CMD_HANDLER_DECL(cli_modelc_generic_battery);
  220. CLI_CMD_HANDLER_DECL(cli_modelc_generic_location);
  221. CLI_CMD_HANDLER_DECL(cli_modelc_generic_property);
  222. CLI_CMD_HANDLER_DECL(cli_modelc_sensor);
  223. CLI_CMD_HANDLER_DECL(cli_modelc_time);
  224. CLI_CMD_HANDLER_DECL(cli_modelc_scene);
  225. CLI_CMD_HANDLER_DECL(cli_modelc_scheduler);
  226. CLI_CMD_HANDLER_DECL(cli_modelc_light_lightness);
  227. CLI_CMD_HANDLER_DECL(cli_modelc_light_ctl);
  228. CLI_CMD_HANDLER_DECL(cli_modelc_light_hsl);
  229. CLI_CMD_HANDLER_DECL(cli_modelc_light_xyl);
  230. CLI_CMD_HANDLER_DECL(cli_modelc_light_lc);
  231. /* Common Utility Routines */
  232. void cli_cmd_stack_push(/* IN */ CLI_COMMAND *cmd_list, /* IN */ UINT16 cmd_list_len);
  233. void cli_cmd_stack_pop(void);
  234. /* Module related Utility Routines */
  235. void cli_gatt_bearer_iface_event_pl_cb
  236. (
  237. UCHAR ev_name,
  238. UCHAR ev_param
  239. );
  240. #endif /* _H_CLI_MAIN_ */