1 diff -rupN RBL_nRF8001_old/RBL_nRF8001.cpp RBL_nRF8001/RBL_nRF8001.cpp
2 --- RBL_nRF8001_old/RBL_nRF8001.cpp 2015-01-13 12:25:32.000000000 +0530
3 +++ RBL_nRF8001/RBL_nRF8001.cpp 2015-01-13 12:40:41.740244741 +0530
4 @@ -22,7 +22,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOU
7 /* Store the setup for the nRF8001 in the flash of the AVR to save on RAM */
8 -static hal_aci_data_t setup_msgs[NB_SETUP_MESSAGES] PROGMEM = SETUP_MESSAGES_CONTENT;
9 +static const hal_aci_data_t setup_msgs[NB_SETUP_MESSAGES] PROGMEM = SETUP_MESSAGES_CONTENT;
11 #if defined(BLEND_MICRO)
12 static char device_name[11] = "BlendMicro";
13 @@ -31,7 +31,10 @@ static char device_name[11] = "Blend
15 static char device_name[11] = "BLE Shield";
19 +#define BLE_ADDRESS_SIZE 18
20 +static unsigned char *gLeAddress = NULL;
22 static uint16_t Adv_Timeout = 0; // Advertising all the time
23 static uint16_t Adv_Interval = 0x0050; /* advertising interval 50ms
25 @@ -117,7 +120,7 @@ void ble_begin()
26 aci_state.aci_setup_info.services_pipe_type_mapping = NULL;
28 aci_state.aci_setup_info.number_of_pipes = NUMBER_OF_PIPES;
29 - aci_state.aci_setup_info.setup_msgs = setup_msgs;
30 + aci_state.aci_setup_info.setup_msgs = (hal_aci_data_t*)setup_msgs;
31 aci_state.aci_setup_info.num_setup_msgs = NB_SETUP_MESSAGES;
34 @@ -159,7 +162,7 @@ void ble_begin()
35 static volatile byte ack = 0;
37 void ble_write(unsigned char data)
40 if(tx_buffer_len == MAX_TX_BUFF)
43 @@ -199,13 +202,13 @@ unsigned char ble_connected()
46 void ble_set_name(char *name)
55 - Serial.print("the new name is too long");
56 + Serial.print("the new name is too long");
60 @@ -236,6 +239,10 @@ void ble_reset(uint8_t reset_pin)
61 void ble_disconnect(void)
63 lib_aci_disconnect(&aci_state, ACI_REASON_TERMINATE);
64 + if (NULL != gLeAddress)
70 static void process_events()
71 @@ -271,6 +278,7 @@ static void process_events()
72 lib_aci_set_local_data(&aci_state, PIPE_GAP_DEVICE_NAME_SET , (uint8_t *)&device_name , strlen(device_name));
73 lib_aci_connect(Adv_Timeout/* in seconds */, Adv_Interval /* advertising interval 50ms*/);
74 Serial.println(F("Advertising started"));
75 + lib_aci_get_address();
79 @@ -294,6 +302,32 @@ static void process_events()
80 lib_aci_set_local_data(&aci_state, PIPE_DEVICE_INFORMATION_HARDWARE_REVISION_STRING_SET,
81 (uint8_t *)&(aci_evt->params.cmd_rsp.params.get_device_version), sizeof(aci_evt_cmd_rsp_params_get_device_version_t));
84 + if (ACI_CMD_GET_DEVICE_ADDRESS == aci_evt->params.cmd_rsp.cmd_opcode)
86 + if (NULL != gLeAddress)
90 + gLeAddress = (unsigned char *) malloc (BLE_ADDRESS_SIZE);
91 + if (NULL == gLeAddress)
93 + Serial.println("error");
96 + char *tempAddr = (char *) gLeAddress;
98 + for (iter = BTLE_DEVICE_ADDRESS_SIZE - 1; iter >= 0; iter--)
100 + sprintf(tempAddr, "%02x%c",
101 + (uint8_t)aci_evt->params.cmd_rsp.params.get_device_address.bd_addr_own[iter], 58);
104 + gLeAddress[BLE_ADDRESS_SIZE - 1] = '\0';
105 + Serial.println("LEAddress :");
106 + Serial.println((char *)gLeAddress);
111 case ACI_EVT_CONNECTED:
112 @@ -471,3 +505,12 @@ void ble_do_events()
116 +unsigned char* ble_getAddress()
121 +void ble_radio_reset()
123 + lib_aci_radio_reset();
125 diff -rupN RBL_nRF8001_old/RBL_nRF8001.h RBL_nRF8001/RBL_nRF8001.h
126 --- RBL_nRF8001_old/RBL_nRF8001.h 2015-01-13 12:25:32.000000000 +0530
127 +++ RBL_nRF8001/RBL_nRF8001.h 2015-01-13 12:40:41.740244741 +0530
128 @@ -48,6 +48,8 @@ void ble_set_pins(uint8_t reqn, uint8_t
129 unsigned char ble_busy();
130 void ble_reset(uint8_t reset_pin);
131 void ble_disconnect(void);
132 +unsigned char* ble_getAddress();
133 +void ble_radio_reset();