Search

US-12625700-B2 - Differential configuration updates for mobile devices

US12625700B2US 12625700 B2US12625700 B2US 12625700B2US-12625700-B2

Abstract

A system includes memory hardware configured to store instructions and processing hardware configured to execute the instructions. The instructions include loading a legacy configuration file including a plurality of legacy blocks and loading an updated configuration file including a plurality of updated blocks. The instructions include, for each updated block, identifying one legacy block from the plurality of legacy blocks having a same type as the updated block and a payload representing a nearest match to a payload of the updated block and generating an update data object based on an identifier of the legacy block and an identifier of the updated block and adding the update data object to a difference file in response to the identified one legacy block and the updated block having matching payloads but different identifiers. The instructions include transmitting the difference file to a mobile device via a radio network to update the device.

Inventors

  • Graeme Johnson

Assignees

  • MOTOROLA SOLUTIONS, INC.

Dates

Publication Date
20260512
Application Date
20230915

Claims (20)

  1. 1 . A system including: memory hardware configured to store instructions; and processing hardware configured to execute the instructions, wherein the instructions include: loading a legacy configuration file including a plurality of legacy blocks, each of the plurality of legacy blocks including a type, an identifier, and a payload; loading an updated configuration file including a plurality of updated blocks, each of the plurality of updated blocks including a type, an identifier, and a payload; for each updated block of the plurality of updated blocks: identifying one legacy block from the plurality of legacy blocks having a same type as the updated block and a payload representing a nearest match to the payload of the updated block, and in response to the payload of the identified one legacy block being equal to the payload of the updated block but having a different identifier than the identifier of the updated block, generating an update data object based on the identifier of the legacy block and the identifier of the updated block and adding the update data object to a difference file; and transmitting the difference file to a mobile device via a radio network to update the legacy configuration file stored at the mobile device.
  2. 2 . The system of claim 1 , wherein identifying the one legacy block from the plurality of legacy blocks having the same type as the updated block and the payload representing the nearest match to the payload of the updated block includes identifying the one legacy block from the plurality of legacy blocks having a payload with a least number of bytes changed as compared to the payload of the updated block.
  3. 3 . The system of claim 1 , wherein the instructions further include: in response to the identified one legacy block not being equal to the payload of the updated block: determining an amount of difference between the payload of the identified one legacy block and the payload of the updated block, and in response to the amount of difference satisfying a threshold, generating the update data object based on a comparison of a portion of the payload of the identified one legacy block and a portion of the payload of the updated block and adding the update data object to the difference file.
  4. 4 . The system of claim 3 , wherein the threshold is a one-byte difference between the portion of the payload of the identified one legacy block and the portion of the payload of the updated block.
  5. 5 . The system of claim 4 , wherein the portion of the identified one legacy block is a byte of the payload of the identified one legacy block that differs from the payload of the updated block.
  6. 6 . The system of claim 3 , wherein the comparison includes a bitwise exclusive-OR of the portion of the payload of the identified one legacy block and the portion of the payload of the updated block.
  7. 7 . The system of claim 3 , wherein the instructions further include: in response to the amount of difference not satisfying the threshold, generating the update data object based on the comparison of the payload of the identified one legacy block and the payload of the updated block and adding the update data object to the difference file.
  8. 8 . The system of claim 3 , wherein the instructions further include applying a compression algorithm to at least a portion of the difference file.
  9. 9 . The system of claim 8 , wherein the compression algorithm is a binary compression algorithm.
  10. 10 . The system of claim 1 , wherein the instructions include: in response to determining that the identifier of the updated block matches the identifier of the identified one legacy block and the payload of the updated block matches the payload of the identified one legacy block, excluding the updated block from the difference file.
  11. 11 . The system of claim 1 , wherein the instructions include: determining whether the plurality of legacy blocks includes at least one legacy block having the same type as the updated block; in response to determining that the plurality of legacy blocks does not include at least one legacy block having the same type as the updated block, generating the update data object based on the payload of the updated block; determining whether the plurality of updated blocks includes at least one updated block having a same type and a same identifier as a selected legacy block; and in response to determining that the plurality of updated blocks does not include at least one updated block having the same type and the same identifier as the selected legacy block, generating the update data object based on the identifier of the selected legacy block and having a null size field.
  12. 12 . A computer-implemented method including: loading a legacy configuration file including a plurality of legacy blocks, each of the plurality of legacy blocks including a type, an identifier, and a payload; loading an updated configuration file including a plurality of updated blocks, each of the plurality of updated blocks including a type, an identifier, and a payload; for each updated block of the plurality of updated blocks: identifying one legacy block from the plurality of legacy blocks having a same type as the updated block and a payload representing a nearest match to the payload of the updated block, and in response to the identified one legacy block not being equal to the payload of the updated block: determining an amount of difference between the payload of the identified one legacy block and the payload of the updated block, and in response to the amount of difference satisfying a threshold, generating an update data object based on a comparison of a portion of the payload of the identified one legacy block and a portion of the payload of the updated block and adding the update data object to a difference file; and transmitting the difference file to a mobile device via a radio network to update the legacy configuration file stored at the mobile device.
  13. 13 . The method of claim 12 , wherein identifying the one legacy block from the plurality of legacy blocks having the same type as the updated block and the payload representing the nearest match to the payload of the updated block includes identifying the one legacy block from the plurality of legacy blocks having a payload with a least number of bytes changed as compared to the payload of the updated block.
  14. 14 . The method of claim 13 , wherein the threshold is a one-byte difference between the portion of the payload of the identified one legacy block and the portion of the payload of the updated block.
  15. 15 . The method of claim 14 , wherein the portion of the identified one legacy block is a byte of the payload of the identified one legacy block that differs from the payload of the updated block.
  16. 16 . The method of claim 12 , wherein the comparison includes a bitwise exclusive-OR of the portion of the payload of the identified one legacy block and the portion of the payload of the updated block.
  17. 17 . A non-transitory computer-readable medium comprising executable instructions, wherein the executable instructions include: loading a legacy configuration file including a plurality of legacy blocks, each of the plurality of legacy blocks including a type, an identifier, and a payload; loading an updated configuration file including a plurality of updated blocks, each of the plurality of updated blocks including a type, an identifier, and a payload; for each updated block of the plurality of updated blocks: identifying one legacy block from the plurality of legacy blocks having a same type as the updated block and a payload representing a nearest match to the payload of the updated block, and in response to the payload of the identified one legacy block being equal to the payload of the updated block but having a different identifier than the identifier of the updated block, generating an update data object based on the identifier of the legacy block and the identifier of the updated block and adding the update data object to a difference file; and transmitting the difference file to a mobile device via a radio network to update the legacy configuration file stored at the mobile device.
  18. 18 . The non-transitory computer-readable medium of claim 17 , wherein identifying the one legacy block from the plurality of legacy blocks having the same type as the updated block and the payload representing the nearest match to the payload of the updated block includes identifying the one legacy block from the plurality of legacy blocks having a payload with a least number of bytes changed as compared to the payload of the updated block.
  19. 19 . The non-transitory computer-readable medium of claim 17 , wherein the executable instructions further include: in response to the identified one legacy block not being equal to the payload of the updated block: determining an amount of difference between the payload of the identified one legacy block and the payload of the updated block, and in response to the amount of difference satisfying a threshold, generating the update data object based on a comparison of a portion of the payload of the identified one legacy block and a portion of the payload of the updated block and adding the update data object to the difference file.
  20. 20 . The non-transitory computer-readable medium of claim 17 , wherein the executable instructions further include: determining whether the plurality of legacy blocks includes at least one legacy block having the same type as the updated block; and in response to determining that the plurality of legacy blocks does not include at least one legacy block having the same type as the updated block, generating the update data object based on the payload of the updated block.

Description

FIELD The present disclosure relates to communications systems and, more particularly, to performing digital configuration updates for mobile devices used in radio communications systems. SUMMARY Low bandwidth wireless connections, such as, for example, land mobile radio (LMR) connections, may make it difficult to transmit configuration updates. For example, radios communicating over LMR connections may use a configuration file (also referred to as a “codeplug”) that may control all or many aspects of the radio and, thus, may be a large file (e.g., between about 50 kilobyte and about 5 megabytes). Transmitting such a file over a low bandwidth connection, such as, for example, a LMR connection may provide benefits in terms of accessibility and coverage but may consume a large amount of resources in terms of bandwidth and time. For example, some examples of digital LMR connections offer data transmission rates in a range of between about 4.8 kilobits per second (kbps) to about 9.6 kbps. Reducing file sizes transmitted via such connections offers a variety of technical benefits, for example, by reducing transmission times, making more efficient use of bandwidth, reducing error rates and improving reliability, allowing for better coexistence with voice traffic, and lowering the energy consumption of mobile devices using the LMR connection. A system includes memory hardware configured to store instructions and processing hardware configured to execute the instructions. The instructions include loading a legacy configuration file including a plurality of legacy blocks and loading an updated configuration file including a plurality of updated blocks. Each of the plurality of legacy blocks includes a type, an identifier, and a payload. Each of the plurality of updated blocks includes a type, an identifier, and a payload. The instructions include, for each updated block of the plurality of updated blocks, identifying one legacy block from the plurality of legacy blocks having the same type as the updated block and a payload representing a nearest match to the payload of the updated block and generating an update data object based on the identifier of the legacy block and the identifier of the updated block and adding the update data object to a difference file in response to the identified one legacy block having a matching payload to the payload of the updated block but a different identifier than the identifier of the updated block. The instructions include transmitting the difference file to a mobile device via a radio network to update the legacy configuration file stored at the mobile device. In other features, identifying the one legacy block from the plurality of legacy blocks having the same type as the updated block and the payload representing the nearest match to the payload of the updated block includes identifying the one legacy block from the plurality of legacy blocks having a payload with a least number of bytes changed as compared to the payload of the updated block. In other features, the instructions further include, in response to the identified one legacy block not having the matching payload to the payload of the updated block, determining an amount of difference between the payload of the identified one legacy block and the payload of the updated block and generating the update data object based on a comparison of a portion of the payload of the identified one legacy block and a portion of the payload of the updated block and adding the update data object to the difference file in response to the amount of difference satisfying a threshold. In other features, the threshold is a one-byte difference between the portion of the payload of the identified one legacy block and the portion of the payload of the updated block. In other features, the portion of the identified one legacy block is a byte of the payload of the identified one legacy block that differs from the payload of the updated block. In other features, the comparison includes a bitwise exclusive-OR of the portion of the payload of the identified one legacy block and the portion of the payload of the updated block. In other features, the instructions further include generating the update data object based on the comparison of the payload of the identified one legacy block and the payload of the updated block and adding the update data object to the difference file in response to the amount of difference not satisfying the threshold. In other features, the instructions further include applying a compression algorithm to at least a portion of the difference file. In other features, the compression algorithm is a binary compression algorithm. In other features, the instructions include excluding the updated block from the difference file in response to determining that the identifier of the updated block matches the identifier of the identified one legacy block and the payload of the updated block matches the payload of the identified one