Imported Upstream version 0.9.1
[platform/upstream/iotivity.git] / resource / csdk / connectivity / lib / arduino / RBL_nRF8001.patch
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
5  #endif
6  
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;
10  
11  #if defined(BLEND_MICRO)
12  static char device_name[11] = "BlendMicro";
13 @@ -31,7 +31,10 @@ static char device_name[11] = "Blend
14  #else
15  static char device_name[11] = "BLE Shield";
16  #endif
17 -               
18 +
19 +#define BLE_ADDRESS_SIZE 18
20 +static unsigned char *gLeAddress = NULL;
21 +
22  static uint16_t Adv_Timeout = 0;       // Advertising all the time
23  static uint16_t Adv_Interval = 0x0050; /* advertising interval 50ms
24  
25 @@ -117,7 +120,7 @@ void ble_begin()
26          aci_state.aci_setup_info.services_pipe_type_mapping = NULL;
27      }
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;
32  
33      /*
34 @@ -159,7 +162,7 @@ void ble_begin()
35  static volatile byte ack = 0;
36  
37  void ble_write(unsigned char data)
38 -{          
39 +{
40      if(tx_buffer_len == MAX_TX_BUFF)
41      {
42              return;
43 @@ -199,13 +202,13 @@ unsigned char ble_connected()
44  }
45  
46  void ble_set_name(char *name)
47 -{       
48 +{
49      unsigned char len=0;
50 -    
51 +
52      len = strlen(name);
53      if(len > 10)
54      {
55 -        Serial.print("the new name is too long");        
56 +        Serial.print("the new name is too long");
57      }
58      else
59      {
60 @@ -236,6 +239,10 @@ void ble_reset(uint8_t reset_pin)
61  void ble_disconnect(void)
62  {
63         lib_aci_disconnect(&aci_state, ACI_REASON_TERMINATE);
64 +    if (NULL != gLeAddress)
65 +    {
66 +        free(gLeAddress);
67 +    }
68  }
69  
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();
76                          }
77                          break;
78                  }
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));
82                  }
83 +
84 +                if (ACI_CMD_GET_DEVICE_ADDRESS == aci_evt->params.cmd_rsp.cmd_opcode)
85 +                {
86 +                    if (NULL != gLeAddress)
87 +                    {
88 +                        free(gLeAddress);
89 +                    }
90 +                    gLeAddress = (unsigned char *) malloc (BLE_ADDRESS_SIZE);
91 +                    if (NULL == gLeAddress)
92 +                    {
93 +                        Serial.println("error");
94 +                        break;
95 +                    }
96 +                    char *tempAddr = (char *) gLeAddress;
97 +                    int8_t iter = 0;
98 +                    for (iter = BTLE_DEVICE_ADDRESS_SIZE - 1; iter >= 0; iter--)
99 +                    {
100 +                        sprintf(tempAddr, "%02x%c",
101 +                                 (uint8_t)aci_evt->params.cmd_rsp.params.get_device_address.bd_addr_own[iter], 58);
102 +                        tempAddr += 3;
103 +                    }
104 +                    gLeAddress[BLE_ADDRESS_SIZE - 1] = '\0';
105 +                    Serial.println("LEAddress :");
106 +                    Serial.println((char *)gLeAddress);
107 +                    return;
108 +                }
109                  break;
110  
111              case ACI_EVT_CONNECTED:
112 @@ -471,3 +505,12 @@ void ble_do_events()
113  #endif
114  }
115  
116 +unsigned char* ble_getAddress()
117 +{
118 +    return gLeAddress;
119 +}
120 +
121 +void ble_radio_reset()
122 +{
123 +    lib_aci_radio_reset();
124 +}
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();
134  
135  #endif
136  
137