AD-HOC WIRELESS COMMUNICATION

The present disclosure provides a method of transmitting and receiving data between devices via an ad-hoc wireless communication network. The ad-hoc wireless network uses a time frame having time slots, each of the time slots is assignable to one of the devices so that a device assigned to a time slot transmits and receives the data at the assigned time slot. The present disclosure also provides that the time frame is created by one of the devices.

TECHNICAL FIELD

The present invention relates generally to wireless communication and, in particular, to an ad-hoc wireless communication system.

BACKGROUND

Ultra-wideband (UWB) is a wireless communication technology that uses a very low energy level for short-range, high-bandwidth communications. Devices using UWB operate under the same radio-frequency configuration (such as frequency band, coding, modulation, etc.). When these UWB devices are used at the same location, two transmitted UWB signals overlapping in time results in signal collision.

To overcome the problem of signal collision, a mechanism called ALOHA is used. The ALOHA mechanism enables UWB devices to transmit UWB signals without any coordination. If a signal collision is detected, then a UWB device resends the UWB signals. However, the ALOHA mechanism is not effective in overcoming this problem when the number of UWB devices increases.

The ALOHA mechanism has a communication success rate of 97% when only 18% of the air is utilized. For example, in a time frame of 10 seconds, only 1.8 second of that time frame can be used to ensure that communication between the UWB devices is successful 97% of the time. This means 82% of the time is unused.

In another conventional solution, a server is deployed to coordinate when each UWB device can transmit UWB signals. However, this conventional solution is inappropriate in certain circumstances.

SUMMARY

Disclosed is a method of establishing an ad-hoc UWB communication method which seek to address the above problems.

According to an aspect of the present disclosure, there is provided a method of transmitting and receiving data between devices via an ad-hoc wireless communication network, the ad-hoc wireless network using a time frame having time slots, each of the time slots is assignable to one of the devices so that a device assigned to a time slot transmits and receives the data at the assigned time slot, the time frame being created by one of the devices.

According to another aspect of the present disclosure, there is provided a computer program product executable by a processor, the computer program product comprising a method of transmitting and receiving data between devices via an ad-hoc wireless communication network, the ad-hoc wireless network using a time frame having time slots, each of the time slots is assignable to one of the devices so that a device assigned to a time slot transmits and receives the data at the assigned time slot, the time frame being created by one of the devices.

According to another aspect of the present disclosure, there is provided an apparatus for implementing any one of the aforementioned methods.

According to another aspect of the present disclosure, there is provided a computer program product including a computer readable medium having recorded thereon a computer program for implementing any one of the methods described above.

Other aspects are also disclosed.

DETAILED DESCRIPTION

It is to be noted that the discussions contained in the “Background” section and that above relating to prior art arrangements relate to discussions of documents or devices which form public knowledge through their respective publication and/or use. Such should not be interpreted as a representation by the present inventor(s) or the patent applicant that such documents or devices in any way form part of the common general knowledge in the art.

FIG.1shows a system100having initiators110A to110H and responders120A to120E. The system100will be described in relation to a mining environment having underground mining vehicles and miners, where the underground mining vehicles are equipped with initiators110A to110H and the miners are equipped with the responders120A to120E. More than one initiators110A to110H may be disposed on an object. For example a large mining vehicle may be equipped with more than one initiators110A to110H.

Hereinafter, the initiators110A to110H will be collectively referred to as the initiators110while the responders120A to120E will be collectively referred to as the responders120. When referring to a single initiator, the term the initiator110or a specific number110A to110H will be used. When referring to a single responder, the term the responder120or a specific number120A to120E will be used.

Although 8 initiators110and5responders120are shown inFIG.1, there may be more initiators110and responders120. Similarly, there may be less initiators110and responders120than those shown inFIG.1.

The initiators110and responders120are UWB devices that are capable of wirelessly communicating with each other using UWB technology.FIG.1shows that an initiator110(e.g., initiator110A) communicates with certain other initiators110(e.g., initiators110B,110C, and110E) as these other initiators110(e.g., initiators110B,110C, and110E) are within the range of the initiator110A. However, the initiator110A is capable of communicating with other initiators110D,110F,110G, and110H when these other initiators110D,110F,110G, and110H come into communication range of the initiator110A (as indicated by the broken lines between the initiators110A and110F). Unlike conventional arrangements such as the ALOHA mechanism, the initiators110and responders120transmit UWB signals at predetermined times, thereby preventing signal collision from occurring. As can be seen inFIG.1, the present disclosure does not use a central server to coordinate the transmission of the UWB signals by the initiators110and responders120.

Similar to the communication between initiators110, the responders120also communicate with any of the initiators110when the responders120come into communication range of any one of the initiators110. Further, althoughFIG.1shows only the communication going from a responder120to an initiator110, the initiator110transmits communication signals (e.g., a ranging request) to the responder120. The communication between an initiator110and other initiators110or responders120will be discussed hereinafter.

The transmission of UWB signals by the initiators110and responders120is managed by a time frame200, as shown inFIG.2A. Each of the initiators110maintains the time frame200. The time frame200is a time period in which signals indicating a usage plan of time-space can be transmitted. The time period spans between 40 and 320 ms.

The time frame200is divided into different time periods called time slots210A to210D. Hereinafter, the time slots210A to210D will be collectively referred to as the time slots210. When referring to a single time slot, the term the time slot210or a specific number210A to210D will be used. Although only four time slots210A to210D are shown in the time frame200, there can be more time slots210. In one arrangement, the number of time slots210vary between 4 and 16. A time slot210is a span of time period in which an initiator110can transmit a UWB signal, to which other initiators110and the responders120respond. A time slot210is assigned to one initiator110to prevent signal collision from occurring. Each time slot210spans a time period of 10 to 20 ms. A time slot210can be unassigned, meaning no UWB signal is transmitted during an unassigned time slot210.

The time frame200shown inFIG.2Ais one cycle of transmission of UWB signals. The time frame200repeats once a previous time frame200is completed.

FIG.2Bshows that each time slot210is divided into four time periods, namely a block sync message220, ack230, function240, and buffer250.FIG.2Bis not drawn to scale, and the block sync message220, ack230, function240, and buffer250do not have the same time period.

The block sync message220is the time period in which a block sync message is sent by the initiator110assigned to the time slot210. The ack230is the time period in which the surrounding responders120and initiators110send acknowledgement messages after receiving the block sync message220transmitted at the block sync message time period220. The function240is the time period in which the initiator110assigned to the time slot210performs an action. The buffer250is a time period buffering the current time slot (e.g., time slot210A) from the next time slot (e.g., time slot210B).

The acknowledgement messages (sent by the surrounding initiators110and responders120during ack230) include the identification numbers of those surrounding initiators110and responders120. The acknowledge messages enable the initiator110(which is assigned to the time slot210) to be aware of the surrounding initiators110and responders120. The initiator110then transmit the necessary action function to the surrounding initiators110and responders120at function240. In the example mining environment, the function240is a ranging process for determining relative distances between the initiator110and the surrounding initiators110and responders120. Such a ranging process also determines the relative locations of the surrounding initiators110and responders120.

For ease of reference, the present disclosure uses the same reference numeral of the time period when referring to the message associated with that time period. For example, the reference numeral220is used to represent the block sync message itself and also the time period in which the block sync message is sent.

FIG.2Cshows that the data structure of block sync message220of header222, message type224, message source226, and time frame information228.FIG.2Cis not drawn to scale, and the header222, message type224, message source226, and time frame information228do not have the same length.

The header222is generated with a format having information such as personal area network identification (PAN ID), data frame structure, and the like. The message type224is a single byte to indicate the message type. The message source226includes 2-6 bytes indicating the identification of the UWB device (i.e., the initiator110assigned to the time slot210) that is sending the block sync message220.

The time frame information228includes data blocks, namely time frame identification228A, current time slot index228B, and time slot information228CA to228CN. The time frame identification228A is the data block in which the priority level of the time frame200is indicated. The current time slot index228B is the data block in which the position of the current time slot (e.g., time slot210B) within the time frame200is indicated.

Time slot information228CA to228CN are the data blocks indicating the assignment between the respective initiators110and the respective time slots210A to210N. Each time slot information228CA to228CN is also used to indicate the expiry of the assignment between an initiator110and that time slot210.

For example, time slot210A is assigned to initiator110A and this assignment expires after10more cycles of time frame200. Therefore, at time slot information228CA, a signal is transmitted indicating the assignment of time slot210A to initiator110A and that the assignment expires in 10 cycles.

Each initiator110stores a copy of the time frame information228. However, as the system100does not have a centralized controller, the time frame information228stored at one initiator110may be different to the time frame information228stored at another initiator110. A method to resolve such a difference will be discussed hereinafter in relation toFIGS.4A,4B, and5A.

The initiator110has two modes: listening mode and active mode. In the listening mode, an initiator110listens to any block sync messages220sent by any other initiators110. The method300(shown inFIG.3) is executed when the initiator110is in the listening mode. The methods described hereinafter are methods to operate an ad-hoc wireless network in accordance with the present disclosure.

In the active mode, the initiator110is capable of receiving block sync messages220from other initiators110. The method400(shown inFIGS.4A and4B) is executed when the initiator110receives any block sync messages220from other initiators110. In the active mode, an initiator110also has a time slot210selected in which to transmit a block sync message220and perform a function (e.g., a ranging process). The method500(shown inFIG.5A) is executed when the initiator110is transmitting a block sync message220at a selected time slot210.FIG.5Bis executed to perform a ranging process (i.e., an example action of the function240).

FIG.3is the method300executed by an initiator110in listening mode. The method300is executed by a computer application program1333executable within the embedded controller1302(described below in relation toFIGS.8A and8B) of the initiator110.

An initiator110enters the listening mode when the initiator110is initially turned on. An initiator110also enters listening mode when certain circumstances occur, as will be described hereinafter.

The method300commences at step302by determining whether the initiator110has received a block sync message220from any other initiators110or a timer has expired. The initiator110has a timer that is triggered when the initiator110enters the listening mode. In one arrangement, the timer is a 2 second timer.

If a block sync message220is received from other initiators110, the method300proceeds from step302to step304. Otherwise, if the timer expires, the method300proceeds from step302to step310.

In step304, the method300determines whether there is an empty time slot210within the time frame200of the received block sync message220. As discussed in relation toFIGS.2B to2D, the block sync message220includes the time frame information228having the time slot information228CA to228CN. Accordingly, the initiator110decodes the time frame slot information228CA to228CN to determine whether there are any unassigned time slots210. If there are any empty time slots210(YES), the method300proceeds from step304to step306. Otherwise, if there is no empty time slot210(NO), the method300proceeds from step304to step302.

As discussed above, the method300proceeds from step302to step310when the time expires. In step310, the method300creates a time frame200where the time slots210are unassigned. The created time frame200is stored in memory1309of the initiator110(seeFIGS.8A and8Band associated description). The method300then proceeds from step310to step306.

In step306, the method300selects an empty time slot210and proceeds to step308.

In step308, the initiator110enters the active mode. The method300concludes at the conclusion of step308.

As described above, the method400ofFIGS.4A and4Bis executed by the initiator110when receiving block sync messages220from other initiators110. The method400is executed by a firmware1333executable within the embedded controller1302(described below in relation toFIGS.8A and8B) of the initiator110.

The method400is executed when the initiator110receives block sync message(s)220from other initiators110, shown inFIG.4A. Once the block sync message(s)220are received, the method400commences at step402by determining the priority levels of the time frames200of the received block sync messages220. As described above, the priority level of the time frame200is signalled in the data block represented by the time frame identification228A. In one arrangement, the priority level is set to the number of initiators110assigned to the time frame200. For example, if initiator110A is assigned to time slot210B of a time frame200and the remaining time slots210A and210C to210D are unassigned, then the priority level of the time frame200is 1. If time slots210C and210D are subsequently assigned to other initiators110, then the priority level of the time frame200becomes 3. The priority level is used to resolve differences between different time frames200.

In one arrangement, the method400waits for a period of time to allow further block sync messages220to be received.

Once the priority level of a received block sync message220is determined, there are three possible scenarios:1. The priority level of the block sync message220received is higher than the priority level of the time frame200of the initiator110executing the method400;2. The priority level of the block sync message220received is the same as the priority level of the time frame200of the initiator110executing the method400; and3. The priority level of the block sync message220received is lower than the priority level of the time frame200of the initiator110executing the method400.

In the first scenario (Higher Priority), the method400proceeds from step402to step406.

In the second scenario (Same Priority), the method400from step402to sub-process420.

In the third scenario (Lower Priority), the method400proceeds from step402to step404.

In step406, the method400updates the time frame information228of the initiator110executing the method400with the time frame information228of the received block sync message220with the highest priority level. In other words, the initiator110executing the method400now stores the same time frame information228as the time frame information228of the received block sync message220. The method400then proceeds from step406to step408.

In step408, the method400determines whether there is an empty time slot in the updated time frame information228. If there are any empty time slots210(YES), the method400proceeds from step408to step410. Otherwise, if there is no empty time slot210(NO), the method400proceeds from step408to the method300(i.e., listening mode) to put the initiator110into the listening mode.

In step410, the method400selects an empty time slot210and proceeds to step308.

In step308, the initiator110enters the active mode. The method400concludes at the conclusion of step308.

As described above, the third scenario proceeds from step402to step404. In step404, the method400transmits a deny message responding to the received block sync messages220. The method400then proceeds from step404to step308.

As described above, the second scenario proceeds to sub-process420. The flowchart of sub-process420is illustrated inFIG.4B. The sub-process420is executed by a firmware1333executable within the embedded controller1302(described below in relation toFIGS.8A and8B) of the initiator110.

Sub-process420commences at step412by determining whether more than one block sync messages220having the same priority level are received. If there are more than one block sync messages220(YES), sub-process420proceeds from step421to step422. Otherwise (NO), sub-process420proceeds from step421to step425.

In step422, sub-process420determines the first block sync message220(having the same priority level) that is received by the initiator110executing the sub-process420. Sub-process420proceeds from step422to step425for the first block sync message220. Sub-process420proceeds from step422to step423for the remaining block sync messages220.

In step423, sub-process420transmits a deny message for the remaining block sync messages220. Sub-process420then concludes and returns to the method400.

In step425, sub-process420determines whether the initiator110relating to the first block sync message220is claiming the time slot210that is selected by the initiator110executing sub-process420. If so (YES), sub-process420proceeds from step425to the method300(i.e., listening mode) to put the initiator110into the listening mode. If not (NO), sub-process420proceeds from step425to step426.

In step426, sub-process420updates the time frame information228of the initiator110executing sub-process420with the time frame information228of the received block sync message220. In one arrangement, the initiator110copies the time slot information228CA to228CN from the received block sync message220.

In an alternative arrangement, the initiator110first determines the time slot information228CA to228CN from the received block sync message220and, for any time slot information228C that are different, adopts the time slot information228C from the received block sync message220. For example, if the assignment of a time slot information228C of the received block sync message220is the same as time slot information228C stored in the initiator110but the expiry information is different, the initiator110stores the expiry information of the received block sync message220in the time slot information228C. In this example, the time slot information228CA of the block sync message220has an expiry information of 10 cycles, while the time slot information228CA of the initiator110has an expiry information of 9 cycles. The initiator110updates the time frame information228by updating the expiry information of time slot information228CA to 10 cycles. Sub-process420then proceeds from step426to step427.

In step427, sub-process420synchronizes the time frame200of the initiator110executing sub-process420with the received time of the first block sync message220. Sub-process420returns to the method400.

As described above, the active mode also enables an initiator110to transmit a block sync message220in order to perform a function. In this case, the function performed is a ranging process to determine the relative distances between the initiator110and other initiators110and responders120. The transmission of a block sync message220and a ranging request is shown in a flowchart of the method500(shown inFIGS.5A and5B). The method500is executed by a firmware1333executable within the embedded controller1302(described below in relation toFIGS.8A and8B) of the initiator110.

The method500commences at step502by updating the time frame information228. In particular, the method500updates the time slot information228C (e.g.,228CA to228CN) that is selected by the initiator110executing the method500. The update to the time slot information228C involves reducing the number of cycles to expiry of the assignment of the initiator110to the particular time slot210.

For example, if the expiry is 10 cycles, then at step502the number of cycle is reduced to 9. If the number of expiry is reduced to 0, the assignment is removed. Accordingly, the priority level of the time frame200is also updated to reflect the current number of assignments of time slots210of the time frame200.

The method500then proceeds from step502to step504.

In step504, the initiator110executing the method500transmits a block sync message220at the selected time slot210. The method500then proceeds from step504to step506.

In step506, the method500determines whether a deny message is received in response to the transmitted block sync message. If a deny message is received (YES), the method500proceeds from step506to the method300(i.e., listening mode) so that the initiator110executing the method500is put into the listening mode. Otherwise (NO), the method500proceeds from step506to sub-process520.

Sub-process520(shown inFIG.5B) is a ranging process used in the example mining environment and is sent in the time period called function240. Sub-process520is executed by a firmware1333executable within the embedded controller1302(described below in relation toFIGS.8A and8B) of the initiator110. Sub-process520may perform other relevant functions as required by the initiators110and responders120in different environments.

Sub-process520commences at step521by transmitting a first ranging request. As described above, the initiator110executing sub-process520transmits the ranging request at its selected time slot210. For example, if time slot210B is selected by the initiator110, then the initiator110transmits the ranging request within the time period of function240within the time slot210B. The ranging request also includes a list of the identification numbers of the surrounding initiators110and responders120in the ranging request. The identification numbers of the surrounding initiators110and responders120are obtained when receiving the acknowledgement messages within the time period of ack230. Sub-process520then proceeds from step521to step522.

In step522, sub-process520receives first ranging responses from the surrounding initiators110and responders120. When the first ranging responses are received, corresponding receiving timestamps are generated for the respective first ranging responses. Sub-process520then proceeds from step522to step523.

In step523, sub-process520transmits a second ranging request having the transmitting timestamp of the first ranging request, the transmitting timestamp of the second ranging request, and the receiving timestamps of the first ranging responses. Sub-process520then proceeds from step523to step524.

In step524, sub-process520receives ranging results from the surrounding initiators110and responders120. Each ranging result includes a determined relative distance between the initiator110and one of the surrounding initiators110or responders120. The ranging results are calculated by the respective surrounding initiators110and responders120receiving the second ranging request, as discussed below in relation to step708of the method700. Sub-process520then proceeds from step524to warning sub-process600.

Sub-process600is executed by a firmware1333executable within the embedded controller1302(described below in relation toFIGS.8A and8B) of the initiator110. In another arrangement, sub-process600is executed by a central controller (not shown) that is connected to multiple initiators110disposed on one object. As described in an example above, a large mining vehicle may have multiple initiators110. In this example, the large mining vehicle may use a central controller connected to those initiators110. In yet another arrangement, one of the embedded controllers1302of the multiple initiators110acts as a central controller. If any of the other arrangements are implemented, the ranging results received at step524are first transmitted to the central controller before executing sub-process600.

Sub-process600commences at step602by determining whether one or more ranging results are received. If no ranging results are received (NO), sub-process600concludes at the conclusion of step602. Otherwise (YES), sub-process600proceeds from step602to step604.

In step604, sub-process600determines the relative distances and relative locations of the surrounding initiators110and responders120based on the ranging results. The relative locations are determined using a trilateration algorithm. In the example above where multiple initiators110are disposed on one object (e.g., a large mining vehicle), then the initiator110determining the relative locations of surrounding initiators110and responders120removes the ranging results from the other initiators110disposed on the same object. Sub-process600proceeds from step604to step606.

In step606, sub-process600determines whether to generate a warning based on the determined relative distances and relative locations. As described above, there are multiple arrangements to use the initiators110. The first arrangement has one initiator110executing sub-process600. The second arrangement has multiple initiators110being disposed on an object (e.g., a large mining vehicle) where a central controller (not shown) is executing sub-process600. The third arrangement is similar to the second arrangement but one of the multiple initiators110is acting as a central controller to execute sub-process600.

For the first arrangement, the generation of a warning is determined based on the relative distance. The initiator110defines a warning zone with a certain radius. The relative distance from any miner (with a responder120) or other vehicles (with other initiators110) smaller than the defined radius of the warning zone triggers the warning.

For the second and third arrangements, the warning is triggered based on both the relative distance and location. The central controller estimates the relative location of a responder120or an initiator110disposed on another vehicle using a trilateration algorithm. The warning is then generated based on the risk of collision. If the estimated location of a responder120or an initiator110is ahead of the current object (e.g., a mining vehicle), the warning is triggered if the relative distance is closer than a first predetermined distance (e.g., 20 metres). If the responder120or the other initiator110is estimated to be parallel to or behind the initiator110, the warning is triggered if the relative distance is closer than a second predetermined distance (e.g., 10 metres). Accordingly, the first predetermined distance is farther than the second predetermined distance to allow for the movement of the initiator110toward the responder120or other initiator110. If a warning is to be generated (YES), sub-process600proceeds from step606to step608. Otherwise (NO), sub-process600concludes at the conclusion of step606.

In step608, the initiator110executing sub-process600generates a warning. Sub-process600concludes at the conclusion of step608. At the conclusion of sub-process600, the process returns to sub-process520, which in turn returns to the method500. The method500then returns the initiator110to the active mode.

FIG.7is a flowchart showing a method700of responding to a received first ranging request. The method700is executed by either an initiator110or a responder120.

Method700commences when a first ranging request is received. The method700commences at step702by determining whether an identification number associated with the initiator110or responder120(executing the method700) is listed in the first ranging request. For example, if an initiator110C having an identification number of110C receives a first ranging request, the initiator110C determines at step702whether an identification number110C is listed in the first ranging request. If the associated identification number is not listed (NO), method700concludes at the conclusion of step702. If the associated identification number is listed (YES), method700proceeds from step702to step704.

In step704, the method700transmits a first ranging response having the identification number of the initiator110or responder120executing the method700. The transmitting timestamp of the first ranging response is recorded. Method700then proceeds from step704to step706.

In step706, method700determines whether a second ranging request is received. If a second ranging request is not received (NO), method700concludes at the conclusion of step706. If a second ranging request is received (YES), method700proceeds from step706to step708.

In step708, method700determines the relative distance from the initiator110or responder120executing the method700to the initiator110transmitting the second ranging request. The relative distance is determined using the transmitting timestamp of the first ranging response (see step704), transmitting timestamp of the first ranging request, the transmitting timestamp of the second ranging request, and the receiving timestamp of the first ranging response for this particular initiator110or responder120(where the latter three timestamps are included in the second ranging request).

Distance between an initiator110and a response120or another initiator110can be calculated if the time of flight (TOF) of a signal is determined. However, a single signal (i.e., the first ranging request or the first ranging response) is insufficient as the clock of the initiator110and the responder120or the other initiator110are not synchronized. According, the TOF is obtained by determining the time differences between the transmission and receipt of the first ranging request and the first ranging response. The second ranging request provides more time differences enabling a better TOF estimation by reducing errors due to the time clock differences. The method700then proceeds from step708to step710.

In step710, the method700transmits a ranging result including the determined relative distance. The method700then concludes at the conclusion of step710.

Embedded Electronic Device Description

FIGS.8A and8Bcollectively form a schematic block diagram of the initiator110including embedded components, upon which the ad-hoc wireless communication methods described above are desirably practiced. In an alternative arrangement, the methods described above may also be performed on higher-level devices such as desktop computers, server computers, and other such devices with significantly larger processing resources.

As seen inFIG.8A, the initiator110comprises an embedded controller1302. Accordingly, the initiator110may be referred to as an “embedded device.” In the present example, the controller1302has a processing unit (or processor)1305which is bi-directionally coupled to an internal storage module1309. The storage module1309may be formed from non-volatile semiconductor read only memory (ROM)1360and semiconductor random access memory (RAM)1370, as seen inFIG.8B. The RAM1370may be volatile, non-volatile or a combination of volatile and non-volatile memory.

The initiator110includes a display controller1307, which is connected to a video display1314, such as a liquid crystal display (LCD) panel or the like. The display controller1307is configured for displaying graphical images on the video display1314in accordance with instructions received from the embedded controller1302, to which the display controller1307is connected.

The initiator110also includes user input devices1313which are typically formed by keys, a keypad or like controls. In some implementations, the user input devices1313may include a touch sensitive panel physically associated with the display1314to collectively form a touch-screen. Such a touch-screen may thus operate as one form of graphical user interface (GUI) as opposed to a prompt or menu driven GUI typically used with keypad-display combinations. Other forms of user input devices may also be used, such as a microphone (not illustrated) for voice commands or a joystick/thumb wheel (not illustrated) for ease of navigation about menus.

As seen inFIG.8A, the initiator110also comprises a portable memory interface1306, which is coupled to the processor1305via a connection1319. The portable memory interface1306allows a complementary portable memory device1325to be coupled to the initiator110to act as a source or destination of data or to supplement the internal storage module1309. Examples of such interfaces permit coupling with portable memory devices such as Universal Serial Bus (USB) memory devices, Secure Digital (SD) cards, Personal Computer Memory Card International Association (PCMIA) cards, optical disks and magnetic disks.

The initiator110also has a communications interface1308to permit coupling of the device1301to a computer or communications network1320via a connection1321. The connection1321may be wired or wireless. For example, the connection1321may be radio frequency or optical. An example of a wired connection includes Ethernet. Further, an example of wireless connection includes Bluetooth™ type local interconnection, UWB, Wi-Fi (including protocols based on the standards of the IEEE 802.11 family), Infrared Data Association (IrDa) and the like.

As described above, the initiator110is configured to communicate with other initiators110and responders120. The embedded controller1302is provided to perform the method300to700described above.

The methods described hereinbefore may be implemented using the embedded controller1302, where the processes ofFIGS.3to7may be implemented as one or more software application programs1333executable within the embedded controller1302. The initiator110ofFIG.8Aimplements the described methods. In particular, with reference toFIG.8B, the steps of the described methods are effected by instructions in the software1333that are carried out within the controller1302. The software instructions may be formed as one or more code modules, each for performing one or more particular tasks. The software may also be divided into two separate parts, in which a first part and the corresponding code modules performs the described methods and a second part and the corresponding code modules manage a user interface between the first part and the user.

The software1333of the embedded controller1302is typically stored in the non-volatile ROM1360of the internal storage module1309. The software1333stored in the ROM1360can be updated when required from a computer readable medium. The software1333can be loaded into and executed by the processor1305. In some instances, the processor1305may execute software instructions that are located in RAM1370. Software instructions may be loaded into the RAM1370by the processor1305initiating a copy of one or more code modules from ROM1360into RAM1370. Alternatively, the software instructions of one or more code modules may be pre-installed in a non-volatile region of RAM1370by a manufacturer. After one or more code modules have been located in RAM1370, the processor1305may execute software instructions of the one or more code modules.

The application program1333is typically pre-installed and stored in the ROM1360by a manufacturer, prior to distribution of the electronic device1301. However, in some instances, the application programs1333may be supplied to the user encoded on one or more CD-ROM (not shown) and read via the portable memory interface1306ofFIG.8Aprior to storage in the internal storage module1309or in the portable memory1325. In another alternative, the software application program1333may be read by the processor1305from the network1320, or loaded into the controller1302or the portable storage medium1325from other computer readable media. Computer readable storage media refers to any non-transitory tangible storage medium that participates in providing instructions and/or data to the controller1302for execution and/or processing. Examples of such storage media include floppy disks, magnetic tape, CD-ROM, a hard disk drive, a ROM or integrated circuit, USB memory, a magneto-optical disk, flash memory, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the device1301. Examples of transitory or non-tangible computer readable transmission media that may also participate in the provision of software, application programs, instructions and/or data to the device1301include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like. A computer readable medium having such software or computer program recorded on it is a computer program product.

The second part of the application programs1333and the corresponding code modules mentioned above may be executed to implement one or more graphical user interfaces (GUIs) to be rendered or otherwise represented upon the display1314ofFIG.8A. Through manipulation of the user input device1313(e.g., the keypad), a user of the device1301and the application programs1333may manipulate the interface in a functionally adaptable manner to provide controlling commands and/or input to the applications associated with the GUI(s). Other forms of functionally adaptable user interfaces may also be implemented, such as an audio interface utilizing speech prompts output via loudspeakers (not illustrated) and user voice commands input via the microphone (not illustrated).

FIG.8Billustrates in detail the embedded controller1302having the processor1305for executing the application programs1333and the internal storage1309. The internal storage1309comprises read only memory (ROM)1360and random access memory (RAM)1370. The processor1305is able to execute the application programs1333stored in one or both of the connected memories1360and1370. When the initiator110is initially powered up, a system program resident in the ROM1360is executed. The application program1333permanently stored in the ROM1360is sometimes referred to as “firmware”. Execution of the firmware by the processor1305may fulfil various functions, including processor management, memory management, device management, storage management and user interface.

The processor1305typically includes a number of functional modules including a control unit (CU)1351, an arithmetic logic unit (ALU)1352, a digital signal processor (DSP)1353and a local or internal memory comprising a set of registers1354which typically contain atomic data elements1356,1357, along with internal buffer or cache memory1355. One or more internal buses1359interconnect these functional modules. The processor1305typically also has one or more interfaces1358for communicating with external devices via system bus1381, using a connection1361.

The application program1333includes a sequence of instructions1362though1363that may include conditional branch and loop instructions. The program1333may also include data, which is used in execution of the program1333. This data may be stored as part of the instruction or in a separate location1364within the ROM1360or RAM1370.

In general, the processor1305is given a set of instructions, which are executed therein. This set of instructions may be organised into blocks, which perform specific tasks or handle specific events that occur in the electronic device1301. Typically, the application program1333waits for events and subsequently executes the block of code associated with that event. Events may be triggered in response to input from a user, via the user input devices1313ofFIG.8A, as detected by the processor1305. Events may also be triggered in response to other sensors and interfaces in the electronic device1301.

The execution of a set of the instructions may require numeric variables to be read and modified. Such numeric variables are stored in the RAM1370. The disclosed method uses input variables1371that are stored in known locations1372,1373in the memory1370. The input variables1371are processed to produce output variables1377that are stored in known locations1378,1379in the memory1370. Intermediate variables1374may be stored in additional memory locations in locations1375,1376of the memory1370. Alternatively, some intermediate variables may only exist in the registers1354of the processor1305.

The execution of a sequence of instructions is achieved in the processor1305by repeated application of a fetch-execute cycle. The control unit1351of the processor1305maintains a register called the program counter, which contains the address in ROM1360or RAM1370of the next instruction to be executed. At the start of the fetch execute cycle, the contents of the memory address indexed by the program counter is loaded into the control unit1351. The instruction thus loaded controls the subsequent operation of the processor1305, causing for example, data to be loaded from ROM memory1360into processor registers1354, the contents of a register to be arithmetically combined with the contents of another register, the contents of a register to be written to the location stored in another register and so on. At the end of the fetch execute cycle the program counter is updated to point to the next instruction in the system program code. Depending on the instruction just executed this may involve incrementing the address contained in the program counter or loading the program counter with a new address in order to achieve a branch operation.

Each step or sub-process in the processes of the methods described below is associated with one or more segments of the application program1333, and is performed by repeated execution of a fetch-execute cycle in the processor1305or similar programmatic operation of other independent processor blocks in the electronic device1301.

INDUSTRIAL APPLICABILITY

The arrangements described are applicable to the wireless communication industries.

In the context of this specification, the word “comprising” means “including principally but not necessarily solely” or “having” or “including”, and not “consisting only of”. Variations of the word “comprising”, such as “comprise” and “comprises” have correspondingly varied meanings.