/*
 *  BLE SERIAL実行関数
 */
ER execute_ble_serial(btstack_init_t *bini,
                         ble_serial_init_t *sini) {
  btstack_handle_t *hbtstack;

  if (bini == NULL || sini == NULL)
    return E_PAR;
  if (sini->semid <= 0 || sini->monid <= 0)
    return E_PAR;

  /*
   *  BLEスタート
   */
  stdiosem = sini->semid;
  mon_tid = sini->monid;
  if ((hbtstack = btstack_init(bini)) == NULL) {
    syslog_0(LOG_ERROR,
             "failed to initialise cyw43_arch");
    return E_SYS;
  }

  /*
   *  BTstackパケットステート設定
   */
  hci_event_callback_registration.callback =
                               &hci_packet_handler;
  hci_add_event_handler(
                 &hci_event_callback_registration);

  l2cap_init();
  sm_init();

  // setup ATT server
  att_server_init(profile_data, NULL, NULL);    ←I2CAP,Security Managerの初期化を行う

  // setup Nordic SPP service
  nordic_spp_service_server_init(
                      &nordic_spp_packet_handler);  ←NUSサービスの初期化を行う

  // register for ATT events
  att_server_register_packet_handler(
                              att_packet_handler);  ←att_packet_handlerをATTイベントに登録

  // setup advertisements   ←BLE_SERVERではパケットのイベントでGATTの設定を行ったが，NUSでは直接GATTデータ設定を行う
  uint16_t adv_int_min = 0x0030;
  uint16_t adv_int_max = 0x0030;
  uint8_t adv_type = 0;
  bd_addr_t null_addr;
  memset(null_addr, 0, 6);
  gap_advertisements_set_params(adv_int_min,
                         adv_int_max, adv_type, 0,
                         null_addr, 0x07, 0x00);
  gap_advertisements_set_data(adv_data_len,
                            (uint8_t *)adv_data);
  gap_advertisements_enable(1);

  /*
   *  BTstackタイマ設定
   */
  ble_serial_timer.process = &bel_serial_handler;   ←BTstack中のタイマ設定しコールバック関数を登録する
  btstack_run_loop_set_timer(&ble_serial_timer,
                                 SERIAL_PERIOD_MS);
  btstack_run_loop_add_timer(&ble_serial_timer);

  /*
   *  HCIパワーオン
   */
  hci_power_control(HCI_POWER_ON);  ←パワーオン設定
アドバタイズ開始


  /*
   * BTstackポーリング開始
   */
  btstack_dispatch(hbtstack);

  /*
   *  BLE終了
   */
  btstack_deinit(hbtstack);
  return E_OK;
}
