朋友们、您好!
我将 CC2650moda 用于我的项目。 我使用 simple_peripheral 示例通过 BLE 发送 ADC 数据。 在移动应用中、BLE 的名称显示为"BLE Peripheral"。 我想更改此名称。 因此、我更改了静态 uint8_t scanRspData[]和 静态 uint8_t attDeviceName[GAP_DEVICE_NAME_LEN] 字段、但它不起作用。 有人能否告诉我如何更改应用中显示的 BLE 器件名称?
规格-
CCS 版本:7.0.0.00042
TI RTOS - 2 20 1 08
BLE SDK - 2 02 01 18
#include <xdc/std.h> #include <xdc/runtime/Error.h> #include <xdc/runtime/System.h> #include <stdio.h> #include <string.h> #include <ti/drivers/ADC.h> #include <ti/drivers/PIN.h> #include <ti/drivers/I2C.h> #include <ti/sysbios/knl/Task.h> #include <ti/sysbios/knl/Clock.h> #include <ti/sysbios/knl/Semaphore.h> #include <ti/sysbios/knl/Queue.h> #include "hci_tl.h" #include "gatt.h" #include "linkdb.h" #include "gapgattserver.h" #include "gattservapp.h" #include "devinfoservice.h" #include "simple_gatt_profile.h" //#include "ADS1115.h" #if defined(FEATURE_OAD) || defined(IMAGE_INVALIDATE) #include "oad_target.h" #include "oad.h" #endif //FEATURE_OAD || IMAGE_INVALIDATE #include "peripheral.h" #include "gapbondmgr.h" #include "osal_snv.h" #include "icall_apimsg.h" #include "util.h" #ifdef USE_RCOSC #include "rcosc_calibration.h" #endif //USE_RCOSC #include <ti/mw/display/Display.h> #include "board_key.h" #include "board.h" #include "simple_peripheral.h" #if defined( USE_FPGA ) || defined( DEBUG_SW_TRACE ) #include <driverlib/ioc.h> #endif // USE_FPGA | DEBUG_SW_TRACE /********************************************************************* * CONSTANTS */ // Advertising interval when device is discoverable (units of 625us, 160=100ms) #define DEFAULT_ADVERTISING_INTERVAL 160 // Limited discoverable mode advertises for 30.72s, and then stops // General discoverable mode advertises indefinitely #define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_GENERAL #ifndef FEATURE_OAD // Minimum connection interval (units of 1.25ms, 80=100ms) if automatic // parameter update request is enabled #define DEFAULT_DESIRED_MIN_CONN_INTERVAL 80 // Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic // parameter update request is enabled #define DEFAULT_DESIRED_MAX_CONN_INTERVAL 800 #else //!FEATURE_OAD // Minimum connection interval (units of 1.25ms, 8=10ms) if automatic // parameter update request is enabled #define DEFAULT_DESIRED_MIN_CONN_INTERVAL 8 // Maximum connection interval (units of 1.25ms, 8=10ms) if automatic // parameter update request is enabled #define DEFAULT_DESIRED_MAX_CONN_INTERVAL 8 #endif // FEATURE_OAD // Slave latency to use if automatic parameter update request is enabled #define DEFAULT_DESIRED_SLAVE_LATENCY 0 // Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter // update request is enabled #define DEFAULT_DESIRED_CONN_TIMEOUT 1000 // Whether to enable automatic parameter update request when a connection is // formed #define DEFAULT_ENABLE_UPDATE_REQUEST GAPROLE_LINK_PARAM_UPDATE_INITIATE_BOTH_PARAMS // Connection Pause Peripheral time value (in seconds) #define DEFAULT_CONN_PAUSE_PERIPHERAL 6 // How often to perform periodic event (in msec) #define SBP_PERIODIC_EVT_PERIOD 5000 //5000 #ifdef FEATURE_OAD // The size of an OAD packet. #define OAD_PACKET_SIZE ((OAD_BLOCK_SIZE) + 2) #endif // FEATURE_OAD // Task configuration #define TASKSTACKSIZE (768) Task_Struct task1Struct; Char task1Stack[TASKSTACKSIZE]; #define SBP_TASK_PRIORITY 1 #ifndef SBP_TASK_STACK_SIZE #define SBP_TASK_STACK_SIZE 644 #endif // Internal Events for RTOS application #define SBP_STATE_CHANGE_EVT 0x0001 #define SBP_CHAR_CHANGE_EVT 0x0002 #define SBP_PERIODIC_EVT 0x0004 #define SBP_CONN_EVT_END_EVT 0x0008 /********************************************************************* * TYPEDEFS */ //Function declaration void getadcData(void); void sendData(void); // App event passed from profiles. typedef struct { appEvtHdr_t hdr; // event header. } sbpEvt_t; /********************************************************************* * GLOBAL VARIABLES */ // Display Interface Display_Handle dispHandle = NULL; /********************************************************************* * LOCAL VARIABLES */ // Entity ID globally used to check for source and/or destination of messages static ICall_EntityID selfEntity; // Semaphore globally used to post events to the application thread static ICall_Semaphore sem; // Clock instances for internal periodic events. static Clock_Struct periodicClock; // Queue object used for app messages static Queue_Struct appMsg; static Queue_Handle appMsgQueue; #if defined(FEATURE_OAD) // Event data from OAD profile. static Queue_Struct oadQ; static Queue_Handle hOadQ; #endif //FEATURE_OAD // events flag for internal application events. static uint16_t events; // Task configuration Task_Struct sbpTask; Char sbpTaskStack[SBP_TASK_STACK_SIZE]; // Profile state and parameters //static gaprole_States_t gapProfileState = GAPROLE_INIT; // GAP - SCAN RSP data (max size = 31 bytes) static uint8_t scanRspData[] = { // complete name 0x14, // length of this data GAP_ADTYPE_LOCAL_NAME_COMPLETE, 'S', 'i', 'm', 'p', 'l', 'e', 'B', 'L', 'E', 'P', 'e', 'r', 'i', 'p', 'h', 'e', 'r', 'a', 'l', // connection interval range 0x05, // length of this data GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE, LO_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL), // 100ms HI_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL), LO_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL), // 1s HI_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL), // Tx power level 0x02, // length of this data GAP_ADTYPE_POWER_LEVEL, 0 // 0dBm }; // GAP - Advertisement data (max size = 31 bytes, though this is // best kept short to conserve power while advertisting) static uint8_t advertData[] = { // Flags; this sets the device to use limited discoverable // mode (advertises for 30 seconds at a time) instead of general // discoverable mode (advertises indefinitely) 0x02, // length of this data GAP_ADTYPE_FLAGS, DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED, // service UUID, to notify central devices what services are included // in this peripheral #if !defined(FEATURE_OAD) || defined(FEATURE_OAD_ONCHIP) 0x03, // length of this data #else //OAD for external flash 0x05, // lenght of this data #endif //FEATURE_OAD GAP_ADTYPE_16BIT_MORE, // some of the UUID's, but not all #ifdef FEATURE_OAD LO_UINT16(OAD_SERVICE_UUID), HI_UINT16(OAD_SERVICE_UUID), #endif //FEATURE_OAD #ifndef FEATURE_OAD_ONCHIP LO_UINT16(SIMPLEPROFILE_SERV_UUID), HI_UINT16(SIMPLEPROFILE_SERV_UUID) #endif //FEATURE_OAD_ONCHIP }; // GAP GATT Attributes static uint8_t attDeviceName[GAP_DEVICE_NAME_LEN] = "Simple BLE Peripheral";//"Right Side D1";//"Simple BLE Peripheral"; // Globals used for ATT Response retransmission static gattMsgEvent_t *pAttRsp = NULL; static uint8_t rspTxRetry = 0; /********************************************************************* * LOCAL FUNCTIONS */ static void SimpleBLEPeripheral_init( void ); static void SimpleBLEPeripheral_taskFxn(UArg a0, UArg a1); static uint8_t SimpleBLEPeripheral_processStackMsg(ICall_Hdr *pMsg); static uint8_t SimpleBLEPeripheral_processGATTMsg(gattMsgEvent_t *pMsg); static void SimpleBLEPeripheral_processAppMsg(sbpEvt_t *pMsg); static void SimpleBLEPeripheral_processStateChangeEvt(gaprole_States_t newState); static void SimpleBLEPeripheral_processCharValueChangeEvt(uint8_t paramID); static void SimpleBLEPeripheral_performPeriodicTask(void); static void SimpleBLEPeripheral_clockHandler(UArg arg); static void SimpleBLEPeripheral_sendAttRsp(void); static void SimpleBLEPeripheral_freeAttRsp(uint8_t status); static void SimpleBLEPeripheral_stateChangeCB(gaprole_States_t newState); #ifndef FEATURE_OAD_ONCHIP static void SimpleBLEPeripheral_charValueChangeCB(uint8_t paramID); #endif //!FEATURE_OAD_ONCHIP static void SimpleBLEPeripheral_enqueueMsg(uint8_t event, uint8_t state); #ifdef FEATURE_OAD void SimpleBLEPeripheral_processOadWriteCB(uint8_t event, uint16_t connHandle, uint8_t *pData); #endif //FEATURE_OAD /********************************************************************* * PROFILE CALLBACKS */ // GAP Role Callbacks static gapRolesCBs_t SimpleBLEPeripheral_gapRoleCBs = { SimpleBLEPeripheral_stateChangeCB // Profile State Change Callbacks }; // GAP Bond Manager Callbacks static gapBondCBs_t simpleBLEPeripheral_BondMgrCBs = { NULL, // Passcode callback (not used by application) NULL // Pairing / Bonding state Callback (not used by application) }; // Simple GATT Profile Callbacks #ifndef FEATURE_OAD_ONCHIP static simpleProfileCBs_t SimpleBLEPeripheral_simpleProfileCBs = { SimpleBLEPeripheral_charValueChangeCB // Characteristic value change callback }; #endif //!FEATURE_OAD_ONCHIP #ifdef FEATURE_OAD static oadTargetCBs_t simpleBLEPeripheral_oadCBs = { SimpleBLEPeripheral_processOadWriteCB // Write Callback. }; #endif //FEATURE_OAD /********************************************************************* * PUBLIC FUNCTIONS */ /********************************************************************* * @fn SimpleBLEPeripheral_createTask * * @brief Task creation function for the Simple BLE Peripheral. * * @param None. * * @return None. */ void SimpleBLEPeripheral_createTask(void) { Task_Params taskParams; // Configure task Task_Params_init(&taskParams); taskParams.stack = sbpTaskStack; taskParams.stackSize = SBP_TASK_STACK_SIZE; taskParams.priority = SBP_TASK_PRIORITY; Task_construct(&sbpTask, SimpleBLEPeripheral_taskFxn, &taskParams, NULL); }