cli_brr.c 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. /**
  2. * \file cli_brr.c
  3. *
  4. * This File contains the "main" function for the CLI application,
  5. * to exercise various functionalities of the Mindtree Mesh stack.
  6. */
  7. /*
  8. * Copyright (C) 2017. Mindtree Ltd.
  9. * All rights reserved.
  10. */
  11. /* ------------------------------- Header File Inclusion */
  12. #include "cli_main.h"
  13. #include "blebrr.h"
  14. /* --------------------------------------------- External Global Variables */
  15. /* ------------------------------- Global Variables */
  16. DECL_CONST CLI_COMMAND cli_core_client_menu_cmd_list[] =
  17. {
  18. /* Help */
  19. { "help", "Help", cli_help },
  20. /* Create GATT Connection to Peer */
  21. { "connect", "Create GATT Connection", cli_create_gatt_conn},
  22. /* Initiate GATT Disconnection with Peer */
  23. { "disconnect", "Terminate GATT Connection", cli_terminate_gatt_conn },
  24. /* Start or Stop Scan in Bearer */
  25. { "scan", "Enable/Disable Scanning", cli_scan_feature},
  26. /* Set Scan Response Data */
  27. { "srsp_set", "Set Scan Response Data", cli_scan_rsp_data_set},
  28. /* Discover GATT Bearer Services */
  29. {"discover", "Discover GATT Service", cli_discover_service},
  30. /* Enable/Disable GATT Bearer Services for Notfications */
  31. {"config_ntf", "Enable/Disable Notification", cli_config_ntf},
  32. /* Back */
  33. { "back", "One Level Up", cli_back },
  34. /* Root */
  35. { "root", "Back to Root", cli_root }
  36. };
  37. /* ------------------------------- Functions */
  38. API_RESULT cli_brr(UINT32 argc, UCHAR *argv[])
  39. {
  40. cli_cmd_stack_push((CLI_COMMAND *)cli_core_client_menu_cmd_list, sizeof(cli_core_client_menu_cmd_list) / sizeof(CLI_COMMAND));
  41. cli_help(argc, argv);
  42. return API_SUCCESS;
  43. }
  44. API_RESULT cli_create_gatt_conn(UINT32 argc, UCHAR *argv[])
  45. {
  46. UCHAR peer_bd_addr_type;
  47. UCHAR peer_bd_addr[6];
  48. API_RESULT retval;
  49. if (2 != argc)
  50. {
  51. CONSOLE_OUT("Usage: connect <Peer Address Type> <Peer Address MSB-LSB>\n");
  52. return API_FAILURE;
  53. }
  54. peer_bd_addr_type = (UCHAR)CLI_strtoi(argv[0], (UINT8)CLI_strlen(argv[0]), 16);
  55. CLI_strtoarray
  56. (
  57. argv[1],
  58. CLI_strlen(argv[1]),
  59. &peer_bd_addr[0],
  60. 6
  61. );
  62. retval = blebrr_create_gatt_conn_pl(peer_bd_addr_type, peer_bd_addr);
  63. CONSOLE_OUT("retval = 0x%04X\n", retval);
  64. return retval;
  65. }
  66. API_RESULT cli_scan_feature(UINT32 argc, UCHAR *argv[])
  67. {
  68. CONSOLE_OUT("\n Scan Start Stop Feature to be extended for CLI\n");
  69. return API_FAILURE;
  70. }
  71. API_RESULT cli_scan_rsp_data_set(UINT32 argc, UCHAR *argv[])
  72. {
  73. /**
  74. * Currently setting MT-MESH-DEMO as Complete Device Name!
  75. * This can be updated to each individual devices as per requirement.
  76. */
  77. UCHAR cli_brr_scanrsp_data[] = {
  78. /**
  79. * Shortened Device Name: MT-MESH-DEMO
  80. */
  81. 0x0D, 0x09, 'M', 'T', '-', 'M', 'E', 'S', 'H', '-', 'D', 'E', 'M', 'O'
  82. };
  83. CONSOLE_OUT("\n Setting MT-MESH-DEMO as Complete Device Name!\n");
  84. /* Set the Scan Response Data at the Bearer Layer */
  85. blebrr_set_adv_scanrsp_data_pl
  86. (
  87. cli_brr_scanrsp_data,
  88. sizeof(cli_brr_scanrsp_data)
  89. );
  90. return API_SUCCESS;
  91. }
  92. API_RESULT cli_terminate_gatt_conn(UINT32 argc, UCHAR *argv[])
  93. {
  94. API_RESULT retval;
  95. retval = blebrr_disconnect_pl();
  96. if (API_SUCCESS != retval)
  97. {
  98. CONSOLE_OUT("Failed to stop Adv");
  99. return retval;
  100. }
  101. CONSOLE_OUT("Disconnected successfully\n\n");
  102. return retval;
  103. }
  104. API_RESULT cli_discover_service(UINT32 argc, UCHAR *argv[])
  105. {
  106. UCHAR service;
  107. if (1 != argc)
  108. {
  109. CONSOLE_OUT("Usage: discover <Service:[0-Mesh Provisioning service, 1-Mesh Proxy Service]>\n");
  110. return API_FAILURE;
  111. }
  112. service = (UCHAR)CLI_strtoi(argv[0], (UINT8)CLI_strlen(argv[0]), 16);
  113. return blebrr_discover_service_pl(service);
  114. }
  115. API_RESULT cli_config_ntf(UINT32 argc, UCHAR *argv[])
  116. {
  117. UCHAR config_ntf;
  118. UCHAR mode;
  119. if (2 != argc)
  120. {
  121. CONSOLE_OUT("Usage: config_ntf < 0 - Disable, 1 - Enable> <Service:[0-Mesh Provisioning service, 1-Mesh Proxy Service]>\n");
  122. return API_FAILURE;
  123. }
  124. config_ntf = (UCHAR)CLI_strtoi(argv[0], (UINT8)CLI_strlen(argv[0]), 16);
  125. mode = (UCHAR)CLI_strtoi(argv[1], (UINT8)CLI_strlen(argv[1]), 16);
  126. return blebrr_confige_ntf_pl(config_ntf, mode);
  127. }