CC2431
Number of messages:
Shows the total number of incoming messages to the PC
application since the Z-Location Engine was started.
Number
of
blind
node
messages:
Shows the total number of incoming blind node
messages since the Z-Location Engine was started. The
Number of unsuccessful messages is the number of
messages that is reported to be false.
Dongle status: Shows the current status for the connected location dongle.
11. Nodes
10.1 Blind Node Theory of Operation
The Blind Node is the device that contains the CC2431 location engine. The location engine
estimates its position by using the coordinates of all responding reference nodes within direct
radio range (up to 16) along with the average RSSI of messages sent to them. Reference
Nodes are neighbour devices that are within radio range of the Blind Node. The Blind Node
begins a find by broadcasting a sequence of blast message (Cluster ID: 0x0019) with radius
one. After waiting the interval specified in its configuration, the blind node then broadcasts to
the Reference Nodes a position request (Cluster ID: 0x0011), also with radius one in order to
limit the recipients (and thus responders) to the reference nodes in direct radio range.
Each Reference Node that hears the blast broadcasts will begin averaging the RSSI of the
series of messages received. Upon receiving the position request, the Reference Node will
send back to the Blind Node its position information along with the average received signal
strength over the series of blasts.
There are two main modes of operation for the Blind Node in the sample Location Profile.
11.1.1 Polled Mode
This mode requires that the Dongle make a request for the position of the blind node on
demand, and thus the Blind Node will only acquire the Reference Node data when it is
requested using the Blind Node Request command (Cluster ID: 0x0013). It will then
perform the required calculation, and then send a Blind Node Response (Cluster ID:
0x0014) back to the original requester.
When the Blind Node Request command is sent to a Blind Node, the request is processed
in the
BlindNode_ProcessEvent()
event handler (which handles all the system and user
events for the Blind Node location application). The application is notified of an incoming
over-the-air message from the TIMAC and it processes the incoming message. If the
incoming message has a Cluster ID that matches the Blind Node Request command, then
it will start the process of acquiring the Reference Node information by calling
startBlast()
.
The first thing the BLINDNODE_FIND_EVT event handler does is to turn on the
RxOnWhenIdle flag in the TIMAC capabilities flag of the device. In the case where a Blind
Node is an end device, this is done in order for it to receive Reference Node information
without having to poll for the actual data packet (using a Data Request packet). This also
ensures that end devices can stay awake for the entire period of time when the acquisition
of Reference Node information is taking place.
The Blind Node will then send out a series of 1-hop broadcast messages. Once the Blind
Node finishes blasting it requests the Reference Node audience to send the average RSSI
of messages just sent and waits the configured time for reference nodes to respond.
Finally, it calls the function
FinishCollection()
to set the RxOnWhenIdle flag to false so
that “normal” end device operation is once again adhered to.
The function
sendRsp()
is then called to process the received Reference Node data and
calculate the Blind Node’s position based on that information. If the Blind Node was able to
collect data from at least config.minRefNodes number of nodes, the status
BLINDNODE_RSP_STATUS_SUCCESS
will be returned as part of the message. If not,
the status
BLINDNODE_RSP_STATUS_NOT_ENOUGH_REFNODES
will be returned as
part of the message. The response is sent to the device that was the originator of the Blind
Node Request.
SWRU076D
Page 25 of 32