Methods and apparatus for use in updating application programs in memory of a network device
Claim Score by NHIP
Abstract
An illustrative method of the present application is for use in updating an application program in memory of a network device. An application program having a length L1 is initially stored in memory of the network device from a memory address A1 to a memory address A2−1. A download procedure is performed by the network device to receive an updated application program having a length L2>L1. This updated application program is stored in the memory from a memory address A3=A2+(L2−L1) for the length L1, and continuing in a circular buffer fashion from the memory address A2 for the length L2−L1. The application program is then copied over with the updated application program beginning at the memory address A1. With this technique, if a failure occurs while copying over the application program, no portion of the original updated application program will be written over.

Term
2.8 yearsto projected expiry
Projected expiry 13 July 2029, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
20 claims: 3 independent, 17 dependent
- 1Broadest claimClaim Score 57, broad(NHIP)A method of updating an application program in memory of a network device, the method comprising:maintaining storage of an application program having a length L 1 in memory from a memory address A 1 to a memory address A 2 −1;performing a download procedure to receive an updated application program having a length L 2 >L 1 ;storing the updated application program in the memory from a memory address A 3 =A 2 +(L 2 −L 1 ) for the length L 1 and continuing in a circular buffer fashion from the memory address A 2 for the length L 2 −L 1 ;and copying over the application program with the updated application program beginning at the memory address A 1 .
- 8A network device, comprising:one or more processors;a network interface coupled to the one or more processors;memory coupled to the one or more processors;the one or more processors being operative to: maintain storage of an application program having a length L 1 in the memory from a memory address A 1 to a memory address A 2 −1;perform a download procedure with use of the network interface to receive an updated application program having a length L 2 >L 1 ;store the updated application program in the memory from a memory address A 3 =A 2 +(L 2 −L 1 ) for the length L 1 and continuing in a circular buffer fashion from the memory address A 2 for the length L 2 −L 1 ;and copy over the application program with the updated application program beginning at the memory address A 1 .
- 15A computer program product, comprising:a storage medium;computer instructions stored in the storage medium;the computer instructions being executable by one or more processors of a network device for: maintaining storage of an application program having a length L 1 in memory from a memory address A 1 to a memory address A 2 −1;performing a download procedure to receive an updated application program having a length L 2 >L 1 ;storing the updated application program from a memory address A 3 =A 2 +(L 2 −L 1 ) for the length L 1 and continuing in a circular buffer fashion from the memory address A 2 for the length L 2 −L 1 ;and copying over the application program with the updated application program beginning at the memory address A 1 .
Independent claims3
83 paragraphs in 4 sections, as filed
BACKGROUND
00011. Field of the Technology
0002The present application relates generally to updating application programs in memory of network devices.
00032. Description of the Related Art
0004Recently, suitable wireless networking solutions have been developed for applications in home and building automation, industrial control, lighting control, sensors, detectors, consumer electronics, PC peripherals, medical sensors, and a variety of other specific applications. In such networks, there may be tens or even hundreds of wireless network devices which control and/or communicate with various device components (e.g. sensors, lights, etc.) and form nodes of the wireless network. These wireless network devices may be situated in a variety of different locations and difficult to access once deployed. Such wireless network devices may be added in or taken away from the wireless network at any given time.
0005Each wireless network device has a small microcontroller which operates the wireless network device in accordance with an application program stored in memory. When one or more deployed wireless network devices need to have their application program “upgraded” or modified (e.g. to add a feature, or to fix a perceived problem), questions arise as to how to effectively orchestrate and manage over-the-air download (OAD) procedures in the wireless network. For example, concerns arise regarding unduly overloading any single wireless network device with the task of sending the upgraded application program to many other wireless network devices. Concerns also arise regarding network interference during concurrent file transfer transactions. Further, memory in each wireless network device is typically small and therefore problems regarding memory handling when updating the upgraded application program may arise. Several other concerns exist.
0006Accordingly, what are needed are procedures which overcome deficiencies of conventional approaches.
SUMMARY
0007An illustrative method of the present application is for use in updating the application program in the memory of any type of network device. An application program having a length L<b>1</b> is stored in memory of the network device from a memory address A<b>1</b> to a memory address A<b>2</b>−1. A download procedure is performed by the network device to receive an updated application program having a length L<b>2</b>>L<b>1</b>. This updated application program is stored in the memory from a memory address A<b>3</b>=A<b>2</b>+(L<b>2</b>−L<b>1</b>) for the length L<b>1</b> and continuing in a circular buffer fashion from the memory address A<b>2</b> for the length L<b>2</b>−L<b>1</b>. The application program is then copied over with the updated application program beginning at the memory address A<b>1</b>. With this technique, if a failure occurs while copying over the application program, no portion of the original updated application program will be written over.
BRIEF DESCRIPTION OF THE DRAWINGS
0008<figref idref="DRAWINGS">FIG. 1</figref> is an illustration of an ad hoc wireless communication network having a plurality of wireless network devices, each device operating with use of an application program which is downloaded through use of over-the-air downloading (OAD) procedures of the present application;
0009<figref idref="DRAWINGS">FIG. 2</figref> is a schematic block diagram of a wireless network device of the wireless communication network;
0010<figref idref="DRAWINGS">FIG. 3</figref> is an illustration of a plurality of functional layers of a wireless network device of the wireless communication network;
0011<figref idref="DRAWINGS">FIG. 4</figref> is a first message flow diagram for an OAD procedure for wirelessly communicating an updated application program from a first wireless network device operating as a server to a second wireless network device operating as a client;
0012<figref idref="DRAWINGS">FIG. 5</figref> is a second message flow diagram for an OAD procedure for wirelessly communicating the updated application program from the second wireless network device operating as a server to a third wireless network device operating as a client;
0013<figref idref="DRAWINGS">FIG. 6</figref> is a state flow diagram relating to OAD procedures of a wireless network device;
0014<figref idref="DRAWINGS">FIG. 7</figref> is an illustration of memory of a wireless network device which stores an (active) application program as well as an updated (downloaded) application program which follows it;
0015<figref idref="DRAWINGS">FIG. 8</figref> is an illustration of the memory of the wireless network device of <figref idref="DRAWINGS">FIG. 7</figref> which reveals that, when the downloaded application program is copied over the active application program, a portion of the original downloaded application may be overwritten which is a concern if a failure occurs while copying;
0016<figref idref="DRAWINGS">FIGS. 9-10</figref> are illustrations of the memory of the wireless network device which reveals that the downloaded application program may be stored in memory such that no portion of the original downloaded application will be overwritten while copying over the active application program; and
0017<figref idref="DRAWINGS">FIG. 11</figref> is a flowchart for describing a method of updating an application program in memory of a wireless network device.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
0018An illustrative method of the present application is for use in updating the application program in the memory of any type of network device. An application program having a length L<b>1</b> is stored in memory of the network device from a memory address A<b>1</b> to a memory address A<b>2</b>−1. A download procedure is performed by the network device to receive an updated application program having a length L<b>2</b>>L<b>1</b>. This updated application program is stored in the memory from a memory address A<b>3</b>=A<b>2</b>+(L<b>2</b>−L<b>1</b>) for the length L<b>1</b> and continuing in a circular buffer fashion from the memory address A<b>2</b> for the length L<b>2</b>−L<b>1</b>. The application program is then copied over with the updated application program beginning at the memory address A<b>1</b>. With this technique, if a failure occurs while copying over the application program, no portion of the original updated application program will be written over.
0019To begin, <figref idref="DRAWINGS">FIG. 1</figref> is an illustration of an ad hoc wireless communication network <b>100</b> having a plurality of wireless network devices <b>104</b>. In addition to wireless network devices <b>104</b>, wireless communication network <b>100</b> includes a commissioner device <b>102</b> and a wireless network device <b>106</b> which serves as a proxy for communications between commissioner device <b>102</b> and wireless network devices <b>104</b> (and thus may be referred to herein as a proxy device). Each wireless network device <b>104</b> of wireless communication network <b>100</b> operates with use of an application program which may be downloaded to it through use of an OAD procedure of the present application.
0020Wireless network <b>100</b> may be a low data rate wireless personal area network (WPAN) or similar type of network. Here, wireless network devices <b>104</b> are adapted to perform functions for a low data rate wireless networking application, such as a monitoring and/or control system application. These types of applications include building automation, industrial, medical and residential control, and monitoring applications. For these purposes, wireless network devices <b>104</b> may operate in accordance with the ZigBee™ standard specification. See e.g. the ZigBee™ specification, 053474r06, Version 1.0 (2005), made available from the ZigBee Alliance, Inc. Note that ZigBee™ is a trademark of the ZigBee Alliance, Inc. of San Ramon, Calif., U.S.A. Essentially, applications that require interoperability and/or RF performance characteristics of the IEEE 802.15.4 standard are well suited for ZigBee™ applications. Specific examples of such applications include lighting control; automatic meter reading; wireless smoke and carbon monoxide detectors; heating control; heating ventilation and air conditioning (HVAC) control; home security; environmental control; blind, drapery and shade control; medical sensing and monitoring; universal remote control to a set-top box which includes home control; and industrial and building automation.
0021Thus, wireless network devices <b>104</b> may operate as one or more types of small control devices such as sensor, detector, and lighting devices. In ZigBee™ and similar environments, wireless network devices <b>104</b> may be referred to as end devices. Some wireless network devices <b>104</b> may be communication routers or serve as communication routers in addition to their primary function. There may be tens (10 s) or hundreds (100 s) of such wireless network devices <b>104</b> in wireless network <b>100</b>. In <figref idref="DRAWINGS">FIG. 1</figref>, there are a number of wireless networks devices shown which include wireless network devices <b>108</b>, <b>110</b>, <b>112</b>, <b>114</b>, <b>116</b>, <b>118</b>, <b>120</b>, <b>122</b>, <b>124</b>, <b>126</b>, <b>128</b>, <b>130</b>, <b>132</b>, and <b>134</b>. As suggested in the figure, wireless network devices <b>104</b> may be situated in various scattered (typically fixed) locations depending on the application and may communicate with and through each other. Some of wireless network devices <b>104</b> may be collocated, such as wireless network devices <b>108</b>, <b>114</b>, <b>116</b>, <b>118</b>, <b>120</b>, <b>122</b>, <b>124</b>, <b>126</b>, <b>128</b>, and <b>130</b> which may be located within the same facility or room, and wireless network devices <b>110</b>, <b>132</b>, and <b>134</b> which may be located within the same facility or room different from the other facility or room, and wireless network device <b>112</b> which may be located within a facility or room different from the others. Wireless network devices <b>104</b> may be added on or taken away from wireless network <b>100</b> “on the fly.”
0022In this embodiment, commissioner device <b>102</b> is a computer such as a personal computer (PC). However, commissioner device <b>102</b> may be any other type of comparable device or terminal. In basic form, commissioner device <b>102</b> merely has a controller or processor and computer instructions which are executed on the controller or processor for performing functions as described herein. In the present application, commissioner device <b>102</b> also has a communication interface and is physically connected to wireless network device <b>106</b> through a communication connection, such as a standard serial (e.g. RS-232), Universal Serial Bus (USB), or Ethernet connection. Commissioner device <b>102</b> may be the originating point of the updated application program to be downloaded within wireless network <b>100</b> using the OAD procedures. In this case, commissioner device <b>102</b> communicates with any of wireless network devices <b>104</b> through wireless network device <b>106</b> with use of proxy commands which wireless network device <b>106</b> is equipped to process (e.g. like a gateway).
0023Other than perhaps making the upgraded image (i.e. the upgraded application program) initially available on a wireless network device, commissioner device <b>102</b> does not participate in actual file transfer sessions. Based on its knowledge of the network topology, location of target platforms, and location of platforms that currently hold the upgrade image, commissioner device <b>102</b> assigns various wireless network devices as client-server pairs. Commissioner device <b>102</b> may coordinate the assignment of client and server roles of wireless network devices <b>104</b> for OAD procedures based on a variety of different heuristic or algorithmic techniques for optimal results. Additional details regarding commissioner device <b>102</b> and wireless network device <b>106</b> (the proxy) are described later below.
0024Note that one of the devices in wireless network <b>100</b> may serve as a coordinator device. A coordinator device is typically configured to perform functions such as maintaining global data for devices in wireless network <b>100</b>, maintaining binding tables for devices in wireless network <b>100</b>, assigning network identification to devices in wireless network <b>100</b>, etc. The coordinator device in wireless network <b>100</b> may be, for example, wireless network device <b>110</b>.
0025<figref idref="DRAWINGS">FIG. 2</figref> is a schematic block diagram of wireless network device <b>108</b> of the wireless network of <figref idref="DRAWINGS">FIG. 1</figref>. The schematic block diagram of wireless network device <b>108</b> of <figref idref="DRAWINGS">FIG. 2</figref> may be representative of all other wireless network devices of the wireless network of <figref idref="DRAWINGS">FIG. 1</figref>. Wireless network device <b>108</b> includes a controller <b>202</b>, memory <b>210</b>, a wireless transceiver <b>204</b>, an antenna means <b>206</b>, a device component <b>208</b>, and battery circuitry and interface <b>212</b>. Controller <b>202</b> is coupled to memory <b>210</b>, wireless transceiver <b>204</b>, device component <b>208</b>, and battery circuitry and interface <b>212</b> as shown. Battery circuitry and interface <b>212</b> is adapted to receive one or more batteries or battery packs which provide electrical power to most if not all electrical components of wireless network device <b>108</b>. Typically, wireless network device <b>108</b> does not include any wired communication interface for data network communications.
0026Controller <b>202</b> is a software-program-controlled device such as a microcontroller or microprocessor. In one specific implementation, controller <b>202</b> is an ATmega<b>128</b> Atmel microcontroller where memory <b>210</b> is an on-chip memory of about 128 kilobytes, made available by the Atmel Corporation of San Jose, Calif., U.S.A. Memory <b>212</b> is adapted to maintain storage of computer application programs for use by controller <b>202</b>. Preferably, memory <b>212</b> is a Flash memory. As shown, memory <b>212</b> may retain storage of an active application program <b>212</b> and a downloaded application program <b>216</b>. Application program <b>212</b> is designated as “active” because it is the program that controller <b>202</b> currently executes for operation of wireless network device <b>108</b>. Application program <b>216</b> is designated as merely “downloaded” because it is the program that wireless network device <b>108</b> has downloaded but not currently executing for operation. Application program <b>216</b> may be an updated version of application program <b>212</b>, which will be subsequently updated and written over in memory <b>212</b>. On the other hand, application program <b>216</b> may be held in memory <b>212</b> merely for subsequent wireless communication to other wireless network devices and never be utilized as an active application program in wireless network device <b>108</b>.
0027Controller <b>202</b> is operative to send and receive data wirelessly through wireless transceiver <b>204</b>. Controller <b>202</b> is also operative to perform over-the-air download (OAD) procedures with use of wireless transceiver <b>204</b> in accordance with an OAD control program stored in memory <b>210</b>. Wireless transceiver <b>204</b>, which is coupled to antenna means <b>206</b>, is a low data rate transceiver which operates in accordance with ZigBee™ specifications. A ZigBee™ compliant transceiver operates in accordance with IEEE 802.15.4 physical radio standard. The radio frequency (RF) bands utilized for ZigBee™ include unlicensed bands worldwide at 2.4 GHz (global), 915 MHz (the Americas), and 868 MHz (Europe). Raw data throughput rates of 250 Kbs may be achieved at 2.4 GHz (16 channels), 40 Kbs at 915 MHz (10 channels), and 20 Kbs at 868 MHz (1 channel). Transmission distances range from 10 to 100 meters for each wireless network device, which depends on power output and environmental characteristics. Controller <b>202</b> is also operative to interact with and/or control a device component <b>208</b> in accordance with application program <b>214</b>. Device component <b>208</b> may be one of a variety of different types of components which will depend on the application (e.g. building automation, industrial, medical control, residential control, monitoring, etc.). Thus, device component <b>208</b> may be a sensor, a detector, a light, etc. Note also that some wireless network devices may be communication routers or serve as communication routers in addition to their primary function.
0028<figref idref="DRAWINGS">FIG. 3</figref> is an illustration of a plurality of functional layers <b>300</b> of a wireless network device of <figref idref="DRAWINGS">FIG. 2</figref> in accordance with ZigBee™ technology. Functional layers <b>300</b> include a physical layer <b>302</b>, a medium access control (MAC) layer <b>304</b>, a network layer <b>306</b>, and an application layer <b>308</b>. Application layer <b>308</b> includes an application framework <b>308</b> for one or more application objects, a ZigBee™ device object <b>316</b>, and an application support sublayer <b>314</b>. Each layer performs a specific set of services for the layer above it, a data transmission service and a management entity provides all other services. Each service entity exposes an interface to the upper layer through a service access point (SAP), and each SAP supports a number of service primitives to achieve the required functionality.
0029The stack architecture of <figref idref="DRAWINGS">FIG. 3</figref> is based on the standard Open Systems Interconnection (OSI) seven-layer model, but defines only those layers relevant to achieving the desired functionality for the particular application. The IEEE 802.15.4 (2003) standard defines two lower layers: physical layer <b>302</b> and MAC layer <b>304</b>. ZigBee™ builds on this foundation by providing the network layer <b>306</b> and application framework <b>312</b> for the application layer, which includes the application support sub-layer (APS) <b>314</b>, ZigBee™ device object (ZDO) <b>316</b>, and manufacturer-defined application objects <b>312</b>.
0030IEEE 802.15.4 defines two physical layers that operate in two separate frequency ranges, namely the 868/915 MHz band and the 2.4 GHz band. The lower frequency physical layer covers both the 868 MHz European band and the 915 MHz band that is used in countries such as the United States and Australia. The higher frequency physical layer is used virtually worldwide. The IEEE 802.15.4 MAC layer <b>304</b> controls access to the radio channel using a Carrier Sense Multiple Access with Collision Avoidance (CSMA-CA) mechanism. Its responsibilities may also include transmitting beacon frames, synchronization, and providing a reliable transmission mechanism.
0031The responsibilities of network layer <b>306</b> include mechanisms used to join and leave a network, to apply security to frames, and to route frames to their intended destinations. In addition, the discovery and maintenance of routes between devices devolve to network layer <b>306</b>. Further, the discovery of one-hop neighbors and the storing of pertinent neighbor information are performed at network layer <b>306</b>. The network layer <b>306</b> of a coordinator (e.g. coordinator device <b>110</b> of <figref idref="DRAWINGS">FIG. 1</figref>) is responsible for starting a new network, when appropriate, and assigning addresses to newly-associated devices.
0032The responsibilities of application support sublayer <b>314</b> include maintaining tables for binding, which is the ability to match two devices together based on their services and their needs, and forwarding messages between bound devices. The responsibilities of ZDO <b>316</b> include defining the role of the device within the network (e.g. coordinator or end device), initiating and/or responding to binding requests, and establishing a secure relationship between network devices. ZDO <b>316</b> is also responsible for discovering devices on the network and determining which application services they provide.
0033Network layer <b>306</b> supports star, tree, and mesh topologies. In a star topology, the network is controlled by one single device called the coordinator (e.g. coordinator device <b>110</b> of <figref idref="DRAWINGS">FIG. 1</figref>). The coordinator is responsible for initiating and maintaining the devices on the network, and all other devices (i.e. end devices) directly communicate with the coordinator. In mesh and tree topologies, the coordinator is responsible for starting the network and for choosing certain key network parameters; however the network may be extended through use of routers. In tree networks, routers move data and control message through the network using a hierarchical routing strategy. Tree networks may employ beacon-oriented communication as described in the IEEE 802.15.4 specification. Mesh networks allow full peer-to-peer communication. Routers in mesh networks do not emit regular IEEE 802.15.4 type beacons.
0034<figref idref="DRAWINGS">FIG. 4</figref> is a message flow diagram of an over-the-air download (OAD) procedure for wirelessly communicating an updated application program to wireless network devices of an ad hoc wireless network (e.g. see <figref idref="DRAWINGS">FIGS. 1-3</figref>). Specifically in <figref idref="DRAWINGS">FIG. 4</figref>, an updated application program is wirelessly communicated from a wireless network device operating as a server (e.g. wireless network device <b>108</b>) to a wireless network device operating as a client (e.g. wireless network device <b>122</b>) in an OAD procedure. Such instructions are provided and roles are assigned by commissioner device <b>102</b> in an overall scheme to update various wireless network devices with the application program. Note that an “updated” or “upgraded” application program may include any suitable revision, version, or variation of the existing application program including any prior versions thereof.
0035The message flow of <figref idref="DRAWINGS">FIG. 4</figref> is shown to be between commissioner device <b>102</b>, wireless network device <b>122</b>, and wireless network device <b>108</b>. Although communications are shown as being made directly between devices <b>102</b>, <b>108</b>, and <b>122</b>, communications may actually be routed through one or more intermediary wireless network devices which serve as routers (exclusively or additionally) in the wireless network. Further, a proxy device (e.g. wireless network device <b>106</b> of <figref idref="DRAWINGS">FIG. 1</figref>) which may be physically connected to commissioner device <b>102</b> may serve as an intermediary between commissioner device <b>102</b> and the wireless network devices of the wireless network. Note that a computer program product of the present application may include a computer readable medium and computer instructions stored in the computer readable medium which are executable by a processor of a wireless network device or other device for performing techniques described in relation to <figref idref="DRAWINGS">FIG. 4</figref>.
0036Initially, commissioner device <b>102</b> causes a device discovery request message <b>402</b> to be wirelessly broadcasted to devices in the ad hoc wireless network. In response, each wireless network device in the ad hoc wireless network responds with a discovery response message through its wireless transceiver. This discovery procedure allows commissioner device <b>102</b> to obtain identifications (addresses) of most all of the wireless network devices in the ad hoc wireless network. Specifically in <figref idref="DRAWINGS">FIG. 4</figref>, wireless network device <b>122</b> responds by transmitting a discovery response message <b>404</b> to commissioner device <b>102</b> through its wireless transceiver, and wireless network device <b>108</b> responds by transmitting a discovery response message <b>406</b> to commissioner through its wireless transceiver. As revealed in <figref idref="DRAWINGS">FIG. 4</figref>, wireless network device <b>108</b> is associated with an address of “0x8899001122334455” and wireless network device <b>122</b> is associated with an address of“0x0011223344556677”.
0037Once commissioner device <b>102</b> receives the address of the wireless network devices, it obtains a status of the current version(s) of the application program(s) from each of any of the wireless network devices in the ad hoc wireless network. In <figref idref="DRAWINGS">FIG. 4</figref>, it is shown that commissioner device <b>102</b> causes a status command message <b>408</b> to be wirelessly transmitted to wireless network device <b>122</b> and, in response, receives a status reply message <b>408</b> transmitted from wireless network device <b>122</b>. Commissioner <b>102</b> also causes a status command message <b>412</b> to be wireless transmitted to wireless network device <b>108</b> and, in response, receives a status reply message <b>414</b> transmitted from wireless network device <b>108</b>. These status command messages <b>408</b> and <b>412</b> from commissioner device <b>102</b> are addressed directly to the desired wireless network devices, and status reply messages <b>410</b> and <b>414</b> are addressed directly back to commissioner device <b>102</b> (e.g. through the proxy).
0038In the present embodiment, each status reply message includes at least three items of information: (1) a version number of an “active” application program of the wireless network device; (2) a version number of a “downloaded” application program of the wireless network device; and (3) a state of the wireless network device. In <figref idref="DRAWINGS">FIG. 4</figref>, status reply message <b>410</b> indicates that wireless network device <b>122</b> has an active application program with a version number of “110/0xC00/0x1”; a downloaded application program with a version number of “0/0/0” (i.e. none exists); and a state of “1/0/0/0” which indicates that the device is in the OAD IDLE state (1), there is no error in response to this query (0), no packets have been sent or received (0) and no packets are expected to be transmitted or received (0). On the other hand, status reply message <b>414</b> indicates that wireless network device <b>108</b> has an active application program with a version number of “110/0xC00/0x1”; a downloaded application program with a version number of “111/0xC00/0x1”; and a state of “1/0/0/0” which indicates that the device is in the OAD IDLE state (1), there is no error in response to this query (0), no packets have been sent or received (0), and no packets are expected to be transmitted or received (0).
0039As apparent, wireless network device <b>108</b> has a downloaded application program (i.e. version 111/0xC00/0x1) that is an updated version of the active application program (i.e. version 110/0xC00/0x1) of wireless network device <b>122</b>. Wireless network device <b>108</b> may have earlier obtained this updated application program through the same type of procedure being described now in relation to <figref idref="DRAWINGS">FIG. 4</figref>. Note that wireless network device <b>108</b> itself may or may not require use of the updated application program, and may merely retain such program for communication to one or more other wireless network devices.
0040After commissioner device <b>102</b> accesses the needs of the wireless network through the discovery procedures and status inquires, commissioner device <b>102</b> sends commands to at least some of the wireless network devices which instruct them to operate as clients in performing OAD procedures to receive the updated application program from another wireless network device. In <figref idref="DRAWINGS">FIG. 4</figref>, it is shown that commissioner <b>102</b> causes an OAD command <b>416</b> to be wirelessly transmitted to wireless network device <b>122</b> to instruct wireless network device <b>122</b> to obtain an updated application program from wireless network device <b>108</b>. In the present embodiment, OAD command <b>416</b> specifies at least three items of information: (1) the version number of the. application program to be downloaded (“111/0xC00/0x1”); (2) the IEEE address of wireless network device <b>108</b> with which to perform the OAD procedure (“0x8899001122334455”); and (3) the network address of wireless network device <b>108</b> with which to perform the OAD procedure (“0x079C/0x20”). In response to receipt of OAD command <b>416</b>, wireless network device <b>122</b> sends an acknowledgement reply <b>418</b> to commissioner device <b>102</b>.
0041In further response to receipt of OAD command <b>416</b>, wireless network device <b>122</b> wirelessly transmits an OAD session start message <b>420</b> to wireless network device <b>108</b>. This may be viewed as an OAD procedure request. Here, OAD session start message <b>420</b> is directed to the address of the wireless network device specified in the earlier received OAD command <b>416</b>. In this embodiment, OAD session start message <b>420</b> provides the version number of the desired application program that it requests to receive (“111/0xC00/0x1”) and a session number for the OAD procedure (“0x45”). In response, wireless network device <b>108</b> wirelessly transmits an OAD session start reply message <b>422</b> back to wireless network device <b>122</b>. This reply message <b>422</b> acknowledges or confirms that wireless network device <b>108</b> indeed has the specified application program and is available to perform the OAD procedure with wireless network device <b>122</b>. Note that the active image may be selected and requested as an alternative. Preferably, reply message <b>422</b> includes a size of the application program (“0xF6B4/8/4”) as well as the block size (8 bytes) and the number of blocks (4) per data frame when sent. Through such instruction, wireless network device <b>108</b> is engaged to operate as a server in an OAD procedure with wireless network device <b>122</b>.
0042In general, a copy of the updated application program is wirelessly communicated from wireless network device <b>108</b> (i.e. server) to wireless network device <b>122</b> (i.e. client) in the OAD procedure. More specifically, wireless network device <b>122</b> operates as a client to wirelessly transmit a series of data request commands <b>424</b>, <b>432</b>, . . . , etc., to wireless network device <b>108</b>, which are requests to receive particular data blocks of the application program in sequential order. The data blocks are wirelessly received through data reply messages <b>426</b>, <b>434</b>, . . . , etc., from wireless network device <b>108</b> which operates as a server. Each data request command from wireless network device <b>122</b> identifies the particular data block that it needs to receive. For example, “0x0” in data request command <b>424</b> is an offset to the first data block of the application program, and “0x1” in data request command <b>426</b> is the next offset to the second data block of the application program, etc. Each data reply message from wireless network device <b>108</b> identifies the particular data block (e.g. as an offset into the application program) that it is sending to wireless network device <b>122</b> (e.g. “0x0” in data reply message <b>426</b> and “0x1” in data reply message <b>434</b>), as well as the current device state (3=Server), any error status in response to the command (0=none), and the data block itself. Once the entire application program has been downloaded, wireless network device <b>122</b> sends a session terminate command <b>436</b> to wireless network device <b>108</b>. In response, wireless network device <b>108</b> sends a session terminate reply <b>438</b> to wireless network device <b>122</b>. This ends the OAD communication session.
0043During or after communication of the updated application program, commissioner device <b>102</b> may send one or more status command messages to wireless network device <b>122</b> to identify the progress or current state of wireless network device <b>122</b>. For example, commissioner device <b>102</b> may send a status command message <b>428</b> to wireless network device <b>122</b> during the communication of the application program, where wireless network device <b>108</b> responds by sending a status reply message <b>430</b> to commissioner device <b>102</b> indicating that the current transfer of the updated application program is incomplete (“110/0xC00/0x1” as the active application program; “0/0/0” as the downloaded application program which is not completely downloaded; and “2/0/1/0x7B6” as the state which indicates the device status (2=Client), the error response to this query (0=none), the number of the current packet in the session (1), and the total number of packets expected in session (0x7B6). As another example, commissioner device <b>102</b> may send a status command message <b>440</b> to wireless network device <b>122</b> after the download of the updated application program, where wireless network device <b>108</b> responds by sending a status reply message <b>442</b> to commissioner device <b>102</b> indicating that the current transfer of the application program is complete (“110/0xC00/0x1” as the active application program; “11/0xC00/0x1” as the downloaded application program; and “1/0/0/0” as the state which indicates that device is in the OAD IDLE state (1), the error status to this query (0=none), and, as there is no session in progress, the current packet number is 0 and 0 packets are expected).
0044When an application program has been downloaded to a wireless network device, it is not automatically enabled as the active application program of the wireless network device. Sometime after commissioner device <b>102</b> identifies that an application program has been completely downloaded, it may enable the downloaded application program as the active application program of a wireless network device. In <figref idref="DRAWINGS">FIG. 4</figref>, commissioner device <b>102</b> sends a program enable command <b>444</b> to wireless network device <b>122</b>. Program enable command <b>444</b> specifies the version number of the application program which should be made active (e.g. “111/0xC00/0x1”) in wireless network device <b>122</b>. In response, wireless network device <b>122</b> causes the downloaded application program to serve as the active application program, writing over the current active application program with the downloaded application program. The overwriting procedure may be performed in accordance with the techniques described later in relation to <figref idref="DRAWINGS">FIGS. 7-11</figref>. Wireless network device <b>122</b> responds to commissioner device <b>102</b> with a program enable reply <b>446</b>. Preferably, commissioner device <b>102</b> waits for all desired wireless network devices to have received the updated application program before instructing the devices to activate the program.
0045After activation of the updated application program, commissioner device <b>102</b> may send another status command message <b>428</b> to wireless network device <b>122</b>. Here, wireless network device <b>108</b> responds by sending a status reply message <b>430</b> to commissioner device <b>102</b> which indicates that the current download and activation of the application program is complete (“111/0xC00/0x1” as the active application program; “111/0xC00/0x1” as the downloaded application program; and “1/0/0/0” as the state which indicates that device is in the OAD IDLE state (1), the error status to this query (0=none), and, as there is no session in progress, the current packet number is 0 and 0 packets are expected). The OAD procedure between wireless network devices <b>108</b> and <b>122</b> is complete.
0046<figref idref="DRAWINGS">FIG. 5</figref> is a second message flow diagram for an OAD procedure for wirelessly communicating the updated application program from a wireless network device operating as a server (e.g. wireless network device <b>122</b>) to a wireless network device operating as a client (e.g. wireless network device <b>130</b>). This message flow is substantially the same as that described above in relation to <figref idref="DRAWINGS">FIG. 5</figref>, except that wireless network device <b>122</b> operates as a server in an OAD procedure (in contrast to a client) and a new wireless network device <b>130</b> operates as a client to download the application program. Again, such instructions are provided and roles are assigned by commissioner device <b>102</b> in the overall scheme to update various wireless network devices with the application program. Note that an “updated” or “upgraded” application program may include any suitable revision, version, or variation of the existing application program including any prior versions thereof.
0047The message flow of <figref idref="DRAWINGS">FIG. 5</figref> is shown to be between commissioner device <b>102</b>, wireless network device <b>130</b>, and wireless network device <b>122</b>. Although communications are shown as being made directly between devices <b>102</b>, <b>122</b>, and <b>130</b>, communications may actually be routed through one or more intermediary wireless network devices which serve as routers (exclusively or additionally) in the wireless network. Further, the proxy device (e.g. wireless network device <b>106</b> of <figref idref="DRAWINGS">FIG. 1</figref>) which may be physically connected to commissioner device <b>102</b> may serve as an intermediary between commissioner device <b>102</b> and the wireless network devices of the wireless network. Note that a computer program product of the present application may include a computer readable medium and computer instructions stored in the computer readable medium which are executable by a processor of a wireless network device or other device for performing techniques described in relation to <figref idref="DRAWINGS">FIG. 5</figref>.
0048After device discovery procedures, where commissioner device <b>102</b> receives the address of the wireless network devices (e.g. see messages such as messages <b>402</b>, <b>404</b>, and <b>406</b> of <figref idref="DRAWINGS">FIG. 4</figref>), commissioner device <b>102</b> may obtain a status of the current version(s) of the application program(s) from each of any of the wireless network devices in the ad hoc wireless network. In <figref idref="DRAWINGS">FIG. 5</figref>, it is shown that commissioner device <b>102</b> causes a status command message <b>502</b> to be wirelessly transmitted to wireless network device <b>130</b> and, in response, receives a status reply message <b>504</b> transmitted from wireless network device <b>130</b>. Commissioner <b>102</b> also causes a status command message <b>506</b> to be wireless transmitted to wireless network device <b>122</b> and, in response, receives a status reply message <b>508</b> transmitted from wireless network device <b>122</b>. These status command messages <b>502</b> and <b>506</b> from commissioner device <b>102</b> are addressed directly to the desired wireless network devices, and status reply messages <b>504</b> and <b>508</b> are addressed directly back to commissioner device <b>102</b> (e.g. through the proxy).
0049Each status reply message may include three items of information: (1) a version number of an “active” application program of the wireless network device; (2) a version number of a “downloaded” application program of the wireless network device; and (3) a state of the wireless network device. In <figref idref="DRAWINGS">FIG. 5</figref>, status reply message <b>504</b> indicates that wireless network device <b>130</b> has an active application program with a version number of “110/0xC00/0x1”; a downloaded application program with a version number of “0/0/0” (i.e. none exists); and a state of “1/0/0/0” which indicates that device is in the OAD IDLE state (1), the error status to this query (0=none), and, as there is no session in progress, the current packet number is 0 and 0 packets are expected). On the other hand, status reply message <b>508</b> indicates that wireless network device <b>122</b> has an active application program with a version number of “111/0xC00/0x1” (previously downloaded and activated); a downloaded application program with a version number of “111/0xC00/0x1” (previously downloaded); and a state of “1/0/0/0” which indicates that device is in the OAD IDLE state (1), the error status to this query (0=none), and, as there is no session in progress, current packet number is 0 and 0 packets are expected). As apparent, wireless network device <b>122</b> has a downloaded application program (i.e. version 111/0xC00/0x1) that is an updated version of the active application program (i.e. version 110/0xC00/0x1) of wireless network device <b>130</b>. Wireless network device <b>122</b> has earlier obtained this updated application program through the same type of procedure (see previous description in relation to <figref idref="DRAWINGS">FIG. 4</figref>).
0050After commissioner device <b>102</b> accesses the needs of the wireless network through the discovery procedures and status inquires, commissioner device <b>102</b> sends commands to at least some of the wireless network devices which instruct them to operate as clients in performing OAD procedures to receive the updated application program from one or more other wireless network devices. In <figref idref="DRAWINGS">FIG. 5</figref>, it is shown that commissioner <b>102</b> causes an OAD command <b>510</b> to be wirelessly transmitted to wireless network device <b>130</b> to instruct wireless network device <b>130</b> to obtain an updated application program from wireless network device <b>122</b>. In the present embodiment, OAD command <b>510</b> specifies at least three items of information: (1) the version number of the application program to be downloaded (“111/0xC00/0x1”); (2) the IEEE address of wireless network device <b>108</b> with which to perform the OAD procedure (“0x001223344556677”); and (3) the network address of wireless network device <b>108</b> with which to perform the OAD procedure (“0x019C/0x20”). In response to receipt of OAD command <b>510</b>, wireless network device <b>130</b> sends an acknowledgement reply <b>512</b> to commissioner device <b>102</b>.
0051In further response to receipt of OAD command <b>510</b>, wireless network device <b>130</b> wirelessly transmits an OAD session start message <b>514</b> to wireless network device <b>122</b>. This may be viewed as an OAD procedure request. Here, OAD session start message <b>514</b> is directed to the address of the wireless network device specified in the earlier received OAD command <b>510</b>. In this embodiment, OAD session start message <b>514</b> provides the version number of the desired application program that it requests to receive (“111/0xC00/0x1”) and a session number for the OAD procedure (“0x48”). In response, wireless network device <b>122</b> wirelessly transmits an OAD session start reply message <b>516</b> back to wireless network device <b>130</b>. This reply message <b>516</b> acknowledges or confirms that wireless network device <b>122</b> indeed has the specified application program and is available to perform the OAD procedure with wireless network device <b>130</b>. Preferably, reply message <b>516</b> includes a size of the application program (“0xF6B4/8/4”) as well as the block size (8 bytes) and the number of blocks (4) per data frame when sent. Through such instruction, wireless network device <b>122</b> is engaged to operate as a server in an OAD procedure with wireless network device <b>130</b>.
0052In general, a copy of the updated application program is wirelessly communicated from wireless network device <b>122</b> (i.e. server) to wireless network device <b>130</b> (i.e. client) in the OAD procedure. More specifically, wireless network device <b>130</b> operates as a client to wirelessly transmit a series of data request commands <b>518</b>, <b>526</b>, . . . , etc., to wireless network device <b>122</b>, which are requests to receive particular data blocks of the application program in sequential order. The data blocks are wirelessly received through data reply messages <b>520</b>, <b>528</b>, . . . , etc., from wireless network device <b>122</b> which operates as a server. Each data request command from wireless network device <b>130</b> identifies the particular data block that it needs to receive. For example, “0x0” in data request command <b>518</b> is an offset to the first data block of the application program, and “0x1” in data request command <b>526</b> is the next offset to the second data block of the application program, etc. Each data reply message from wireless network device <b>122</b> identifies the particular data block (e.g. as an offset into the application program) that it is sending to wireless network device <b>130</b> (e.g. “0x0” in data reply message <b>520</b> and “0x1” in data reply message <b>528</b>), as well as the current device state (3=Server), any error status in response to the command (0=none), and the data block itself. Once the entire application program has been downloaded, wireless network device <b>130</b> sends a session terminate command <b>530</b> to wireless network device <b>122</b>. In response, wireless network device <b>122</b> sends a session terminate reply <b>532</b> to wireless network device <b>130</b>. This ends the OAD communication session.
0053During or after communication of the updated application program, commissioner device <b>102</b> may send one or more status command messages to wireless network device <b>130</b> to identify the progress or current state of wireless network device <b>130</b>. For example, commissioner device <b>102</b> may send a status command message <b>522</b> to wireless network device <b>130</b> during the communication of the application program, where wireless network device <b>130</b> responds by sending a status reply message <b>524</b> to commissioner device <b>102</b> indicating that the current transfer of the updated application program is incomplete (“110/0xC00/0x1” as the active application program, “0/0/0” as the downloaded application program which is not completely downloaded, and “2/0/1/0x7B6” as the state which indicates the device status (2=Client), the error response to this query (0=none), the number of the current packet in the session (1), and the total number of packets expected in the session (0x7B6). As another example, commissioner device <b>102</b> may send a status command message <b>534</b> to wireless network device <b>130</b> after the download of the updated application program, where wireless network device <b>130</b> responds by sending a status reply message <b>536</b> to commissioner device <b>102</b> indicating that the current transfer of the application program is complete (“110/0xC00/0x1” as the active application program; “111/0xC00/0x1” as the downloaded application program; and “1/0/0/0” as the state which indicates that device is in the OAD IDLE state (1), the error status to this query (0=none), and, as there is no session in progress, the current packet number is 0 and 0 packets are expected).
0054When an application program has been downloaded to a wireless network device, it is not automatically enabled as the active application program of the wireless network device. Sometime after commissioner device <b>102</b> identifies that an application program has been completely downloaded, it may enable the downloaded application program as the active application program of a wireless network device. In <figref idref="DRAWINGS">FIG. 5</figref>, commissioner device <b>102</b> sends a program enable command <b>538</b> to wireless network device <b>130</b>. Program enable command <b>538</b> specifies the version number of the application program which should be made active (e.g. “111/0xC00/0x1”) in wireless network device <b>130</b>. In response, wireless network device <b>130</b> causes the downloaded application program to serve as the active application program, writing over the current active application program with the downloaded application program. The overwriting procedure may be performed in accordance with the techniques described later in relation to <figref idref="DRAWINGS">FIGS. 7-11</figref>. Wireless network device <b>130</b> responds to commissioner device <b>102</b> with a program enable reply <b>540</b>. Preferably, commissioner device <b>102</b> waits for all desired wireless network devices to have received the updated application program before instructing most or all such devices to activate the program.
0055After activation of the updated application program, commissioner device <b>102</b> may send another status command message <b>542</b> to wireless network device <b>130</b>. Here, wireless network device <b>130</b> responds by sending a status reply message <b>544</b> to commissioner device <b>102</b> which indicates that the current download and activation of the application program is complete (“111/0xC00/0x1” as the active application program; “111/0xC00/0x1” as the downloaded application program; and “1/0/0/0” as the state which indicates that the device is in the OAD IDLE state (1), the error status to this query (0=none), and, as there is no session in progress, the current packet number is 0 and 0 packets are expected). The OAD procedure between wireless network devices <b>122</b> and <b>130</b> is complete.
0056<figref idref="DRAWINGS">FIG. 6</figref> is a state flow diagram <b>600</b> relating to OAD procedures of any one of the wireless network devices <b>104</b> of <figref idref="DRAWINGS">FIG. 1</figref>. As shown, each wireless network device has an idle state <b>602</b>, a client state <b>604</b> for OAD, a server state <b>606</b> for OAD, a session terminate state <b>608</b>, and a code enable state <b>610</b>. As shown, various events recited in <figref idref="DRAWINGS">FIG. 6</figref> cause transitions between states <b>602</b>, <b>604</b>, <b>606</b>, <b>608</b>, and <b>610</b>. As apparent, these events correspond to message events described earlier in relation to <figref idref="DRAWINGS">FIGS. 4-5</figref>.
0057Operation of commissioner device <b>102</b> of <figref idref="DRAWINGS">FIG. 1</figref> is now described in more detail. When fully realized, commissioner device <b>102</b> may have the following capabilities. For one, commissioner device <b>102</b> may use network infrastructure to discover device types and device capabilities. Commissioner device <b>102</b> may also be the original source for files to be used in the upgrade process. That is, if a particular device type has a new image (e.g. an upgraded application program) to be installed, commissioner device <b>102</b> may be the platform from which the image dissemination originates. Since the OAD procedure supports proxy commands, commissioner device <b>102</b> need not have native radio capability. Network presence for commissioner device <b>102</b> may be provided by any network-complaint device having OAD procedure capability and are adapted to interface with commissioner device <b>102</b> (e.g. a PC over a standard communications connection, USB, standard serial connection, or Ethernet via a gateway). Commissioner device <b>102</b> may communicate with wireless network device <b>106</b> (i.e. the proxy) using the standard OAD procedure protocol. This includes communicating the upgraded application program from commissioner device <b>102</b> to the proxy using the OAD procedure.
0058After issuing status commands to target devices over wireless network <b>102</b>, commissioner device <b>102</b> may determine which devices require upgrades using heuristic or algorithmic means. Commissioner device <b>102</b> may also, using heuristic or algorithmic means, assign paths over which the upgrade image can pass by properly assigning client and server roles in succession. Finally, commissioner device <b>102</b> may determine network topology and, using heuristic or algorithmic means, assign client-server pairs in such a way as to mitigate network interference of concurrent file transfer transactions between distinct client-server pairs. Because the network infrastructure is in place, file transfer sessions may span multi-hop locations. During file transfer sessions, cach wireless network device <b>104</b> may continue to perform its intended functionality. Commissioner device <b>102</b> maintains OAD procedure discipline by monitoring device status before, during, and after file transfer sessions. When appropriate, the commissioner device <b>102</b> instructs a wireless network device to begin activation or execution of the new image.
0059The computer instructions of commissioner device <b>102</b> may allow for it to perform the functions described herein (e.g. OAD procedure management functions) automatically and without user intervention. Alternatively, the computer instructions may allow for some or all of the functions to be handled manually by an end user through a user interface (e.g. keyboard and display).
0060The following description relates to the OAD procedure in more detail from the perspective of commissioner device <b>106</b>. First, the image to be propagated is obtained by commissioner device <b>102</b>. It may originate from one of three types of places: (1) the image may already exist on a wireless network device in wireless network <b>100</b>, which may be the case if a newer version of an existing device were added to wireless network <b>100</b>; (2) the image may be transferred to commissioner device <b>102</b> from another host platform, which would likely be a platform on which the new application image was developed; and (3) commissioner device <b>102</b> itself may also be a development platform. Second, commissioner device <b>102</b> discovers target devices for the new image by using the network infrastructure to find the network address of each candidate device. The ZigBee specification describes methods by which to perform this discovery which may be utilized. Using the status query provided in the OAD procedure, commissioner device <b>102</b> may determine the current version of each target device and determine whether it needs to be upgraded. This determination is done generally by comparing the version numbers of the latest upgrade version and the existing version numbers. Since some wireless network devices <b>104</b> may have different application programs for different device applications altogether, commissioner device <b>102</b> also determines which types of application programs exist on each wireless network devices <b>104</b> by version number for appropriate OAD programming assignment. That is, commissioner device <b>102</b> identifies the type of application program required by the wireless network device by the status reply information and thereafter identifies whether and which upgraded application program should be downloaded to it. Finally, using existing network infrastructure, commissioner device <b>102</b> may determine network topology. After these two steps, commissioner device <b>102</b> is able to determine the network topology with respect to target devices. Heuristic or algorithmic assignment of client-server roles may then be derived.
0061When the commissioner device <b>102</b> does not have native presence in the wireless network, the image to be propagated must be moved to at least one wireless network device that does have network presence. For example, the new image may be moved to wireless network device <b>106</b> which acts as a proxy device in wireless network <b>100</b> on behalf of commissioner device <b>102</b>. The transfer is accomplished through use of the standard OAD procedure, where the proxy is assigned as a client and specifies commissioner device <b>102</b> as a server. Note that the physical connectivity to commissioner device <b>102</b> may exist between any number of wireless network devices <b>104</b>. For example, a portable type commissioner device <b>102</b> may populate any number of wireless network devices distributed throughout wireless network <b>100</b>. Thereafter, each of these wireless network devices may act as a server throughout the remainder of wireless network <b>100</b>. Note that a wireless network device may act as a server to other wireless network devices even if the upgraded application program it is supplying is not relevant for the device itself. Through planning, any platform may be available to be a server and commissioner device <b>102</b> is free to use such devices as “way stations” for upgraded file propagation.
0062Other than perhaps making the upgrade image initially available on a wireless network device, commissioner device <b>102</b> does not participate in the actual file transfer sessions. Based on its knowledge of the network topology, location of target platforms, and location of platforms that currently hold the upgrade image, commissioner device <b>102</b> assigns various wireless network devices <b>104</b> as client-server pairs. When an image is transferred to a device, a separate command is required before the image is instantiated or activated on that device. The reason for this is twofold: (1) the image may not be appropriate for the device, which may be the case where the wireless network device is used as a way station; and (2) the updated application program may not be compatible on the network with the previous application programs so that, enabling new code may have to be coordinated across the network.
0063If commissioner device <b>102</b> does not have network presence it needs to be able to send commands and receive replies to other wireless network devices in the wireless network using the proxy device (e.g. wireless network device <b>106</b>) to which it is physically connected. The proxy device is adapted to process two different types of commands: (1) “normal” commands between commissioner device <b>102</b> and wireless network device <b>106</b>; and (2) “proxy” commands for processing communications between commissioner device <b>102</b> and another wireless network device. For example, the proxy device is adapted to process two types of status commands that originate over the direct physical connection: the “normal” status command to which the proxy device itself responds, and the “proxy status command that is sent to another wireless network device on behalf of commissioner device <b>102</b> to which it is physically attached. The reply to the proxy status command, as well as other communications, passed back to the connected device transparently. Proxy commands are the means by which commissioner device <b>102</b> may assign client roles to arbitrary devices on the wireless network without having presence on the wireless network itself.
0064The following describes one specific implementation for proxy messaging. In a client-server operating mode, communication between commissioner device <b>102</b> and wireless network device <b>106</b> is normal. Messages to and from commissioner device <b>102</b> appear to wireless network device <b>106</b> as any other peer application on wireless network <b>100</b>. Commissioner device <b>102</b> may download a binary file from the host platform to wireless network device <b>106</b> for dissemination throughout wireless network <b>100</b>. In this scenario, commissioner device <b>102</b> instructs wireless network device <b>106</b> to act as a client with commissioner device <b>102</b> as the server. The transactions on wireless network device <b>106</b> are exactly as provided in the OAD procedure, except that they are directed to and from the physical connection between commissioner device <b>102</b> and wireless network device <b>106</b> instead of the radio interface.
0065In a proxy operating mode, commissioner device <b>102</b> is able to direct downloading to and from other wireless network devices by sending and receiving proxy messages to and from such devices through wireless network device <b>106</b>. In this mode, wireless network device <b>106</b> acts as a proxy on behalf of commissioner device <b>102</b>. Instead of responding itself, wireless network device <b>106</b> sends messages from commissioner device <b>102</b> out over air and direct replies back commissioner device <b>102</b> appropriately (e.g. serving or acting as a gateway).
0066When commissioner device <b>102</b> is the server, i.e., when a new image is being made available for OAD via wireless network device <b>106</b> serving as a proxy, commissioner device <b>102</b> supplies a special server address in the Client command. This address may be set as follows: <br />#define SERIAL_SERVER_ADDRESS (0xFFFE)
0067For a proxy device such as wireless network device <b>106</b>, there are three things that may differentiate proxy mode messages from client-server mode messages: (1) command identifiers; (2) reply identifiers; and (3) command message header content (reply content and format are each the same as the client-server interface). In brief, the message header coming from commissioner device <b>102</b> will contain a message identifier and the network address and endpoint to which the message should be forwarded. The payload will be the same as the corresponding message. Wireless network device <b>106</b> will generate the appropriate message header and forward the payload over air. Proxy commands are identified by having a specific bit set in the message identifier. The remainder of the message identifier may be the same as the non-proxy version. The message identifiers for commands available for both client-server and proxy handling may be provided as follows: <tables id="TABLE-US-00001" num="1"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="259PT" align="left" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>// message ID defines for client-server mode</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="126PT" align="left" /><colspec colname="2" colwidth="133PT" align="left" /><tbody valign="top"><row><entry>#define ZLMSGID_STATUSQ</entry><entry>((uint8) 0x01)</entry></row><row><entry>#define ZLMSGID_SESSION_START</entry><entry>((uint8) 0x02)</entry></row><row><entry>#define ZLMSGID_SESSION_TERM</entry><entry>((uint8) 0x03)</entry></row><row><entry>#define ZLMSGID_CLIENT_CMD</entry><entry>((uint8) 0x04)</entry></row><row><entry>#define ZLMSGID_CODE_ENABLE</entry><entry>((uint8) 0x05)</entry></row><row><entry>#define ZLMSGID_SEND_DATA</entry><entry>((uint8) 0x06)</entry></row><row><entry>#define ZLMSGID_RESET</entry><entry>((uint8) 0x07)</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="259PT" align="left" /><tbody valign="top"><row><entry>// bit OR′ed into message ID to signify proxy command</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="154PT" align="left" /><colspec colname="2" colwidth="98PT" align="left" /><colspec colname="3" colwidth="7PT" align="left" /><tbody valign="top"><row><entry>#define ZLMSGID_PROXY_CMD</entry><entry>((uint8) 0x40)</entry><entry /></row><row><entry>#define ZLMSGID_PROXY_STATUSQ</entry><entry>(ZLMSGID_STATUSQ</entry><entry>|</entry></row><row><entry>ZLMSGID_PROXY_CMD)</entry></row><row><entry>#define ZLMSGID_PROXY_CLIENT_CMD</entry><entry>(ZLMSGID_CLIENT_CMD</entry><entry>|</entry></row><row><entry>ZLMSGID_PROXY_CMD)</entry></row><row><entry>#define ZLMSGID_PROXY_CODE_ENABLE</entry><entry>(ZLMSGID_CODE_ENABLE</entry><entry>|</entry></row><row><entry>ZLMSGID_PROXY_CMD)</entry></row><row><entry>#define ZLMSGID_PROXY_RESET</entry><entry>(ZLMSGID_RESET</entry><entry>|</entry></row><row><entry>ZLMSGID_PROXY_CMD)</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0068The only commands not available in proxy mode are those that require the sender to be in the client role. Commissioner device <b>102</b> is never in this role in the OAD procedures. The proxy message header is defined as follows: <tables id="TABLE-US-00002" num="2"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="56PT" align="left" /><colspec colname="1" colwidth="161PT" align="left" /><thead><row><entry /><entry /></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>typedef struct {</entry></row><row><entry /><entry> uint8 zcproxy_msgid;</entry></row><row><entry /><entry> uint16 zcproxy_nwkAddr;</entry></row><row><entry /><entry> uint8 zcproxy_endp;</entry></row><row><entry /><entry>} zcphdr_t;</entry></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables><br /> Replies to proxy messages will have the reply bit set just as the client-server replies. The network address and the endpoint should be set appropriately.
0069Using further techniques of the present application, the downloaded application program of a wireless network device may be enabled or activated in memory in an advantageous manner. Note that, in the following discussion, the lengths L<b>1</b> and L<b>2</b> and the memory addresses A<b>1</b>, A<b>2</b>, A<b>3</b>, and A<b>4</b> are specified as appropriate for the underlying memory technology. For example, if the technology is Flash memory, then these data specify flash pages. If the technology is standard serial EEPROM, than these data specify byte addresses.
0070In <figref idref="DRAWINGS">FIG. 7</figref>, an illustration of memory <b>210</b> of a wireless network device which stores an application program (“active image”) <b>702</b> as well as an updated application program (“downloaded image”) <b>704</b> in accordance with conventional techniques is shown. As shown, memory <b>210</b> is made of a single contiguous memory space. As depicted, application program <b>702</b> is stored in memory <b>210</b> beginning at a memory address A<b>1</b> to a memory address A<b>2</b>−1. Updated application program <b>704</b> is stored in memory <b>210</b> beginning at the memory address A<b>2</b> to a memory address A<b>4</b>−1. Application program <b>702</b> has a length L<b>1</b> and updated application program <b>704</b> has a length L<b>2</b>>L<b>1</b>, which is a longer version or update of application program <b>702</b>. Memory address A<b>1</b>, which is the location of the beginning of application program <b>702</b>, is typically the address to which a power-on or reset interrupt vector in the processor is directed.
0071In response to a predetermined condition, the processor will cause updated application program <b>704</b> to be copied over application program <b>702</b> beginning at memory address A<b>1</b>. See <figref idref="DRAWINGS">FIG. 8</figref>. The copying process is performed so that the beginning of updated application program <b>704</b> will be located at A<b>1</b>, typically the address of the power-on or reset interrupt vector. The predetermined condition that triggers the copying process may be the receipt of an instruction through the wireless transceiver to change or update the application program. The copying process is performed by sequentially reading data of updated application program <b>704</b> beginning at memory address A<b>2</b> while sequentially writing the data over application program <b>702</b> beginning at memory address A<b>1</b>. The original application program <b>702</b> will no longer be needed and is copied over. As the copying process reaches beyond memory address A<b>2</b>, a beginning portion of the original updated application program <b>704</b> will be written over by an end portion of the program.
0072After the copying process, and/or prior to the updated application program being executed by the processor, a validity check is performed on the updated application program to test the integrity of the data. The validity check may be or include, for example, a cyclical redundancy check (CRC) or a checksum test. If the validity check is successful, then the updated application program is executed by the wireless network device for operation. If the validity check is unsuccessful, however, then the data of the updated application program is identified to be corrupt and the updated application program will need to be recopied at the memory address A<b>1</b>. The validity check may be unsuccessful due to a failure that occurred while the updated application program was being copied over the original application program. Since the beginning portion of the updated application program may have been written over in the copying process, the wireless network device may again have to retrieve a copy of the updated application program from another wireless network device. If the beginning portion of the updated application has been overwritten, then this is not possible since there is no longer a complete viable program image that can run.
0073Referring ahead to <figref idref="DRAWINGS">FIG. 11</figref>, a flowchart for describing a method of updating an application program in memory of a wireless network device is shown. This method alleviates the concerns noted in the description of <figref idref="DRAWINGS">FIGS. 7-8</figref> above. This method is performed by a processor of a wireless network device of a wireless communication network. A computer program product of the present application may include a computer readable medium and computer instructions stored in the computer readable medium which are executable by the processor for performing the method.
0074Beginning at a start block <b>1100</b> of <figref idref="DRAWINGS">FIG. 11</figref>, the wireless network device maintains storage of an application program having a length L<b>1</b> in memory of the wireless network device, beginning at a memory address A<b>1</b> to a memory address A<b>2</b>−1 (step <b>1102</b> of <figref idref="DRAWINGS">FIG. 11</figref>). See application program <b>702</b> having length L<b>1</b> stored in memory <b>202</b> of FIG. <b>9</b>. Memory address A<b>1</b>, which is the location of the beginning of application program <b>702</b> of <figref idref="DRAWINGS">FIG. 9</figref>, is typically the address to which a power-on or reset interrupt vector in the processor is directed. An over-the-air download procedure is performed by the processor to receive updated application program <b>704</b> which has a length L<b>2</b>>L<b>1</b> (step <b>1104</b> of <figref idref="DRAWINGS">FIG. 11</figref>). Updated application program <b>704</b> is stored sequentially in the memory beginning at a memory address A<b>3</b>=A<b>2</b>+(L<b>2</b>−L<b>1</b>) for the length L<b>1</b> (to a memory address A<b>4</b>−1) and continued in a circular buffer fashion from the memory address A<b>2</b> for the length L<b>2</b>−L<b>1</b> (step <b>1106</b> of <figref idref="DRAWINGS">FIG. 11</figref>). The end of updated application program <b>704</b> is stored at memory address A<b>3</b>−1. Compare the storage of the updated application program of <figref idref="DRAWINGS">FIG. 9</figref> with that of <figref idref="DRAWINGS">FIG. 8</figref>.
0075In the present embodiment, memory <b>210</b> of <figref idref="DRAWINGS">FIG. 9</figref> is made of a single contiguous memory space. Memory <b>210</b> may have, for example, about 128 kilobytes of memory. Application programs may have sizes ranging from 43 kilobytes to 70 kilobytes for example, for storage within memory <b>210</b>. In some cases, the available memory space for the concurrent storage of two application programs is less than 2*L<b>2</b>. As apparent, available memory space in memory <b>210</b> is limited.
0076In response to a predetermined condition, the processor will cause updated application program <b>704</b> to be copied over application program <b>702</b> in a sequential fashion beginning at memory address A<b>1</b> (step <b>1108</b> of <figref idref="DRAWINGS">FIG. 11</figref>). See <figref idref="DRAWINGS">FIG. 10</figref>. The predetermined condition that triggers the copying process may be the receipt of an instruction through the wireless transceiver to change or update the application program. In general, the copying process is performed so that the beginning of updated application program <b>704</b> will be located at the address (memory address A<b>1</b>) of the power-on or reset interrupt vector. Specifically, the copying process is performed by sequentially reading data blocks of updated application program <b>704</b> beginning at memory address A<b>3</b>, and sequentially writing these data blocks over application program <b>702</b> beginning at memory address A<b>1</b>. When memory address A<b>4</b> is reached during the sequential reading, the writing process may be terminated or ceased at memory address A<b>2</b> since the appropriate remaining portion of updated application program <b>704</b> already remains between memory address A<b>2</b> and memory address A<b>3</b>−1. The copying process of step <b>1108</b> of <figref idref="DRAWINGS">FIG. 11</figref> is then complete.
0077After the copying process, and/or prior to the updated application program being executed by the processor, a validity check is performed on the updated application program to test the integrity of the data. The validity check may be or include, for example, a CRC or a checksum test. If the validity check is successful, then the updated application program is executed by the wireless network device for operation. If the validity check is unsuccessful, however, then the data of the updated application program is identified to be corrupt and the updated application program will need to be recopied at the memory address A<b>1</b> using the same process. The validity check may be unsuccessful due to a failure that occurred while the updated application program was being copied over the original application program. Since no portion of the original updated application program is ever written over or lost from the copying process (i.e.. as described earlier in relation to <figref idref="DRAWINGS">FIG. 8</figref>), however, the wireless network device needs not again retrieve a copy of the updated application program from another wireless network device for the recopying.
0078Final Comments. As described herein, an illustrative embodiment of a wireless network device of the present application includes a controller, memory for storing one or more application programs, and a wireless transceiver coupled to the controller and operative for communications in an ad hoc wireless network. The controller is adapted to execute the application program for controlling operation of the wireless network device. The controller is further adapted to receive, through the wireless transceiver, an instruction which causes the wireless network device to operate as a client in performing an over-the-air download (OAD) procedure for receiving the application program from another wireless network device which is operated as a server in the wireless network, and to operate the wireless network device as the client in performing the OAD procedure in response to such instruction. The controller is further adapted to receive, through the wireless transceiver, one or more instructions which cause the wireless network device to operate as a server in performing the OAD procedure for sending the application program to another wireless network device which is operated as a client in the wireless network, and to operate the wireless network device as the server in performing the OAD procedure in response to such instructions.
0079An ad hoc wireless communication network of the present application includes at least a first wireless network device, a second wireless network device, and a third wireless network device. The first wireless network device has a first controller, a first wireless transceiver coupled to the first controller and operative for communications in the wireless network, and a first memory for storing one or more application programs. The first controller is adapted to execute the application program for controlling operation of the first wireless network device. The first controller is further adapted to receive, through the first wireless transceiver, an instruction which causes the first wireless network device to operate as a client in performing an OAD procedure for receiving the application program from the third wireless network device which. is operated as a server in the wireless network, and to operate the first wireless network device as the client in performing the OAD procedure in response to such instruction. In addition, the first controller is further adapted to receive, through the first wireless transceiver, one or more instructions which causes the first wireless network device to operate as a server in performing the OAD procedure for sending the application program to the second wireless network device which is operated as a client in the wireless network, and to operate the first wireless network device as the server in performing the OAD procedure in response to such instructions. Similar to the first wireless network device, the second wireless network device has a second controller, a second wireless transceiver coupled to the second controller and operative for communications in the wireless network, and a second memory for storing one or more application programs. The second controller is adapted to execute the application program for controlling operation of the second wireless network device. The second controller is further adapted to receive, through the second wireless transceiver, an instruction which causes the second wireless network device to operate as a client in performing the OAD procedure to receive the application program from the first wireless network device which is operated as the server in the wireless network, and to operate the second wireless network device as the client in performing the OAD procedure in response to such instruction. The second controller is further adapted to receive, through the second wireless transceiver, one or more instructions which cause the second wireless network device to operate as a server in performing the OAD procedure for sending the application program to another wireless network device which is operated as a client in the wireless network, and to operate the second wireless network device as the server in performing the OAD procedure in response to such instructions.
0080An illustrative method for use in facilitating OAD procedures for a plurality of wireless network devices in an ad hoc wireless communication network may involve the acts of receiving, through a wireless transceiver of a wireless network device, an instruction to perform an OAD procedure with another wireless network device in the ad hoc wireless communication network; causing an instruction to initiate the OAD procedure to be sent to the other wireless network device through the wireless transceiver in response to receiving the instruction to perform the OAD procedure; receiving, through the wireless transceiver, an application program from the other wireless network device in the OAD procedure after causing the instruction to initiate the OAD procedure to be sent; and storing the application program in memory of the wireless network device. The act of receiving the instruction to perform the OAD procedure may comprise the further act of receiving an address which identifies the other wireless network device with which to perform the OAD procedure, and the act of causing the instruction to initiate the OAD procedure to be sent may comprise the further act of causing the instruction to be sent to the address which identifies the other wireless network device. Also, the act of receiving the instruction to perform the OAD procedure may comprise the further act of receiving a version number of the application program to be received in the OAD procedure, and the act of causing the instruction to initiate the OAD procedure to be sent to the other wireless network device may comprise the further act of causing the instruction to be sent along with the version number of the application program to be received in the OAD procedure.
0081A commissioner device of the present application may comprise a controller and a communication interface coupled to the controller. The controller may operative to cause a status request to be sent to a wireless network device of a wireless communication network through the communication interface; receive a status reply from the wireless network device through the network interface which includes a version number of an application program of the wireless network device; and cause an instruction to be sent to the wireless network device through the communication interface which causes it to operate as a client in performing an OAD procedure with another wireless network device of the wireless network for receiving an upgraded application program. The controller may be further operative to cause a discovery request to be broadcasted in the wireless network and, in response to the discovery request, receive discovery responses from the wireless network devices through the communication interface which include addresses of the wireless network devices. The communication interface may be a wired communication interface for connecting with a wireless proxy device of the wireless network, such that the status request and the instruction comprise proxy messages sent by the commissioner device.
0082A related method of updating an application program in memory of any type of network device is also described. An application program having a length L<b>1</b> is stored in memory of the wireless network device from a memory address A<b>1</b> to a memory address A<b>2</b>−1. A download procedure is performed by the network device to receive an updated application program having a length L<b>2</b>>L<b>1</b>. This updated application program is stored in the memory from a memory address A<b>3</b>=A<b>2</b>+(L<b>2</b>−L<b>1</b>) for the length L<b>1</b> and continued in a circular buffer fashion from the memory address A<b>2</b> for the length L<b>2</b>−L<b>1</b>. The application program is then copied over with the updated application program beginning at the memory address A<b>1</b>. With this technique, if a failure occurs while copying over the application program, no portion of the original updated application program will be written over.
0083It is to be understood that the above is merely a description of preferred embodiments of the invention and that various changes, alterations, and variations may be made without departing from the true spirit and scope of the invention as set for in the appended claims. For example, although a ZigBee™ type network has been shown and described as the network of choice, any similar type of network may be utilized. Note that an “updated” or “upgraded” application program may be any suitable revision, version, or variation of the existing application program including any prior versions thereof. Few if any of the terms in the specification and claims have been given any special particular meaning different from their plain language meaning, and therefore the specification is not to be used to define terms in an unduly narrow sense.
Contents4
9 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US8607222B2 | Cited by | United States of America | Search report |
| US2011055716A1 | Cited by | United States of America | Pre-grant |
| US2008232334A1 | Cited by | United States of America | Pre-grant |
| US2010100876A1 | Cited by | United States of America | Pre-grant |
| US8640031B2 | Cited by | United States of America | Search report |
| US10666685B2 | Cited by | United States of America | Search report |
| US9736021B2 | Cited by | United States of America | Search report |
| US11019104B2 | Cited by | United States of America | Applicant |
| US10275233B2 | Cited by | United States of America | Search report |
| US2012047223A1 | Cited by | United States of America | Pre-grant |
| US10015200B2 | Cited by | United States of America | Applicant |
| WO2009067258A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US8145732B2 | Cited by | United States of America | Search report |
| US2011010701A1 | Cited by | United States of America | Pre-grant |
| US9904533B2 | Cited by | United States of America | Search report |
| US10095501B2 | Cited by | United States of America | Applicant |
| EP3040858A1 | Cited by | European Patent Office (EPO) | Search report |
| US2015088957A1 | Cited by | United States of America | Pre-grant |
| US2011219367A1 | Cited by | United States of America | Pre-grant |
| CN105637521A | Cited by | China | Search report |
| US9251109B2 | Cited by | United States of America | Search report |
| US2015178236A1 | Cited by | United States of America | Pre-grant |
| US10235048B2 | Cited by | United States of America | Search report |
| US9621457B2 | Cited by | United States of America | Applicant |
| US8849717B2 | Cited by | United States of America | Applicant |
| US7830834B2 | Cited by | United States of America | Search report |
| US10521214B2 | Cited by | United States of America | Applicant |
| US11036487B2 | Cited by | United States of America | Search report |
| US2011010759A1 | Cited by | United States of America | Pre-grant |
| US2016092197A1 | Cited by | United States of America | Pre-grant |
| US10868867B2 | Cited by | United States of America | Applicant |
| US8225303B2 | Cited by | United States of America | Search report |
| US10469898B2 | Cited by | United States of America | Applicant |
| US10430176B2 | Cited by | United States of America | Search report |
| US2009144721A1 | Cited by | United States of America | Pre-grant |
| US10101987B2 | Cited by | United States of America | Applicant |
| US2010049841A1 | Cited by | United States of America | Pre-grant |
| US10945262B2 | Cited by | United States of America | Search report |
| US10868709B2 | Cited by | United States of America | Applicant |
| US2014006574A1 | Cited by | United States of America | Pre-grant |
| US2011010699A1 | Cited by | United States of America | Pre-grant |
| US2019158538A1 | Cited by | United States of America | Search report |
| US2007118628A1 | Cited by | United States of America | Pre-grant |
| US2019132839A1 | Cited by | United States of America | Search report |
| US2019012161A1 | Cited by | United States of America | Search report |
| US5778234A | Cites | United States of America | Pre-grant |
| US6343379B1 | Cites | United States of America | Pre-grant |
| US6470496B1 | Cites | United States of America | Pre-grant |
2 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 27088505 | United States of America | A | |
| US20050270885 | – | – | – |
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US2007169080A1 | United States of America | A1 | |
| US7814478B2 | United States of America | B2 |
42 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Application Is Now CompleteCOMP | COMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Payment of additional filing fee/PreexamFLFEE | FLFEE | |
| Applicant has submitted new drawings to correct Corrected Papers problemsCORRDRW | CORRDRW | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
8 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 20070169080
- Publication, DOCDB
- 2007169080
- Publication, EPODOC
- US2007169080
- Application
- 11270885
- Application, DOCDB
- 27088505
- Application, EPODOC
- US20050270885
Titles
- English
- Methods and apparatus for use in updating application programs in memory of a network device
Classification
- CPC, 1
- G06F8/65
- IPC, 3
- G06F15 16
- G06F9 44
- G11C29 00
- USPC, 4
- 717168000
- 709203000
- 714763000
- 717173000