Add carrier power state to struct bt_data
authorSzymon Janc <szymon.janc@tieto.com>
Fri, 4 Jan 2013 15:10:25 +0000 (16:10 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 31 Jan 2013 00:35:18 +0000 (01:35 +0100)
Add state to bt_data and set it according to power state received in
Hs/Hr messages.

src/bluetooth.c
src/ndef.c
src/near.h

index 51b659b..24471f4 100644 (file)
@@ -867,6 +867,11 @@ struct bt_data *__near_bluetooth_local_get_properties(uint16_t mime_props)
 
        data->data[0] = data->size ;
 
+       if (bt_def_oob_data.powered == TRUE)
+               data->state = CPS_ACTIVE;
+       else
+               data->state = CPS_INACTIVE;
+
        return data;
 
 fail:
index 1a69859..9139d1e 100644 (file)
@@ -1364,7 +1364,8 @@ static void correct_eir_len(struct bt_data *data)
 static struct near_ndef_mime_payload *
 parse_mime_type(struct near_ndef_record *record, uint8_t *ndef_data,
                size_t ndef_length, size_t offset, uint32_t payload_length,
-               near_bool_t action, struct near_ndef_message **reply)
+               near_bool_t action, struct near_ndef_ac_payload *ac,
+               struct near_ndef_message **reply)
 {
        struct near_ndef_mime_payload *mime = NULL;
        int err = 0;
@@ -1404,6 +1405,15 @@ parse_mime_type(struct near_ndef_record *record, uint8_t *ndef_data,
        if (data.size == 0)
                goto done;
 
+       /*
+        * ac might be NULL if not present eg. in simplified tag format for
+        * a single BT carrier.
+        */
+       if (ac != NULL)
+               data.state = ac->cps;
+       else
+               data.state = CPS_UNKNOWN;
+
        if (__near_agent_handover_registered() == TRUE) {
                if (action == TRUE)
                        err = __near_agent_handover_push_data(&data);
@@ -2151,7 +2161,7 @@ static struct near_ndef_ho_payload *parse_ho_payload(enum record_type rec_type,
                        mime = parse_mime_type(trec, payload, frame_length,
                                                offset,
                                                trec->header->payload_len,
-                                               bt_pair, reply);
+                                               bt_pair, ac, reply);
 
                        trec->ho = NULL;
 
@@ -2440,7 +2450,7 @@ GList *near_ndef_parse_msg(uint8_t *ndef_data, size_t ndef_length,
                        record->mime = parse_mime_type(record, ndef_data,
                                                ndef_length, offset,
                                                record->header->payload_len,
-                                               TRUE, reply);
+                                               TRUE, NULL, reply);
 
 
                        if (record->mime == NULL)
index 474d4dc..0628c3b 100644 (file)
@@ -181,6 +181,7 @@ void __near_plugin_cleanup(void);
 struct bt_data {
        uint8_t type;
        uint8_t size;
+       enum carrier_power_state state;
        uint8_t data[UINT8_MAX];
 };