Error correction coding

Dynamic definition of error correcting codes through signaling representations or algorithms allows communication nodes to adapt to new use cases and environments, overcoming limitations of fixed codes in existing standards.

WO2025252314A1PCT designated stage Publication Date: 2025-12-11TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
PCT/EP2024/065736
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-06-07
Publication Date
2025-12-11

AI Technical Summary

Technical Problem

Existing communication standards fix error correcting codes across generations, limiting their adaptability to new use cases and error environments, and standardization cycles are too long to keep pace with rapid changes.

Method used

Implement a dynamic definition of error correcting codes by signaling mathematical or graphical representations or algorithms for new codes, enabling flexible updates within the same generation, allowing communication nodes to adapt to new use cases and environments.

Benefits of technology

Enables communication nodes to dynamically update error correcting codes as needed, ensuring compatibility and performance in evolving environments without lengthy standardization delays.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure EP2024065736_11122025_PF_FP_ABST
    Figure EP2024065736_11122025_PF_FP_ABST
Patent Text Reader

Abstract

A first communication node (12-1) transmits to a second communication node (12-2), or receives from the second communication node (12-2), a code definition (20D) for an error correcting code (20). In some embodiments, the code definition (20D) explicitly indicates one or more values (20V) of a mathematical or graphical representation (20R) of the error correcting code (20). In other embodiments, the code definition (20D) indicates an algorithm (20A) for how to calculate a mathematical or graphical representation (20R) of the error correcting code (20), and indicates one or more values (20N) of one or more inputs to that algorithm (20A). The first communication node (12-1) also, after transmitting or receiving the code definition (20D), transmits and / or receives data (18) to and / or from the second communication node (12-2) using the error correcting code (20).
Need to check novelty before this filing date? Find Prior Art

Description

[0001] ERROR CORRECTION CODING

[0002] TECHNICAL FIELD

[0003] The present application relates generally to communication nodes and relates more particularly to error correction coding of communication between communication nodes.

[0004] BACKGROUND

[0005] Error correction coding refers to techniques for a transmitter to encode data in such a way that the receiver can detect and correct errors that occur during transmission of the data to the receiver. These errors can arise from various sources such as noise and interference. By incorporating redundancy into the original data, error correcting codes enable the detection of errors and, in many cases, their automatic correction without the need for retransmission. This process enhances the reliability and integrity of information, ensuring that even in adverse conditions, data can be accurately received. Different types of error correcting codes exist, each suited to different applications and error environments.

[0006] Communication that conforms to a standard, such as the standard governed by the 3rdGeneration Partnership Project (3GPP), heretofore employs a predefined set of error correcting codes that a standardization body decides in advance as being most suited to the applications and error environments targeted by a certain generation of the communications standard. With the set of available error correcting codes fixedly predefined at communication nodes in this way, a communication node that conforms to a certain communications standard generation can signal which of the error correcting codes in the predefined set another communication node is to use by simply signalling whichever index is mapped to the chosen error correcting code. This advantageously keeps signaling overhead low.

[0007] As the communications standard evolves over multiple generations, the set of error correcting codes usable may evolve over time across generations. But the set of error correcting codes usable in any given generation of the communications standard remains fixed upon standardization, e.g., the set of Low Density Parity Check (LDPC) polar codes for 5thGeneration New Radio (NR) is fixed until 6thGeneration NR. Standardizing the error correcting codes in this way facilitates efficiency and compatibility between transmitters and receivers.

[0008] However, the fixed nature of the set of error correcting codes within any given generation of a communications standard means that decoding performance is constant in terms of error rate and approximately constant in terms of decoding latency, for an entire generation of the communications standard. This in turn limits the ability of the communications standard to keep pace with new use cases and business opportunities that arise before the onset of the next generation. Indeed, the standardization cycle of some communications standards is quite long, e.g., on the order of 5-10 years, such that each generation is standardized years ahead of its actual adoption. If the standardization cycle between generations is longer than the rate at which new use cases or error environments arise, the error correcting codes fixed in any given generation may very well be unsuitable for those new use cases or error environments.

[0009] SUMMARY

[0010] It may be an object of the present invention to provide techniques which may enable a dynamic definition of an error correcting code to be usable in new use cases of communication between communication nodes.

[0011] Some embodiments herein enable the dynamic definition of a new error correcting code for use in communication between communication nodes, e.g., even within the same generation of a communication standard to which the communication nodes conform. In some embodiments, for example, one communication node signals the definition of a new error correcting code to another communication node. The signaling communication node may do so for example by explicitly signaling value(s) of a mathematical or graphical representation of the new error correcting code, e.g., value(s) of a parity check matrix, generator matrix, or polynomial representing the new error correcting code. Alternatively, the signaling communication node may signal an algorithm for how to calculate a mathematical or graphical representation of the new error correcting code, along with signaling one or more values of one or more inputs to that algorithm. Accordingly, rather than being limited to selection from among a predefined set of error correcting codes (e.g., through signaling an index mapped to a chosen code), some embodiments enable entirely new error correcting codes to be defined on an as-needed basis, e.g., as new use cases or error environments arise, even while conforming to the same communication standard generation. Some embodiments thereby advantageously enable dynamic updating of error correcting codes to keep pace with new use cases or error environments, e.g., without incurring lengthy delays until standardization of the next generation.

[0012] More particularly, embodiments herein include a method performed by a first communication node. The method comprises transmitting to a second communication node, or receiving from the second communication node, a code definition for an error correcting code. In some embodiments, the code definition explicitly indicates one or more values of a mathematical or graphical representation of the error correcting code. In other embodiments, the code definition indicates an algorithm for how to calculate a mathematical or graphical representation of the error correcting code, and indicates one or more values of one or more inputs to that algorithm. The method also comprises, after transmitting or receiving the code definition, transmitting and / or receiving data to and / or from the second communication node using the error correcting code.

[0013] In some embodiments, the method further comprises, before transmitting or receiving the data using the error correcting code, validating the mathematical or graphical representation of the error correcting code by validating encoding and / or decoding of one or more test messages exchanged between the first and second communication nodes.

[0014] Other embodiments herein include a first communication node. The first communication node is configured to transmit to a second communication node, or receive from the second communication node, a code definition for an error correcting code. In some embodiments, the code definition explicitly indicates one or more values of a mathematical or graphical representation of the error correcting code. In other embodiments, the code definition indicates an algorithm for how to calculate a mathematical or graphical representation of the error correcting code, and indicates one or more values of one or more inputs to that algorithm. The first communication node is also configured to, after transmitting or receiving the code definition, transmit and / or receive data to and / or from the second communication node using the error correcting code.

[0015] Still other embodiments include a corresponding computer program and a carrier of such a computer program.

[0016] BRIEF DESCRIPTION OF THE DRAWINGS

[0017] Figure 1 is a block diagram of a communication network in accordance with some embodiments.

[0018] Figure 2 is a block diagram of communication nodes in accordance with some embodiments.

[0019] Figure 3 is a block diagram of a code definition validation procedure according to some embodiments.

[0020] Figure 4 is a call flow diagram of a procedure for conveying code definitions via a bootstrap code and for validation of the code definition, according to some embodiments.

[0021] Figure 5 is a block diagram of encoding and decoding of communication nodes according to some embodiments.

[0022] Figure 6 is a logic flow diagram of a method performed by a first communication node in accordance with some embodiments.

[0023] Figure 7 is a block diagram of a communication node according to some embodiments.

[0024] Figure 8 shows an example of a communication system in accordance with some embodiments.

[0025] Figure 9 is a block diagram of a UE in accordance with some embodiments. Figure 10 is a block diagram of a network node in accordance with some embodiments.

[0026] Figure 11 is a block diagram of a virtualization environment in accordance with some embodiments.

[0027] DETATILED DESCRIPTION

[0028] Figure 1 shows a communication network 10 according to some embodiments. The communication network 10 provides communication service to one or more communication devices 12A. In this context, a network node 12B of the communication network 10 may transmit downlink data to a communication device 12A over a downlink 14D and / or a communication device 12A may transmit uplink data to a network node 12B over an uplink 14U. Alternatively or additionally, communication devices 12A may communicate sidelink data between one another over a sidelink 14S, which does not traverse any network node 12B of the communication network 10. As used herein, then, both a communication device 12A and a network node 12B may be referred to generally as a communication node 12.

[0029] In this context, Figure 2 shows two communication nodes 12-1 and 12-2 according to some embodiments. Communication node 12-1 may be a communication device 12A or a network node 12B. Similarly, communication node 12-2 may be a communication device 12A or a network node 12B.

[0030] As shown, communication node 12-2 is configured with a set 16 of N defined error correcting codes C-1...C-N, with N > 1 , e.g., where each error correcting code may be a block code or a convolutional code. The set 16 of error correcting codes C-1...C-N may also be referred to as a codebook. Which particular error correcting codes C-1...C-N communication node 12-2 is configured with may be dictated or governed by which generation of a communications standard the communication node 12-2 complies. In fact, this set 16 of N error correcting codes C-1 ...C-N may be preconfigured at communication node 12-2 at the time of manufacture, in accordance with a particular generation of a communications standard with which communication node 12-2 complies.

[0031] Regardless, each of the error correcting codes C-1... C-N in the set 16 may be defined at least in terms of a mathematical or graphical representation of the error correcting code. For example, a linear block code may be defined in terms of a mathematical representation that takes the form of either a parity check matrix (whose rows are orthogonal to codewords of the code so as to describe linear relations that the components of a codeword must satisfy) or a generator matrix (whose rows correspond to respective codewords of the code so as to be composed of the null space to the parity check matrix). A non-linear block code, such as a Reed-Solomon code or a BCH (Bose-Chaudhuri- Hocquenghem) code, may instead be defined in terms of a mathematical representation that takes the form of a polynomial which represents the code over a finite field. A convolutional code by contrast may be defined in terms of a mathematical representation that takes the form of a polynomial which determines the transition rules of a convolutional encoder. No matter the particular type of each error correcting code, then, the definition of an error correcting code at communication node 12-2 equips communication node 12-2 with the capability to use that code.

[0032] Some embodiments herein enable the dynamic definition of a new error correcting code 20 at communication node 12-2, e.g., even within the same generation of a communications standard to which communication node 12-2 conforms. That is, some embodiments enable an error correcting code 20 to be newly defined at communication node 12-2, e.g., even after manufacture of communication node 12-2 and / or even while maintaining conformance with a certain generation of an applicable communications standard. The new error correcting code 20 may accordingly supplement any error correcting codes C-1 ...C-N that were already previously defined in the set 16 at communication node 12-2, so that communication node 12-2 becomes equipped also with the capability to use the new error correcting code 20, i.e., the new error correcting code 20 is added to the set 16 of defined error correcting codes. Indeed, after the new error correcting code 20 is defined at communication node 12-2, that new error correcting code 20 can then and only then be used to transmit and / or receive data 18 between communication nodes 12-1 , 12-2, e.g., communication node 12-2 may flexibly update its encoder and / or decoder to support the new error correcting code 20. Some embodiments thereby enable dynamic updating of error correcting code capabilities of communication node 12-2. As such, even as new error correcting codes become known, and / or as new use cases or error environments develop, communication node 12-2’s error correcting code capabilities can keep pace with those new codes, new use cases, and / or new error environments, e.g., even if they outpace the next generation of the applicable communications standard. Indeed, some embodiments provide flexibility to update error correcting code(s) for specific usecases where the “one size fits all code” is too far from optimal, e.g., such that a new error correcting code may be used for a specific use case without affecting others part of the communication network. And some embodiments enable better codes to be defined and used as they are found, rather than their use being delayed for a long time (e.g., 10 years) until the next communications standard generation.

[0033] Some embodiments realize dynamic definition of the new error correcting code 20 at communication node 12-2 by signaling the definition of the new error correcting code 20 to communication node 12-2, where the definition may define or describe the new error correcting code 20 in any suitable way. As shown in Figure 2 in this regard, communication node 12-1 transmits a code definition 20D for error correcting code 20 to communication node 12-2. The code definition 20D defines the error correcting code 20 to communication node 12-2, so as to dynamically equip communication node 12-2 with the capability to use the error correcting code 20.

[0034] In some embodiments, the code definition 20D ultimately equips communication node 12-2 with a mathematical or graphical representation 20R of the new error correcting code 20. The mathematical or graphical representation 20R of the new error correcting code 20 may be a mathematical representation in the form of a parity check matrix, a generator matrix, or a polynomial. Alternatively, the mathematical or graphical representation 20R of the new error correcting code 20 may be a graphical representation, e.g., in the form of a bipartite graph and a lifting matrix, or in the form of a trellis diagram, a state diagram, or a finite state machine. Regardless, the fact that the error correcting code 20 is new, at least to communication node 12-2, means that communication node 12-2 does not know the mathematical or graphical representation 20R of the error correcting code 20 prior to its receipt of the code definition 20D. The code definition 20D in this regard may provide the mathematical or graphical representation 20R itself, or otherwise enable communication node 12-2 to calculate or derive the mathematical or graphical representation 20R.

[0035] For example, in one or more embodiments shown, the code definition 20D explicitly indicates one or more values 20V of the mathematical or graphical representation 20R of the error correcting code 20. Explicitly indicating such value(s) 20V means that the code definition 20D directly conveys the value(s) 20V, as opposed to only implicitly or indirectly indicating the value(s) 20V by explicitly indicating something else. For instance, where the mathematical or graphical representation 20R is a matrix (e.g., a parity check matrix for a block code) or a polynomial (e.g., for a convolutional code), the code definition 20D explicitly indicates one or more values 20V of that matrix or polynomial. In fact, in some embodiments, the code definition 20D itself includes the full matrix or polynomial, so that communication node 12-1 in such a case actually transmits the matrix or polynomial to communication node 12-2. In other embodiments, though, the code definition 20D includes only a part of the matrix or polynomial, e.g., by explicitly indicating just the non-zero value(s) in the matrix or polynomial. Generally, then, the code definition 20D may explicitly indicate all or just some of the value(s) of the mathematical or graphical representation 20R of the error correcting code 20, e.g., with any remaining value(s) that are not explicitly indicated being known or derivable by communication node 12-2.

[0036] In other embodiments, the code definition 20D indicates an algorithm 20A for how to calculate the mathematical or graphical representation 20R of the error correcting code 20, and indicates one or more values 20N of one or more inputs to that algorithm 20A. The algorithm 20A indicated may for instance take the form of a mathematical function from which to calculate the mathematical or graphical representation 20R of the error correcting code 20, with the one or more values 20N indicated being one or more inputs to the mathematical function. In some embodiments, this mathematical function may take the form of an equation. For example, the algorithm 20A may be a pseudo-random function from which to calculate the mathematical or graphical representation 20R of the error correcting code 20, with the one or more values 20N indicated including a seed value of this pseudorandom function. The pseudo-randomness of code generation in this case may advantageously add security. As another example, the algorithm 20A may be to calculate the mathematical or graphical representation 20R of the error correcting code 20 (e.g., a regular LDPC code) from a bipartite graph (e.g., a structured Tanner graph), in which case the one or more values 20N indicated in the code definition 20D may include value(s) of the bipartite graph. In still another example, the algorithm 20A may be to calculate the mathematical or graphical representation 20R of the error correcting code 20 (e.g., an irregular LDPC code) from a base bipartite graph (e.g., a Tanner graph) and a lifting matrix, where the bipartite graph graphically represents a component error correcting code and the lifting matrix is configured to transform the base bipartite graph. In this example, then, the one or more values 20N indicated in the code definition 20D may include value(s) of the base bipartite graph and / or value(s) of the lifting matrix. Communication node 12-2 in some embodiments may calculate a parity check matrix or a generator matrix from the indicated bipartite graph and lifting matrix. Such embodiments may for instance be applicable to a Low-Density Parity Check (LDPC) code, e.g., for 5G NR.

[0037] In yet other embodiments, the algorithm 20A indicated may be for how to build or derive the mathematical or graphical representation 20R of the error correcting code 20, e.g., according to one or more rules. Where the mathematical or graphical representation 20R is a matrix, for example, the algorithm 20A may indicate that one or more specified positions in the matrix are to have non-zero values and that the rest of the positions in the matrix are to have zero values. The algorithm 20A may accordingly be to build the matrix by populating specified position(s) with non-zero values (e.g., “1”) and by populating any remaining positions with zero values. As such, the one or more values 20N indicated in the code definition 20D may include value(s) that index the specified position(s) in the matrix which are to have non-zero values, e.g., may include only the indices of the non-zero elements of the matrix. As an example, some embodiments define a parity check matrix by means of a base graph where the non-zero values are integers that specify the shift of the lifting matrices. Here, the algorithm 20A indicates how to interpret the shifts of the lifting matrices and returns the actual lifting matrices that will be components of the final parity check matrix.

[0038] In still other embodiments, the algorithm 20A indicated may take the form of a table (e.g., a look-up table) from which to calculate the mathematical or graphical representation 20R of the error correcting code 20. In this case, the table may map different indices to mathematical or graphical representations of different possible error correcting codes, including the new error correcting code 20. The different possible error correcting codes may be derived from the same basic structure, or not. The one or more values 20N indicated in the code definition 20D may therefore include a certain index into the table, e.g., as part of indicating that this index is mapped to the error correcting code 20. Note here that these embodiments differ from existing approaches that preconfigure a table at a communication node (e.g., at the time of manufacture, not via signaling), and that simply signal the index of whichever code is to be used. Indeed, in these existing approaches, the table as preconfigured is fixed with an unchangeable set of codes. Here, rather than preconfiguring the table and using signaling to indicate which index into the table corresponds to the code to be used, embodiments enable signaling the table itself, so that the table is able to be updated as needed with new error correcting code(s).

[0039] As these embodiments demonstrate, then, the code definition 20D in some embodiments provides a generic framework within which any of multiple types of error correcting codes are definable. This generic framework advantageously avoids limiting the types of error correcting codes that are definable and usable over time, as new codes, use cases, and error environments arise, e.g., even within a given communications standard cycle. Some embodiments may thereby allow for completely new constructions of error correcting codes, e.g., tailored to new use cases.

[0040] No matter the particular form of the code definition 20D, some embodiments improve reliable delivery of the code definition 20D by encoding the code definition 20D itself with an error correcting code. In some embodiments, for example, communication node 12-1 transmits the code definition 20D using a previously defined error correcting code, shown as code C-1 in the example of Figure 1 . This previously defined error correcting code is a code whose definition communication node 12-2 has received before receiving the code definition 20D for the new error correcting code 20. In fact, in some embodiments, any error correcting code that is defined via a received code definition may thereafter be used for error correction encoding of yet another new error correcting code. So, after having received the code definition 20D for the new error correcting code 20 in Figure 1 , that error correcting code 20 may thereafter be used to error correction encode yet another new error correcting code.

[0041] Other embodiments equip communication nodes 12-1 , 12-2 with a so-called bootstrap error correcting code, e.g., by preconfiguring communication nodes 12-1 , 12-2 with such a bootstrap code. The bootstrap code is a code configured as usable for bootstrapping one or more other error correcting codes via code definition(s). The bootstrap error correcting code may thereby be an a-priori known code. In one embodiment, the bootstrap code is defined according to a certain generation of a communications standard, such as a 5G New Radio (NR) code. Or, the bootstrap code may be a random linear code generated according to a procedure that is standardized according to a certain generation of a communications standard. In still other embodiments, the bootstrap code is otherwise agreed to before communication between the communication nodes 12-1 , 12-2. As such, the bootstrap code could be decoded with a specific decoder tailored to the bootstrap code, e.g., using an accelerator. The bootstrap code may be either dedicated for bootstrapping other error correcting code(s), or may be generally usable for any transmission, e.g., even for a data transmission. Regardless, after bootstrapping a new error correcting code using the bootstrapping code, the new error correcting code in some embodiments may thereafter be used in place of the bootstrap code, for subsequently defining still other new error correcting code(s).

[0042] In any event, the code representation 20R obtained by communication node 12-2 from the code definition 20D may or may not itself be in a form for using the error correcting code 22. For example, in embodiments where the code representation 20R is a parity check matrix for a block code, communication node 12-2 may generate a corresponding generator matrix for use in encoding data 18 using the error correcting code 20. Or, communication node 12-2 may directly encode data 18 for transmission from the parity check matrix and / or decode received data 18 using the parity check matrix, e.g., according to some local procedure. As another example, in embodiments where the code representation 20R is a generator matrix for a block code, communication node 12-2 may generate a corresponding parity check matrix for use in directly encoding data 18 for transmission using the error correcting code 20 and / or for use in decoding received data 18. Or, communication node 12- 2 may just encode data 18 from the generator matrix. As still another example, the code representation 20R may include both the parity check matrix and the generator matrix.

[0043] Before actually using the error correcting code 20 for transmitting or receiving data 18 in some embodiments, though, communication node 12-2 may first validate the code representation 20R. Such validation may operate to validate that the code representation 20R was obtained correctly. Validation of the code representation 20R may for example be accomplished by validating that the received and decoded code definition is the same as the transmitted code definition. This sort of validation may be handled by a communications protocol stack of communication node 12-2, e.g., by a layer of the protocol stack at which the code definition is communicated or by a layer higher than the protocol stack at which the code definition is communicated. Such protocol stack validation may for example be realized as part of error detection / correction procedures and / or acknowledgement procedures of the protocol stack layer.

[0044] Alternatively or additionally, validation of the code representation 20R may operate to validate that the code representation 20R is usable for accurate error correction. This sort of validation may be realized for example by validating encoding and / or decoding of one or more test messages exchanged between the communication nodes 12-1 , 12-2. Figure 3 shows one example.

[0045] As shown in Figure 3, communication node 12-1 in some embodiments transmits a test message 32-1 to communication node 12-2, e.g., at the same time as transmitting the code definition 20D. This test message 32-1 may convey information that is known or deterministic to communication node 12-2, e.g., the test message 32-1 may convey all 1’s. The test message 32-1 has been encoded by communication node 12-1 using the new error correcting code 20 defined by the code definition 20D. To validate the code representation 20R obtained from the code definition 20D for the new error correcting code 20, communication node 12-2 attempts to decode the test message 32-1 using the new error correcting code 20 as represented by the obtained code representation 20R. The decoding succeeds if the information conveyed by the decoded message matches the known or deterministic information conveyed by the test message 32-1 .

[0046] Alternatively or additionally, communication node 12-2 in some embodiments itself transmits a test message 32-2 to communication node 12-1 , e.g., after receiving the code definition 20D. This test message 32-2 may similarly convey information that is known or deterministic to communication node 12-1 , e.g., the test message 32-2 may convey all 1’s. The test message 32-2 has been encoded by communication node 12-2 using the new error correcting code 20 defined by the code definition 20D received. To validate the code representation 20R obtained from the code definition 20D for the new error correcting code 20, communication node 12-1 attempts to decode the test message 32-2 using the new error correcting code 20 as represented by the obtained code representation 20R. The decoding succeeds if the information conveyed by the decoded message matches the known or deterministic information conveyed by the test message 32-2.

[0047] Validation of the code representation 20R in these embodiments may succeed if decoding of test message 32-1 succeeds and / or if decoding of test message 32-2 succeeds. Of course, although illustrated with a single test message 32-1 to communication node 12-2 and a single test message 32-2 from communication node 12-2, validation of the code representation 20R in other embodiments may require validation of multiple test messages in one or both directions.

[0048] If validation of the code representation 20R succeeds, communication node 12-2 may proceed with using the new error correcting code 20 for transmitting and / or receiving data 18. If validation of the code representation 20R vails, though, communication node 12-2 may refrain from using the new error correcting code 20 for transmitting and / or receiving data 18. Communication node 12-2 in this case may also send a notification to communication node 12-1 indicating failed validation of the code representation 20R. Figure 4 shows one example that exploits a bootstrap code and code representation validation. As shown, communication node 12-2 encodes a code definition 20D for an error correcting code 20 using a bootstrap code and transmits that encoded code definition to communication node 12-2 (Step 1). Communication node 12-2 encodes validation information (e.g., in the form of a test message) using the error correcting code defined by the received code definition 20D and transmits that encoded validation information to communication node 12-2 (Step 2). If validation succeeds, communication node 12-1 proceeds to use that error correcting code by encoding data into codewords using the error correcting code, and transmitted the codewords to communication node 12-2 (Step 3).

[0049] At some point thereafter, a new error correcting code may be defined and used. As shown, communication node 12-2 encodes a new code definition 20D for a new error correcting code 20 using a bootstrap code and transmits that encoded new code definition to communication node 12-2 (Step 4). Communication node 12-2 encodes validation information (e.g., in the form of a test message) using the new error correcting code defined by the new code definition 20D and transmits that encoded validation information to communication node 12-2 (Step 5). If validation succeeds, communication node 12-1 proceeds to use that new error correcting code by encoding data into codewords using the new error correcting code, and transmitted the codewords to communication node 12-2 (Step 6).

[0050] Figure 5 illustrates structural details of communication nodes 12-1 , 12-2 according to some embodiments. As shown, a code selector 24C at communication node 12-1 selects which error correcting code an encoder 24E is to use for encoding data or for encoding a code definition 20D. The code selector 24C may for instance choose between a bootstrap code C-B and one or more codes generated by a code generator 24G, e.g., where the code generator 24G may generate any code defined by a code definition 20D. The encoder 24E at communication node 12-1 correspondingly encodes data 18 or a code definition 20D using the code selected by the code selector 24C.

[0051] A decoder 26D at communication node 12-2 receives data or a code definition 20D and decodes it according to an agreed-upon error correcting code. When receiving a code definition 20D, an encoder 26E at communication node 12-2 encodes validation information (e.g., a test message) using the representation of the error correcting code defined and transmits the encoded validation information to a code validator 24V at communication node 12-1 . The code validator 24V validates whether or not the encoded validation information matches the expected validation information given the code definition 20D transmitted and / or whether validation information as decoded matches the expected validation information given the code definition 20D. To use the new error correcting code 20 for transmitting data 18, communication node 12-2 in some embodiments encodes the data 18 according to the error correcting code 20 to obtain one or more codewords of the error correcting code 20. Communication node 12-2 may then transmit the one or more codewords obtained. Alternatively or additionally, to use the new error correcting code 20 for receiving data 18, communication node 12-2 in some embodiments receives one or more codewords of the error correcting code 20 and decodes the one or more received codewords according to the error correcting code 20, in order to recover the data 18.

[0052] Note that the code definition 20D in some embodiments may indicate a limit on for how long and / or for how much data the error correcting code is to be used. For example, the code definition 20D may indicate this limit in terms of a maximum number of codewords or transport blocks with which the new error correcting code 20 is to be used, e.g., before the error correcting code used is updated. The limit in this and other cases may effectively specify a usage pattern for the error correcting code 20. Communication node 12-2 in such a case may transmit and / or receive data 18 using the error correcting code 20 in accordance with the indicated limit. In these and other embodiments, then, new error correcting codes may be occasionally or periodically defined via signaled code definitions, e.g., as needed to abide by limits on for how long and / or for how much data each error correcting code is allowed to be used. In one such embodiment, some embodiments enable different error correcting codes or codebooks to be used with a flexible update frequency.

[0053] Note that the error correcting code 20 may be usable for transmitting and / or receiving any type of data 18 over any type of channel. In fact, in some embodiments, the error correcting code 20 is usable for transmitting and / or receiving control data over a control channel as well as for transmitting and / or receiving user data over a data channel. In embodiments where a code definition 20D provides a generic framework for defining any error correcting code, then, this means that some embodiments enable both control data and user data can be encoded with any arbitrary error correcting code of choice whose specifics are communicated via a code definition in advance, e.g., communicated via a code definition 20D conveyed over a control channel as time progresses.

[0054] In other embodiments, though, the error correcting code 20 is usable for transmitting and / or receiving data 18 over one or more specific types of channels. For example, the error correcting code 20 may be usable for transmitting and / or receiving control data over a control channel, but is not usable for transmitting and / or receiving user data over a data channel. Alternatively, the error correcting code 20 may be usable for transmitting and / or receiving user data over a data channel, but is not usable for transmitting and / or receiving control data over a control channel. In fact, in some embodiments, the entire set 16 or codebook of error correcting codes for a data channel may be fixed, so as not to be updateable. Generally, then, error correcting code(s) usable for one channel may be updateable or adaptable while the error correcting code(s) usable for another channel may not be updateable or adaptable. Accordingly, in these and other embodiments, different channels may use different error correcting codes at the same or different times.

[0055] In other embodiments, though, the set or codebook of error correcting codes usable for user data on a data channel is fixed, but the set or codebook of error correcting codes usable for control data on a control channel is flexible such that new error correcting codes can be added. In this case, then, new error correcting code(s)

[0056] Alternatively or additionally, the error correcting code 20 may be commonly usable for communicating data 18 in a downlink direction to a communication device 12A as well as for communicating data 18 in an uplink direction to a network node 12B. In other embodiments, though, the error correcting code 20 may be dedicated for communicating data 18 in a downlink direction to a communication device 12A or for communicating data 18 in an uplink direction to a network node 12B, but not both.

[0057] In either case, though, in some embodiments, which error correcting code(s) are usable for a downlink transmission may differ, at least in part, from which error correcting code(s) are usable for an uplink transmission. These embodiments may thereby allow different error correcting codes for downlink and uplink transmissions. A code definition 20D for a new error correcting code 20 may thereby be either an uplink code definition that defines the error correcting code 20 as usable for uplink or a downlink code definition that defines the error correcting code 20 as usable for downlink. In some embodiments, though, an uplink code definition and a downlink code definition may be combined into one so as to define both one error correcting code for uplink and another error correcting code for downlink.

[0058] Some embodiments accordingly allow for error correction coding that is asymmetric as between the downlink and uplink, in terms of the types and / or complexity of codes that are usable. In fact, some embodiments exploit this asymmetry to shift complexity from communication devices 12Ato network nodes 12B. For example, some embodiments employ a type of error correcting code that is relatively less complex for a communication device 12A (e.g., an ambient Internet-of-Things, loT, device) to encode for transmitting uplink data but is relatively more complex for a network node 12B to decode for receiving that uplink data. Alternatively or additionally, some embodiments employ a type of error correcting code that is relatively less complex for a communication device 12A (e.g., an ambient loT device) to decode for receiving downlink data but is relatively more complex for a network node 12B to encode for transmitting that uplink data.

[0059] Note further that although embodiments herein have been illustrated with communication node 12-1 transmitting a code definition 20D to communication node 12-2, and then communication node 12-2 using the newly defined error correcting code 20 to transmit and / or receive data 18, embodiments herein are alternatively or additionally applicable in the other direction. That is, in other embodiments, communication node 12-2 transmits a code definition 20D to communication node 12-1 , and then communication node 12-1 uses the newly defined error correcting code 20 to transmit and / or receive data 18.

[0060] Note as well that although some embodiments have been illustrated with respect to linear block codes, embodiments herein also apply to non-linear block codes. Indeed, while many block codes are defined using generator matrices and parity check matrices within a linear algebraic framework, there exist non-linear block codes and advanced coding techniques that operate outside this framework. These non-linear block codes leverage polynomial arithmetic, iterative decoding methods, or irregular graph-based structures to achieve efficient error correction capabilities without strict reliance on parity check matrices. As such, block codes encompass a diverse range of coding techniques beyond the conventional linear block coding paradigm, and a code definition 20D herein may define any such block code.

[0061] In view of the modifications and variations herein, Figure 6 depicts a method performed by a first communication node 12-1 in accordance with particular embodiments. The method includes transmitting to a second communication node 12-2, or receiving from the second communication node 12-2, a code definition 20D for an error correcting code 20 (Block 600). In some embodiments, the code definition 20D explicitly indicates one or more values 20V of a mathematical or graphical representation 20R of the error correcting code 20. In other embodiments, the code definition 20D indicates an algorithm 20A for how to calculate a mathematical or graphical representation 20R of the error correcting code 20, and indicates one or more values 20N of one or more inputs to that algorithm 20A. The method also comprises, after transmitting or receiving the code definition 20D, transmitting and / or receiving data 18 to and / or from the second communication node 12-2 using the error correcting code 20 (Block 610).

[0062] In some embodiments, the code definition 20D explicitly indicates one or more values 20V of the mathematical or graphical representation 20R of the error correcting code 20.

[0063] In some embodiments, the code definition 20D indicates the algorithm 20A by indicating a table from which to calculate the mathematical or graphical representation 20R of the error correcting code 20. In some embodiments, the table maps different indices to mathematical or graphical representations 20R of different possible error correcting codes 20, and the code definition 20D indicates the one or more values 20N of the one or more inputs to the algorithm 20A by indicating a certain index into the table.

[0064] In some embodiments, the code definition 20D indicates the algorithm 20A by indicating a pseudo-random function from which to calculate the mathematical or graphical representation 20R of the error correcting code 20 and indicates the one or more values 20N of the one or more inputs to the algorithm 20A by indicating a seed value of the pseudorandom function.

[0065] In some embodiments, the code definition 20D indicates the algorithm 20A by indicating that the mathematical or graphical representation 20R of the error correcting code 20 is to be calculated from a base bipartite graph and a lifting matrix. In some embodiments, the code definition 20D indicates the one or more values 20N of the one or more inputs to the algorithm 20A by indicating one or more values of the base bipartite graph, wherein the base bipartite graph graphically represents a component error correcting code, and indicating one or more values of the lifting matrix, wherein the lifting matrix is configured to transform the base bipartite graph.

[0066] In some embodiments, the mathematical or graphical representation 20R of the error correcting code 20 comprises a matrix. In some embodiments, the matrix is a parity check matrix whose rows are orthogonal to codewords of the error correcting code 20. In other embodiments, the matrix is a generator matrix whose rows correspond to respective codewords of the error correcting code 20. In some embodiments, the code definition 20D explicitly indicates one or more values of the matrix. In some embodiments, the code definition 20D indicates the algorithm 20A by indicating that one or more specified positions in the matrix are to have non-zero values and that the rest of the positions in the matrix are to have zero values, and wherein the code definition 20D indicates the one or more values 20N of the one or more inputs to the algorithm 20A by indicating one or more values that index the one or more specified positions in the matrix which are to have non-zero values.

[0067] In some embodiments, the mathematical or graphical representation 20R of the error correcting code 20 comprises a polynomial which represents the error correcting code 20 over a finite field.

[0068] In some embodiments, the mathematical or graphical representation 20R of the error correcting code 20 comprises a bipartite graph which graphically represents the error correcting code 20. In other embodiments, the mathematical or graphical representation 20R of the error correcting code 20 comprises a trellis diagram, a state diagram, or a finite state machine.

[0069] In some embodiments, the error correcting code 20 is a block code or a convolutional code.

[0070] In some embodiments, transmitting or receiving the code definition 20D comprises transmitting or receiving the code definition 20D using a bootstrap error correcting code with which the first communication node 12-1 is preconfigured. In other embodiments, transmitting or receiving the code definition 20D comprises transmitting or receiving the code definition 20D using a previously defined error correcting code C-1 ...C-N whose code definition 20D the first communication node 12-1 received before transmitting or receiving the code definition 20D for the error correcting code 20.

[0071] In some embodiments, the method further comprises, before transmitting or receiving the data 18 using the error correcting code 20, validating the mathematical or graphical representation 20R of the error correcting code 20, e.g., by validating encoding and / or decoding of one or more test messages exchanged between the first and second communication nodes 12-1 , 12-2 (Block 620).

[0072] In some embodiments, the error correcting code 20 is to be used for uplink data, wherein the data 18 is uplink data. In some embodiments, the method further comprises transmitting to the second communication node 12-2, or receiving from the second communication node 12-2, a downlink code definition 20D for a downlink error correcting code. In some embodiments, the downlink code definition 20D explicitly indicates one or more values 20V of a mathematical or graphical representation 20R of the downlink error correcting code. In other embodiments, the downlink code definition 20D indicates an algorithm 20Afor how to calculate a mathematical or graphical representation 20R of the downlink error correcting code, and indicates one or more values 20N of one or more inputs to that algorithm 20A. In some embodiments, the method further comprises, after transmitting or receiving the downlink code definition 20D, transmitting or receiving downlink data to or from the second communication node 12-2 using the downlink error correcting code.

[0073] In some embodiments, one of the first and second communication nodes 12-1 , 12-2 is a communication device and the other of the first and second communication nodes 12-1 , 12-2 is a network node of a communication network.

[0074] In some embodiments, transmitting and / or receiving data 18 using the error correcting code 20 comprises encoding data 18 according to the error correcting code 20 to obtain one or more codewords of the error correcting code 20 and transmitting the one or more codewords. In other embodiments, transmitting and / or receiving data 18 using the error correcting code 20 comprises alternatively or additionally receiving one or more codewords of the error correcting code 20 and decoding the one or more received codewords according to the error correcting code 20 in order to recover data 18.

[0075] Embodiments herein also include corresponding apparatuses. Embodiments herein for instance include a communication node 12 configured to perform any of the steps of any of the embodiments described above for communication node 12-1 or 12-2.

[0076] Embodiments also include a communication node 12 comprising processing circuitry and power supply circuitry. The processing circuitry is configured to perform any of the steps of any of the embodiments described above for the communication node 12-1 or 12-2. The power supply circuitry is configured to supply power to the communication node 12. Embodiments further include a communication node 12 comprising processing circuitry. The processing circuitry is configured to perform any of the steps of any of the embodiments described above for the communication node 12-1 or 12-2. In some embodiments, the communication node 12 further comprises communication circuitry.

[0077] Embodiments further include a communication node 12 comprising processing circuitry and memory. The memory contains instructions executable by the processing circuitry whereby the communication node 12 is configured to perform any of the steps of any of the embodiments described above for the communication node 12-1 or 12-2.

[0078] Embodiments moreover include a user equipment (UE). The UE comprises an antenna configured to send and receive wireless signals. The UE also comprises radio frontend circuitry connected to the antenna and to processing circuitry, and configured to condition signals communicated between the antenna and the processing circuitry. The processing circuitry is configured to perform any of the steps of any of the embodiments described above for the communication node 12-1 or 12-2. In some embodiments, the UE also comprises an input interface connected to the processing circuitry and configured to allow input of information into the UE to be processed by the processing circuitry. The UE may comprise an output interface connected to the processing circuitry and configured to output information from the UE that has been processed by the processing circuitry. The UE may also comprise a battery connected to the processing circuitry and configured to supply power to the UE.

[0079] More particularly, the apparatuses described above may perform the methods herein and any other processing by implementing any functional means, modules, units, or circuitry. In one embodiment, for example, the apparatuses comprise respective circuits or circuitry configured to perform the steps shown in the method figures. The circuits or circuitry in this regard may comprise circuits dedicated to performing certain functional processing and / or one or more microprocessors in conjunction with memory. For instance, the circuitry may include one or more microprocessor or microcontrollers, as well as other digital hardware, which may include digital signal processors (DSPs), special-purpose digital logic, and the like. The processing circuitry may be configured to execute program code stored in memory, which may include one or several types of memory such as read-only memory (ROM), random-access memory, cache memory, flash memory devices, optical storage devices, etc. Program code stored in memory may include program instructions for executing one or more telecommunications and / or data communications protocols as well as instructions for carrying out one or more of the techniques described herein, in several embodiments. In embodiments that employ memory, the memory stores program code that, when executed by the one or more processors, carries out the techniques described herein. Figure 7 for example illustrates a communication node 12 as implemented in accordance with one or more embodiments, e.g., as communication node 12-1 or communication node 12-2 described herein. As shown, the communication node 12 includes processing circuitry 710 and communication circuitry 720. The communication circuitry 720 (e.g., radio circuitry) is configured to transmit and / or receive information to and / or from one or more other nodes, e.g., via any communication technology. Such communication may for example occur via one or more antennas that are either internal or external to the communication node 12. The processing circuitry 710 is configured to perform processing described above, e.g., in Figure 6, such as by executing instructions stored in memory 730. The processing circuitry 710 in this regard may implement certain functional means, units, or modules.

[0080] Those skilled in the art will also appreciate that embodiments herein further include corresponding computer programs.

[0081] A computer program comprises instructions which, when executed on at least one processor of a communication node 12, cause the a communication node 12 to carry out any of the respective processing described above. A computer program in this regard may comprise one or more code modules corresponding to the means or units described above.

[0082] Embodiments further include a carrier containing such a computer program. This carrier may comprise one of an electronic signal, optical signal, radio signal, or computer readable storage medium.

[0083] In this regard, embodiments herein also include a computer program product stored on a non-transitory computer readable (storage or recording) medium and comprising instructions that, when executed by a processor of a communication node 12, cause the communication node 12 to perform as described above.

[0084] Embodiments further include a computer program product comprising program code portions for performing the steps of any of the embodiments herein when the computer program product is executed by a communication node 12. This computer program product may be stored on a computer readable recording medium.

[0085] Figure 8 shows an example of a communication system 800 in accordance with some embodiments.

[0086] In the example, the communication system 800 includes a telecommunication network 802 that includes an access network 804, such as a radio access network (RAN), and a core network 806, which includes one or more core network nodes 808. The access network 804 includes one or more access network nodes, such as network nodes 810a and 810b (one or more of which may be generally referred to as network nodes 810), or any other similar 3rdGeneration Partnership Project (3GPP) access nodes or non-3GPP access points. Moreover, as will be appreciated by those of skill in the art, a network node is not necessarily limited to an implementation in which a radio portion and a baseband portion are supplied and integrated by a single vendor. Thus, it will be understood that network nodes include disaggregated implementations or portions thereof. For example, in some embodiments, the telecommunication network 802 includes one or more Open-RAN (ORAN) network nodes. An ORAN network node is a node in the telecommunication network 802 that supports an ORAN specification (e.g., a specification published by the O-RAN Alliance, or any similar organization) and may operate alone or together with other nodes to implement one or more functionalities of any node in the telecommunication network 802, including one or more network nodes 810 and / or core network nodes 808.

[0087] Examples of an ORAN network node include an open radio unit (O-RU), an open distributed unit (O-DU), an open central unit (O-CU), including an O-CU control plane (O- CU-CP) or an O-CU user plane (O-CU-UP), a RAN intelligent controller (near-real time or non-real time) hosting software or software plug-ins, such as a near-real time control application (e.g., xApp) or a non-real time control application (e.g., rApp), or any combination thereof (the adjective “open” designating support of an ORAN specification). The network node may support a specification by, for example, supporting an interface defined by the ORAN specification, such as an A1 , F1 , W1 , E1 , E2, X2, Xn interface, an open fronthaul user plane interface, or an open fronthaul management plane interface. Moreover, an ORAN access node may be a logical node in a physical node. Furthermore, an ORAN network node may be implemented in a virtualization environment (described further below) in which one or more network functions are virtualized. For example, the virtualization environment may include an O-Cloud computing platform orchestrated by a Service Management and Orchestration Framework via an O-2 interface defined by the O-RAN Alliance or comparable technologies. The network nodes 810 facilitate direct or indirect connection of user equipment (UE), such as by connecting UEs 812a, 812b, 812c, and 812d (one or more of which may be generally referred to as UEs 812) to the core network 806 over one or more wireless connections.

[0088] Example wireless communications over a wireless connection include transmitting and / or receiving wireless signals using electromagnetic waves, radio waves, infrared waves, and / or other types of signals suitable for conveying information without the use of wires, cables, or other material conductors. Moreover, in different embodiments, the communication system 800 may include any number of wired or wireless networks, network nodes, UEs, and / or any other components or systems that may facilitate or participate in the communication of data and / or signals whether via wired or wireless connections. The communication system 800 may include and / or interface with any type of communication, telecommunication, data, cellular, radio network, and / or other similar type of system. The UEs 812 may be any of a wide variety of communication devices, including wireless devices arranged, configured, and / or operable to communicate wirelessly with the network nodes 810 and other communication devices. Similarly, the network nodes 810 are arranged, capable, configured, and / or operable to communicate directly or indirectly with the UEs 812 and / or with other network nodes or equipment in the telecommunication network 802 to enable and / or provide network access, such as wireless network access, and / or to perform other functions, such as administration in the telecommunication network 802.

[0089] In the depicted example, the core network 806 connects the network nodes 810 to one or more host computing systems, such as host 816. These connections may be direct or indirect via one or more intermediary networks or devices. In other examples, network nodes may be directly coupled to hosts. The core network 806 includes one more core network nodes (e.g., core network node 808) that are structured with hardware and software components. Features of these components may be substantially similar to those described with respect to the UEs, network nodes, and / or hosts, such that the descriptions thereof are generally applicable to the corresponding components of the core network node 808. Example core network nodes include functions of one or more of a Mobile Switching Center (MSC), Mobility Management Entity (MME), Home Subscriber Server (HSS), Access and Mobility Management Function (AMF), Session Management Function (SMF), Authentication Server Function (AUSF), Subscription Identifier De-concealing function (SIDF), Unified Data Management (UDM), Security Edge Protection Proxy (SEPP), Network Exposure Function (NEF), and / or a User Plane Function (UPF).

[0090] The host 816 may be under the ownership or control of a service provider other than an operator or provider of the access network 804 and / or the telecommunication network 802. The host 816 may host a variety of applications to provide one or more service. Examples of such applications include live and pre-recorded audio / video content, data collection services such as retrieving and compiling data on various ambient conditions detected by a plurality of UEs, analytics functionality, social media, functions for controlling or otherwise interacting with remote devices, functions for an alarm and surveillance center, or any other such function performed by a server.

[0091] As a whole, the communication system 800 of Figure 8 enables connectivity between the UEs, network nodes, and hosts. In that sense, the communication system may be configured to operate according to predefined rules or procedures, such as specific standards that include, but are not limited to: Global System for Mobile Communications (GSM); Universal Mobile Telecommunications System (UMTS); Long Term Evolution (LTE), and / or other suitable 2G, 3G, 4G, 5G standards, or any applicable future generation standard (e.g., 6G); wireless local area network (WLAN) standards, such as the Institute of Electrical and Electronics Engineers (IEEE) 802.11 standards (WiFi); and / or any other appropriate wireless communication standard, such as the Worldwide Interoperability for Microwave Access (WiMax), Bluetooth, Z-Wave, Near Field Communication (NFC) ZigBee, LiFi, and / or any low-power wide-area network (LPWAN) standards such as LoRa and Sigfox.

[0092] In some examples, the telecommunication network 802 is a cellular network that implements 3GPP standardized features. Accordingly, the telecommunications network 802 may support network slicing to provide different logical networks to different devices that are connected to the telecommunication network 802. For example, the telecommunications network 802 may provide Ultra Reliable Low Latency Communication (URLLC) services to some UEs, while providing Enhanced Mobile Broadband (eMBB) services to other UEs, and / or Massive Machine Type Communication (mMTC)ZMassive loT services to yet further UEs.

[0093] In some examples, the UEs 812 are configured to transmit and / or receive information without direct human interaction. For instance, a UE may be designed to transmit information to the access network 804 on a predetermined schedule, when triggered by an internal or external event, or in response to requests from the access network 804. Additionally, a UE may be configured for operating in single- or multi-RAT or multi-standard mode. For example, a UE may operate with any one or combination of Wi-Fi, NR (New Radio) and LTE, i.e. being configured for multi-radio dual connectivity (MR-DC), such as E-UTRAN (Evolved- UMTS Terrestrial Radio Access Network) New Radio - Dual Connectivity (EN-DC).

[0094] In the example, the hub 814 communicates with the access network 804 to facilitate indirect communication between one or more UEs (e.g., UE 812c and / or 812d) and network nodes (e.g., network node 810b). In some examples, the hub 814 may be a controller, router, content source and analytics, or any of the other communication devices described herein regarding UEs. For example, the hub 814 may be a broadband router enabling access to the core network 806 for the UEs. As another example, the hub 814 may be a controller that sends commands or instructions to one or more actuators in the UEs. Commands or instructions may be received from the UEs, network nodes 810, or by executable code, script, process, or other instructions in the hub 814. As another example, the hub 814 may be a data collector that acts as temporary storage for UE data and, in some embodiments, may perform analysis or other processing of the data. As another example, the hub 814 may be a content source. For example, for a UE that is a VR device, display, loudspeaker, or other media delivery device, the hub 814 may retrieve VR assets, video, audio, or other media or data related to sensory information via a network node, which the hub 814 then provides to the UE either directly, after performing local processing, and / or after adding additional local content. In still another example, the hub 814 acts as a proxy server or orchestrator for the UEs, in particular if one or more of the UEs are low energy loT devices. The hub 814 may have a constant / persistent or intermittent connection to the network node 810b. The hub 814 may also allow for a different communication scheme and / or schedule between the hub 814 and UEs (e.g., UE 812c and / or 812d), and between the hub 814 and the core network 806. In other examples, the hub 814 is connected to the core network 806 and / or one or more UEs via a wired connection. Moreover, the hub 814 may be configured to connect to an M2M service provider over the access network 804 and / or to another UE over a direct connection. In some scenarios, UEs may establish a wireless connection with the network nodes 810 while still connected via the hub 814 via a wired or wireless connection. In some embodiments, the hub 814 may be a dedicated hub - that is, a hub whose primary function is to route communications to / from the UEs from / to the network node 810b. In other embodiments, the hub 814 may be a non-dedicated hub - that is, a device which is capable of operating to route communications between the UEs and network node 810b, but which is additionally capable of operating as a communication start and / or end point for certain data channels.

[0095] Figure 9 shows a UE 900 in accordance with some embodiments. The UE 900 presents additional details of some embodiments of the UE 812 of Figure 1. As used herein, a UE refers to a device capable, configured, arranged and / or operable to communicate wirelessly with network nodes and / or other UEs. Examples of a UE include, but are not limited to, a smart phone, mobile phone, cell phone, voice over IP (VoIP) phone, wireless local loop phone, desktop computer, personal digital assistant (PDA), wireless cameras, gaming console or device, music storage / playback device, wearable terminal device, wireless endpoint, mobile station, tablet, laptop, laptop-embedded equipment (LEE), laptopmounted equipment (LME), an Augmented Reality (AR) or Virtual Reality (VR) device, wireless customer-premise equipment (CPE), vehicle, vehicle-mounted or vehicle embedded / integrated wireless device, etc. Other examples include any UE identified by the 3rd Generation Partnership Project (3GPP), including a narrow band internet of things (NB- loT) UE, a machine type communication (MTC) UE, and / or an enhanced MTC (eMTC) UE.

[0096] A UE may support device-to-device (D2D) communication, for example by implementing a 3GPP standard for sidelink communication, Dedicated Short-Range Communication (DSRC), vehicle-to-vehicle (V2V), vehicle-to-infrastructure (V2I), or vehicle- to-everything (V2X). In other examples, a UE may not necessarily have a user in the sense of a human user who owns and / or operates the relevant device. Instead, a UE may represent a device that is intended for sale to, or operation by, a human user but which may not, or which may not initially, be associated with a specific human user (e.g., a smart sprinkler controller). Alternatively, a UE may represent a device that is not intended for sale to, or operation by, an end user but which may be associated with or operated for the benefit of a user (e.g., a smart power meter). The UE 900 includes processing circuitry 902 that is operatively coupled via a bus 904 to an input / output interface 906, a power source 908, a memory 910, a communication interface 912, and / or any other component, or any combination thereof. Certain UEs may utilize all or a subset of the components shown in Figure 9. The level of integration between the components may vary from one UE to another UE. Further, certain UEs may contain multiple instances of a component, such as multiple processors, memories, transceivers, transmitters, receivers, etc.

[0097] The processing circuitry 902 is configured to process instructions and data and may be configured to implement any sequential state machine operative to execute instructions stored as machine-readable computer programs in the memory 910. The processing circuitry 902 may be implemented as one or more hardware-implemented state machines (e.g., in discrete logic, field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), etc.); programmable logic together with appropriate firmware; one or more stored computer programs, general-purpose processors, such as a microprocessor or digital signal processor (DSP), together with appropriate software; or any combination of the above. For example, the processing circuitry 902 may include multiple central processing units (CPUs).

[0098] In the example, the input / output interface 906 may be configured to provide an interface or interfaces to an input device, output device, or one or more input and / or output devices. Examples of an output device include a speaker, a sound card, a video card, a display, a monitor, a printer, an actuator, an emitter, a smartcard, another output device, or any combination thereof. An input device may allow a user to capture information into the UE 900. Examples of an input device include a touch-sensitive or presence-sensitive display, a camera (e.g., a digital camera, a digital video camera, a web camera, etc.), a microphone, a sensor, a mouse, a trackball, a directional pad, a trackpad, a scroll wheel, a smartcard, and the like. The presence-sensitive display may include a capacitive or resistive touch sensor to sense input from a user. A sensor may be, for instance, an accelerometer, a gyroscope, a tilt sensor, a force sensor, a magnetometer, an optical sensor, a proximity sensor, a biometric sensor, etc., or any combination thereof. An output device may use the same type of interface port as an input device. For example, a Universal Serial Bus (USB) port may be used to provide an input device and an output device.

[0099] In some embodiments, the power source 908 is structured as a battery or battery pack. Other types of power sources, such as an external power source (e.g., an electricity outlet), photovoltaic device, or power cell, may be used. The power source 908 may further include power circuitry for delivering power from the power source 908 itself, and / or an external power source, to the various parts of the UE 900 via input circuitry or an interface such as an electrical power cable. Delivering power may be, for example, for charging of the power source 908. Power circuitry may perform any formatting, converting, or other modification to the power from the power source 908 to make the power suitable for the respective components of the UE 900 to which power is supplied.

[0100] The memory 910 may be or be configured to include memory such as random access memory (RAM), read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic disks, optical disks, hard disks, removable cartridges, flash drives, and so forth. In one example, the memory 910 includes one or more application programs 914, such as an operating system, web browser application, a widget, gadget engine, or other application, and corresponding data 916. The memory 910 may store, for use by the UE 900, any of a variety of various operating systems or combinations of operating systems.

[0101] The memory 910 may be configured to include a number of physical drive units, such as redundant array of independent disks (RAID), flash memory, USB flash drive, external hard disk drive, thumb drive, pen drive, key drive, high-density digital versatile disc (HD- DVD) optical disc drive, internal hard disk drive, Blu-Ray optical disc drive, holographic digital data storage (HDDS) optical disc drive, external mini-dual in-line memory module (DIMM), synchronous dynamic random access memory (SDRAM), external micro-DIMM SDRAM, smartcard memory such as tamper resistant module in the form of a universal integrated circuit card (UICC) including one or more subscriber identity modules (SIMs), such as a USIM and / or ISIM, other memory, or any combination thereof. The UICC may for example be an embedded UICC (eUlCC), integrated UICC (iUICC) or a removable UICC commonly known as ‘SIM card.’ The memory 910 may allow the UE 900 to access instructions, application programs and the like, stored on transitory or non-transitory memory media, to off-load data, or to upload data. An article of manufacture, such as one utilizing a communication system may be tangibly embodied as or in the memory 910, which may be or comprise a device-readable storage medium.

[0102] The processing circuitry 902 may be configured to communicate with an access network or other network using the communication interface 912. The communication interface 912 may comprise one or more communication subsystems and may include or be communicatively coupled to an antenna 922. The communication interface 912 may include one or more transceivers used to communicate, such as by communicating with one or more remote transceivers of another device capable of wireless communication (e.g., another UE or a network node in an access network). Each transceiver may include a transmitter 918 and / or a receiver 920 appropriate to provide network communications (e.g., optical, electrical, frequency allocations, and so forth). Moreover, the transmitter 918 and receiver 920 may be coupled to one or more antennas (e.g., antenna 922) and may share circuit components, software or firmware, or alternatively be implemented separately.

[0103] In the illustrated embodiment, communication functions of the communication interface 912 may include cellular communication, Wi-Fi communication, LPWAN communication, data communication, voice communication, multimedia communication, short-range communications such as Bluetooth, near-field communication, location-based communication such as the use of the global positioning system (GPS) to determine a location, another like communication function, or any combination thereof. Communications may be implemented in according to one or more communication protocols and / or standards, such as IEEE 802.11 , Code Division Multiplexing Access (CDMA), Wideband Code Division Multiple Access (WCDMA), GSM, LTE, New Radio (NR), UMTS, WiMax, Ethernet, transmission control protocol / internet protocol (TCP / IP), synchronous optical networking (SONET), Asynchronous Transfer Mode (ATM), QUIC, Hypertext Transfer Protocol (HTTP), and so forth.

[0104] Regardless of the type of sensor, a UE may provide an output of data captured by its sensors, through its communication interface 912, via a wireless connection to a network node. Data captured by sensors of a UE can be communicated through a wireless connection to a network node via another UE. The output may be periodic (e.g., once every 15 minutes if it reports the sensed temperature), random (e.g., to even out the load from reporting from several sensors), in response to a triggering event (e.g., when moisture is detected an alert is sent), in response to a request (e.g., a user initiated request), or a continuous stream (e.g., a live video feed of a patient).

[0105] As another example, a UE comprises an actuator, a motor, or a switch, related to a communication interface configured to receive wireless input from a network node via a wireless connection. In response to the received wireless input the states of the actuator, the motor, or the switch may change. For example, the UE may comprise a motor that adjusts the control surfaces or rotors of a drone in flight according to the received input or to a robotic arm performing a medical procedure according to the received input.

[0106] A UE, when in the form of an Internet of Things (loT) device, may be a device for use in one or more application domains, these domains comprising, but not limited to, city wearable technology, extended industrial application and healthcare. Non-limiting examples of such an loT device are a device which is or which is embedded in: a connected refrigerator or freezer, a TV, a connected lighting device, an electricity meter, a robot vacuum cleaner, a voice controlled smart speaker, a home security camera, a motion detector, a thermostat, a smoke detector, a door / window sensor, a flood / moisture sensor, an electrical door lock, a connected doorbell, an air conditioning system like a heat pump, an autonomous vehicle, a surveillance system, a weather monitoring device, a vehicle parking monitoring device, an electric vehicle charging station, a smart watch, a fitness tracker, a wearable for tactile augmentation or sensory enhancement, a water sprinkler, an animal- or item-tracking device, a sensor for monitoring a plant or animal, an industrial robot, an Unmanned Aerial Vehicle (UAV), and any kind of medical device, like a heart rate monitor or a remote controlled surgical robot. A UE in the form of an loT device comprises circuitry and / or software in dependence of the intended application of the loT device in addition to other components as described in relation to the UE 900 shown in Figure 9.

[0107] As yet another specific example, in an loT scenario, a UE may represent a machine or other device that performs monitoring and / or measurements, and transmits the results of such monitoring and / or measurements to another UE and / or a network node. The UE may in this case be an M2M device, which may in a 3GPP context be referred to as an MTC device. As one particular example, the UE may implement the 3GPP NB-loT standard. In other scenarios, a UE may represent a vehicle, such as a car, a bus, a truck, a ship and an airplane, or other equipment that is capable of monitoring and / or reporting on its operational status or other functions associated with its operation.

[0108] In practice, any number of UEs may be used together with respect to a single use case. For example, a first UE might be or be integrated in a drone and provide the drone’s speed information (obtained through a speed sensor) to a second UE that is a remote controller operating the drone. When the user makes changes from the remote controller, the first UE may adjust the throttle on the drone (e.g. by controlling an actuator) to increase or decrease the drone’s speed. The first and / or the second UE can also include more than one of the functionalities described above. For example, a UE might comprise the sensor and the actuator, and handle communication of data for both the speed sensor and the actuators.

[0109] Figure 10 shows a network node 1000 in accordance with some embodiments. As used herein, network node refers to equipment capable, configured, arranged and / or operable to communicate directly or indirectly with a UE and / or with other network nodes or equipment, in a telecommunication network. Examples of network nodes include, but are not limited to, access points (APs) (e.g., radio access points), base stations (BSs) (e.g., radio base stations, Node Bs, evolved Node Bs (eNBs) and NR NodeBs (gNBs)), O-RAN nodes or components of an O-RAN node (e.g., O-RU, O-DU, O-CU).

[0110] Base stations may be categorized based on the amount of coverage they provide (or, stated differently, their transmit power level) and so, depending on the provided amount of coverage, may be referred to as femto base stations, pico base stations, micro base stations, or macro base stations. A base station may be a relay node or a relay donor node controlling a relay. A network node may also include one or more (or all) parts of a distributed radio base station such as centralized digital units, distributed units (e.g., in an O-RAN access node) and / or remote radio units (RRUs), sometimes referred to as Remote Radio Heads (RRHs). Such remote radio units may or may not be integrated with an antenna as an antenna integrated radio. Parts of a distributed radio base station may also be referred to as nodes in a distributed antenna system (DAS).

[0111] Other examples of network nodes include multiple transmission point (multi-TRP) 5G access nodes, multi-standard radio (MSR) equipment such as MSR BSs, network controllers such as radio network controllers (RNCs) or base station controllers (BSCs), base transceiver stations (BTSs), transmission points, transmission nodes, multi-cell / multicast coordination entities (MCEs), Operation and Maintenance (O&M) nodes, Operations Support System (OSS) nodes, Self-Organizing Network (SON) nodes, positioning nodes (e.g., Evolved Serving Mobile Location Centers (E-SMLCs)), and / or Minimization of Drive Tests (MDTs).

[0112] The network node 1000 includes a processing circuitry 1002, a memory 1004, a communication interface 1006, and a power source 1008. The network node 1000 may be composed of multiple physically separate components (e.g., a NodeB component and a RNC component, or a BTS component and a BSC component, etc.), which may each have their own respective components. In certain scenarios in which the network node 1000 comprises multiple separate components (e.g., BTS and BSC components), one or more of the separate components may be shared among several network nodes. For example, a single RNC may control multiple NodeBs. In such a scenario, each unique NodeB and RNC pair, may in some instances be considered a single separate network node. In some embodiments, the network node 1000 may be configured to support multiple radio access technologies (RATs). In such embodiments, some components may be duplicated (e.g., separate memory 1004 for different RATs) and some components may be reused (e.g., a same antenna 1010 may be shared by different RATs). The network node 1000 may also include multiple sets of the various illustrated components for different wireless technologies integrated into network node 1000, for example GSM, WCDMA, LTE, NR, WiFi, Zigbee, Z- wave, LoRaWAN, Radio Frequency Identification (RFID) or Bluetooth wireless technologies. These wireless technologies may be integrated into the same or different chip or set of chips and other components within network node 1000.

[0113] The processing circuitry 1002 may comprise a combination of one or more of a microprocessor, controller, microcontroller, central processing unit, digital signal processor, application-specific integrated circuit, field programmable gate array, or any other suitable computing device, resource, or combination of hardware, software and / or encoded logic operable to provide, either alone or in conjunction with other network node 1000 components, such as the memory 1004, to provide network node 1000 functionality.

[0114] In some embodiments, the processing circuitry 1002 includes a system on a chip (SOC). In some embodiments, the processing circuitry 1002 includes one or more of radio frequency (RF) transceiver circuitry 1012 and baseband processing circuitry 1014. In some embodiments, the radio frequency (RF) transceiver circuitry 1012 and the baseband processing circuitry 1014 may be on separate chips (or sets of chips), boards, or units, such as radio units and digital units. In alternative embodiments, part or all of RF transceiver circuitry 1012 and baseband processing circuitry 1014 may be on the same chip or set of chips, boards, or units.

[0115] The memory 1004 may comprise any form of volatile or non-volatile computer- readable memory including, without limitation, persistent storage, solid-state memory, remotely mounted memory, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), mass storage media (for example, a hard disk), removable storage media (for example, a flash drive, a Compact Disk (CD) or a Digital Video Disk (DVD)), and / or any other volatile or non-volatile, non-transitory device-readable and / or computer-executable memory devices that store information, data, and / or instructions that may be used by the processing circuitry 1002. The memory 1004 may store any suitable instructions, data, or information, including a computer program, software, an application including one or more of logic, rules, code, tables, and / or other instructions capable of being executed by the processing circuitry 1002 and utilized by the network node 1000. The memory 1004 may be used to store any calculations made by the processing circuitry 1002 and / or any data received via the communication interface 1006. In some embodiments, the processing circuitry 1002 and memory 1004 is integrated.

[0116] The communication interface 1006 is used in wired or wireless communication of signaling and / or data between a network node, access network, and / or UE. As illustrated, the communication interface 1006 comprises port(s) / terminal(s) 1016 to send and receive data, for example to and from a network over a wired connection. The communication interface 1006 also includes radio front-end circuitry 1018 that may be coupled to, or in certain embodiments a part of, the antenna 1010. Radio front-end circuitry 1018 comprises filters 1020 and amplifiers 1022. The radio front-end circuitry 1018 may be connected to an antenna 1010 and processing circuitry 1002. The radio front-end circuitry may be configured to condition signals communicated between antenna 1010 and processing circuitry 1002. The radio front-end circuitry 1018 may receive digital data that is to be sent out to other network nodes or UEs via a wireless connection. The radio front-end circuitry 1018 may convert the digital data into a radio signal having the appropriate channel and bandwidth parameters using a combination of filters 1020 and / or amplifiers 1022. The radio signal may then be transmitted via the antenna 1010. Similarly, when receiving data, the antenna 1010 may collect radio signals which are then converted into digital data by the radio front-end circuitry 1018. The digital data may be passed to the processing circuitry 1002. In other embodiments, the communication interface may comprise different components and / or different combinations of components.

[0117] In certain alternative embodiments, the network node 1000 does not include separate radio front-end circuitry 1018, instead, the processing circuitry 1002 includes radio front-end circuitry and is connected to the antenna 1010. Similarly, in some embodiments, all or some of the RF transceiver circuitry 1012 is part of the communication interface 1006. In still other embodiments, the communication interface 1006 includes one or more ports or terminals 1016, the radio front-end circuitry 1018, and the RF transceiver circuitry 1012, as part of a radio unit (not shown), and the communication interface 1006 communicates with the baseband processing circuitry 1014, which is part of a digital unit (not shown).

[0118] The antenna 1010 may include one or more antennas, or antenna arrays, configured to send and / or receive wireless signals. The antenna 1010 may be coupled to the radio front-end circuitry 1018 and may be any type of antenna capable of transmitting and receiving data and / or signals wirelessly. In certain embodiments, the antenna 1010 is separate from the network node 1000 and connectable to the network node 1000 through an interface or port.

[0119] The antenna 1010, communication interface 1006, and / or the processing circuitry 1002 may be configured to perform any receiving operations and / or certain obtaining operations described herein as being performed by the network node. Any information, data and / or signals may be received from a UE, another network node and / or any other network equipment. Similarly, the antenna 1010, the communication interface 1006, and / or the processing circuitry 1002 may be configured to perform any transmitting operations described herein as being performed by the network node. Any information, data and / or signals may be transmitted to a UE, another network node and / or any other network equipment.

[0120] The power source 1008 provides power to the various components of network node 1000 in a form suitable for the respective components (e.g., at a voltage and current level needed for each respective component). The power source 1008 may further comprise, or be coupled to, power management circuitry to supply the components of the network node 1000 with power for performing the functionality described herein. For example, the network node 1000 may be connectable to an external power source (e.g., the power grid, an electricity outlet) via an input circuitry or interface such as an electrical cable, whereby the external power source supplies power to power circuitry of the power source 1008. As a further example, the power source 1008 may comprise a source of power in the form of a battery or battery pack which is connected to, or integrated in, power circuitry. The battery may provide backup power should the external power source fail. Embodiments of the network node 1000 may include additional components beyond those shown in Figure 10 for providing certain aspects of the network node’s functionality, including any of the functionality described herein and / or any functionality necessary to support the subject matter described herein. For example, the network node 1000 may include user interface equipment to allow input of information into the network node 1000 and to allow output of information from the network node 1000. This may allow a user to perform diagnostic, maintenance, repair, and other administrative functions for the network node 1000. In some embodiments providing a core network node, such as core network node 108 of FIG. 8, some components, such as the radio front-end circuitry 1018 and the RF transceiver circuitry 1012 may be omitted.

[0121] Figure 11 is a block diagram illustrating a virtualization environment 1100 in which functions implemented by some embodiments may be virtualized. In the present context, virtualizing means creating virtual versions of apparatuses or devices which may include virtualizing hardware platforms, storage devices and networking resources. As used herein, virtualization can be applied to any device described herein, or components thereof, and relates to an implementation in which at least a portion of the functionality is implemented as one or more virtual components. Some or all of the functions described herein may be implemented as virtual components executed by one or more virtual machines (VMs) implemented in one or more virtual environments 1100 hosted by one or more of hardware nodes, such as a hardware computing device that operates as a network node, UE, core network node, or host. Further, in embodiments in which the virtual node does not require radio connectivity (e.g., a core network node or host), then the node may be entirely virtualized. In some embodiments, the virtualization environment 1100 includes components defined by the O-RAN Alliance, such as an O-Cloud environment orchestrated by a Service Management and Orchestration Framework via an 0-2 interface. Virtualization may facilitate distributed implementations of a network node, UE, core network node, or host.

[0122] Applications 1102 (which may alternatively be called software instances, virtual appliances, network functions, virtual nodes, virtual network functions, etc.) are run in the virtualization environment Q400 to implement some of the features, functions, and / or benefits of some of the embodiments disclosed herein.

[0123] Hardware 1104 includes processing circuitry, memory that stores software and / or instructions executable by hardware processing circuitry, and / or other hardware devices as described herein, such as a network interface, input / output interface, and so forth. Software may be executed by the processing circuitry to instantiate one or more virtualization layers 1106 (also referred to as hypervisors or virtual machine monitors (VMMs)), provide VMs 1108a and 1108b (one or more of which may be generally referred to as VMs 1108), and / or perform any of the functions, features and / or benefits described in relation with some embodiments described herein. The virtualization layer 1106 may present a virtual operating platform that appears like networking hardware to the VMs 1108.

[0124] The VMs 1108 comprise virtual processing, virtual memory, virtual networking or interface and virtual storage, and may be run by a corresponding virtualization layer 1106. Different embodiments of the instance of a virtual appliance 1102 may be implemented on one or more of VMs 1108, and the implementations may be made in different ways. Virtualization of the hardware is in some contexts referred to as network function virtualization (NFV). NFV may be used to consolidate many network equipment types onto industry standard high volume server hardware, physical switches, and physical storage, which can be located in data centers, and customer premise equipment.

[0125] In the context of NFV, a VM 1108 may be a software implementation of a physical machine that runs programs as if they were executing on a physical, non-virtualized machine. Each of the VMs 1108, and that part of hardware 1104 that executes that VM, be it hardware dedicated to that VM and / or hardware shared by that VM with others of the VMs, forms separate virtual network elements. Still in the context of NFV, a virtual network function is responsible for handling specific network functions that run in one or more VMs 1108 on top of the hardware 1104 and corresponds to the application 1102.

[0126] Hardware 1104 may be implemented in a standalone network node with generic or specific components. Hardware 1104 may implement some functions via virtualization. Alternatively, hardware 1104 may be part of a larger cluster of hardware (e.g. such as in a data center or CPE) where many hardware nodes work together and are managed via management and orchestration 1110, which, among others, oversees lifecycle management of applications 1102. In some embodiments, hardware 1104 is coupled to one or more radio units that each include one or more transmitters and one or more receivers that may be coupled to one or more antennas. Radio units may communicate directly with other hardware nodes via one or more appropriate network interfaces and may be used in combination with the virtual components to provide a virtual node with radio capabilities, such as a radio access node or a base station. In some embodiments, some signaling can be provided with the use of a control system 1112 which may alternatively be used for communication between hardware nodes and radio units.

[0127] Although the computing devices described herein (e.g., UEs, network nodes) may include the illustrated combination of hardware components, other embodiments may comprise computing devices with different combinations of components. It is to be understood that these computing devices may comprise any suitable combination of hardware and / or software needed to perform the tasks, features, functions and methods disclosed herein. Determining, calculating, obtaining or similar operations described herein may be performed by processing circuitry, which may process information by, for example, converting the obtained information into other information, comparing the obtained information or converted information to information stored in the network node, and / or performing one or more operations based on the obtained information or converted information, and as a result of said processing making a determination. Moreover, while components are depicted as single boxes located within a larger box, or nested within multiple boxes, in practice, computing devices may comprise multiple different physical components that make up a single illustrated component, and functionality may be partitioned between separate components. For example, a communication interface may be configured to include any of the components described herein, and / or the functionality of the components may be partitioned between the processing circuitry and the communication interface. In another example, non-computationally intensive functions of any of such components may be implemented in software or firmware and computationally intensive functions may be implemented in hardware.

[0128] In certain embodiments, some or all of the functionality described herein may be provided by processing circuitry executing instructions stored on in memory, which in certain embodiments may be a computer program product in the form of a non-transitory computer- readable storage medium. In alternative embodiments, some or all of the functionality may be provided by the processing circuitry without executing instructions stored on a separate or discrete device-readable storage medium, such as in a hard-wired manner. In any of those particular embodiments, whether executing instructions stored on a non-transitory computer- readable storage medium or not, the processing circuitry can be configured to perform the described functionality. The benefits provided by such functionality are not limited to the processing circuitry alone or to other components of the computing device, but are enjoyed by the computing device as a whole, and / or by end users and a wireless network generally.

Claims

CLAIMS1. A method performed by a first communication node (12-1), the method comprising: transmitting to a second communication node (12-2), or receiving from the second communication node (12-2), a code definition (20D) for an error correcting code (20), wherein the code definition (20D): explicitly indicates one or more values (20V) of a mathematical or graphical representation (20R) of the error correcting code (20); or indicates an algorithm (20A) for how to calculate a mathematical or graphical representation (20R) of the error correcting code (20), and indicates one or more values (20N) of one or more inputs to that algorithm (20A); and after transmitting or receiving the code definition (20D), transmitting and / or receiving data (18) to and / or from the second communication node (12-2) using the error correcting code (20).

2. The method of claim 1 , wherein the code definition (20D) explicitly indicates one or more values (20V) of the mathematical or graphical representation (20R) of the error correcting code (20).

3. The method of claim 1 , wherein the code definition (20D) indicates the algorithm (20A) by indicating a table from which to calculate the mathematical or graphical representation (20R) of the error correcting code (20), wherein the table maps different indices to mathematical or graphical representations (20R) of different possible error correcting codes (20), and wherein the code definition (20D) indicates the one or more values (20N) of the one or more inputs to the algorithm (20A) by indicating a certain index into the table.

4. The method of claim 1 , wherein the code definition (20D) indicates the algorithm (20A) by indicating a pseudo-random function from which to calculate the mathematical or graphical representation (20R) of the error correcting code (20) and indicates the one or more values (20N) of the one or more inputs to the algorithm (20A) by indicating a seed value of the pseudo-random function.

5. The method of claim 1 , wherein the code definition (20D) indicates the algorithm (20A) by indicating that the mathematical or graphical representation (20R) of the error correcting code (20) is to be calculated from a bipartite graph or from a base bipartite graphand a lifting matrix, and wherein the code definition (20D) indicates the one or more values (20N) of the one or more inputs to the algorithm (20A) by indicating: one or more values of the bipartite graph; or one or more values of the base bipartite graph and one or more values of the lifting matrix, wherein the base bipartite graph graphically represents a component error correcting code, and wherein the lifting matrix is configured to transform the base bipartite graph.

6. The method of any of claims 1-5, wherein the mathematical or graphical representation (20R) of the error correcting code (20) comprises a matrix, wherein the matrix is either: a parity check matrix whose rows are orthogonal to codewords of the error correcting code (20); or a generator matrix whose rows correspond to respective codewords of the error correcting code (20).

7. The method of claim 6, wherein the code definition (20D) explicitly indicates one or more values of the matrix.

8. The method of claim 6, wherein the code definition (20D) indicates the algorithm (20A) by indicating that one or more specified positions in the matrix are to have non-zero values and that the rest of the positions in the matrix are to have zero values, and wherein the code definition (20D) indicates the one or more values (20N) of the one or more inputs to the algorithm (20A) by indicating one or more values that index the one or more specified positions in the matrix which are to have non-zero values.

9. The method of any of claims 1-5, wherein the mathematical or graphical representation (20R) of the error correcting code (20) comprises a polynomial which represents the error correcting code (20) over a finite field.

10. The method of any of claims 1-5, wherein the mathematical or graphical representation (20R) of the error correcting code (20) comprises a bipartite graph which graphically represents the error correcting code (20); or a trellis diagram, a state diagram, or a finite state machine.

11. The method of any of claims 1-10, wherein the error correcting code (20) is a block code or a convolutional code.

12. The method of any of claims 1-11 , wherein transmitting or receiving the code definition (20D) comprises transmitting or receiving the code definition (20D) using: a bootstrap error correcting code with which the first communication node (12-1) is preconfigured; or a previously defined error correcting code (C-1 ...C-N) whose code definition (20D) the first communication node (12-1) received before transmitting or receiving the code definition (20D) for the error correcting code (20).

13. The method of any of claims 1-12, further comprising, before transmitting or receiving the data (18) using the error correcting code (20), validating the mathematical or graphical representation (20R) of the error correcting code (20) by validating encoding and / or decoding of one or more test messages exchanged between the first and second communication nodes (12-1 , 12-2).

14. The method of any of claims 1-13, wherein the error correcting code (20) is to be used for uplink data, wherein the data (18) is uplink data, and wherein the method further comprises: transmitting to the second communication node (12-2), or receiving from the second communication node (12-2), a downlink code definition (20D) for a downlink error correcting code, wherein the downlink code definition (20D): explicitly indicates one or more values (20V) of a mathematical or graphical representation (20R) of the downlink error correcting code; or indicates an algorithm (20A) for how to calculate a mathematical or graphical representation (20R) of the downlink error correcting code, and indicates one or more values (20N) of one or more inputs to that algorithm (20A); and after transmitting or receiving the downlink code definition (20D), transmitting or receiving downlink data to or from the second communication node (12-2) using the downlink error correcting code.

15. The method of any of claims 1-14, wherein one of the first and second communication nodes (12-1 , 12-2) is a communication device and the other of the first and second communication nodes (12-1 , 12-2) is a network node of a communication network.

16. The method of any of claims 1-15, wherein transmitting and / or receiving data (18) using the error correcting code (20) comprises:encoding data (18) according to the error correcting code (20) to obtain one or more codewords of the error correcting code (20) and transmitting the one or more codewords; and / or receiving one or more codewords of the error correcting code (20) and decoding the one or more received codewords according to the error correcting code (20) in order to recover data (18).

17. The method of any of claims 1-16, wherein the code definition (20D) indicates a limit on for how long and / or for how much data the error correcting code (20) is to be used, and wherein transmitting and / or receiving data (18) using the error correcting code (20) comprises transmitting and / or receiving data (18) using the error correcting code (20) in accordance with the limit.

18. A first communication node (12-1) configured to: transmit to a second communication node (12-2), or receive from the second communication node (12-2), a code definition (20D) for an error correcting code (20), wherein the code definition (20D): explicitly indicates one or more values (20V) of a mathematical or graphical representation (20R) of the error correcting code (20); or indicates an algorithm (20A) for how to calculate a mathematical or graphical representation (20R) of the error correcting code (20), and indicates one or more values (20N) of one or more inputs to that algorithm (20A); and after transmitting or receiving the code definition (20D), transmit and / or receive data (18) to and / or from the second communication node (12-2) using the error correcting code (20).

19. The first communication node (12-1) of claim 18, configured to perform the method of any of claims 2-17.

20. A first communication node (12-1) comprising processing circuitry (902; 1002) and memory (910; 1004), wherein the memory (910; 1004) contains instructions executable by the processing circuitry (902; 1002) whereby the first communication node (12-1) is configured to perform a method according to any of claims 1-17.21 . A computer program comprising instructions which, when executed by at least one processor of a first communication node (12-1), causes the first communication node (12-1)to perform the method of any of claims 1-17.

22. A carrier containing the computer program of claim 21 , wherein the carrier is one of an electronic signal, optical signal, radio signal, or computer readable storage medium.

Citation Information

Patent Citations

  • Methods and apparatus for providing linear erasure codes

    US20110194570A1

  • Data encoding and decoding

    US20190253182A1

  • Coding scheme indication for 802.11bn

    US20240089030A1