Opportunities and Challenges for Error Control Schemes for Wireless Sensor Networks: A Review

: Error Correction Schemes (ECSs) signiﬁcantly contribute to enhancing reliability and energy efﬁciency of Wireless Sensor Networks (WSNs). This review paper offers an overview of the different types of ECS used in communication systems and a synopsis of the standards for WSN. We also discuss channels and network models for WSN as they are crucial for efﬁcient ECS design and implementation. The literature review conducted on the proposed energy consumption and efﬁciency models for WSN indicates that existing research work has not considered Single Hop Asymmetric Structure (SHAS) with high performing Error Correcting Codes (ECCs). We present a review on proposed ECS for WSN based on three criteria: Forward Error Correction (FEC), adaptive error correction techniques, and other techniques. Based on our review work, we found that there are limited works on ECS design on a realistic network model i.e., a modiﬁed multi-hop WSN model. Finally, we offer future research challenges and opportunities on ECS design and implementation for WSN. CSI is available) for process industry setting. The thesis investigates energy efﬁciency and latency of ARQ and the proposed


Introduction
Wireless Sensor Networks (WSNs) have received tremendous attention due to technological development and growth in applications in various fields. The recent developments in the fields of wireless technology (including 5G), signal processing capability and design technology have made small sized, low cost, and low powered multi-purpose sensor nodes available. WSN has several nodes and each node is able to sense, process and transmit data to nearby nodes using the communication system. WSN can be applied in many applications ranging from military, security, health, environment, home and industry automation, natural disaster prevention and many more. Most of the WSN nodes are battery operated and the life of network depends on the battery's life. Thus, the energy consumption constraint of WSN nodes is strict to maximize the network life. The WSN node consumes power during data sensing, processing and Radio Frequency (RF) transmission. Among these domains of energy consumption, a significant amount of energy is spent on RF transmission and data processing. Therefore, the key issue when designing and implementing WSN is energy efficiency (to reduce power consumption at node) in order to enhance the life of the network. Additionally, the WSN should provide reliable communication as WSNs are applied within the fields of human's health and well-being, defence and also for natural disaster prevention. In WSN, the RF transmission happens on a wireless channel and the wireless channel is naturally unpredictable. Therefore, Error Correction Schemes (ECSs) are crucial to maintain reliability i.e., Bit Error Rate (BER) of in communication link as well as energy efficiency of WSN [1][2][3].
WSNs come with challenges as well as opportunities. It is anticipated that WSN plays a vital role in daily life as WSN is integrated in future generation mobile technology and wireless technologies. The proper use of WSN technology will enhance quality of life, environmental monitoring, control process engineering, and the performance of military task and applications in several other fields [4][5][6]. ECSs design and implementation for WSN have numerous challenges. Firstly, some nodes in WSN are energy and computationally constrained as the node is operated by a battery and its replacement is a complex and difficult process in some applications due to geographical location and other factors. The energy saving on WSN nodes is especially important when WSN nodes are located at remote and isolated areas, as replacing the battery on the node is either impossible or very costly or time-consuming. Secondly, the communication environment and design requirement of communication link of WSN varies according to its application. The design requirements of the communication link constitutes reliability and Quality of Service (QoS), data rate, coverage area, channel propagation and delay requirements. Therefore, the ECSs used in the WSN should be able to support various requirements using limited energy and computational resources. The proper design and implementation of ECS may provide an opportunity for energy saving at energy-constrained WSN node and also enhance WSN link reliability. Therefore, the proper understanding of ECS for WSN is important to improve the reliability of communication links and also energy saving at energy-constrained WSN nodes.
It is hard to find survey papers covering design and implementation aspects of ECSs and energy consumption models used in WSNs. As per our discoveries, there are three review papers [7][8][9] in these areas. In [7], review is limited to modulation and coding techniques used in WSN without proper background work. In [8], Ali et al. review Forward Error Correction (FEC) or Error-Correcting Codes (ECCs) in WSN from an energy perspective, which also lacks proper background work and covers only limited literature. Recently, there was a review paper published on ECCs in WSN [9] where the review paper did not include energy analysis concept and the review is only limited to FEC. There is no review on other ECS such as Hybrid Automatic Repeat Request (HARQ), channel adaptive techniques and other techniques. The purpose of this paper is to present the results of an extensive investigation on the current scenarios for energy consumption models and ECS design for WSN in the literature. Based on the literature findings, we identify existing challenges in the energy efficiency analysis, ECS design and implementation of WSN. Finally, we propose future opportunities where energy efficiency, ECS design and implementation of WSN can be improved.
The remainder of the paper is organized as follows. In Section 2 of the paper, we present the various types of ECS that are proposed or introduced for WSN in the research literature. Section 3 summarises several standards used for WSN, WSN channels and network models used for WSN. In Section 4, we review energy efficiency and energy consumption models proposed for WSN. Section 5 reviews ECS schemes proposed for WSN in the current literature. Section 6 discusses future research issues, including challenges in ECS design and implementation for WSN. Finally, we present concluding remarks in Section 7. All of the acronyms used in this paper are presented in the Abbreviations Section after Conclusion.

Error Control Scheme (ECS)
There are different types of ECSs present in the literature to support different reliability, delay constrained, channel types, distance between nodes and data rate in the WSN communication.
Here, we present a brief overview of different types of ECS used in the WSN. We loosely group ECSs used in WSN into five categories and Figure 1 exhibits a broad classification of ECSs for WSN error correction context. The structure of this paper and content of this section is similar to our previous paper [10]:

Automatic Repeat Request (ARQ)
In automatic repeat request (ARQ) [11], the transmitter applies an error-detection code to the packet before transmission. The commonly used error-detection techniques are parity check and cyclic redundancy check (CRC). The receiver performs an error-detection operation using checksum according to the technique applied at the transmitter. If the receiver finds errors, the receiver sends Negative ACKnowledgement (NACK) to the transmitter using the feedback channel. Otherwise, the receiver sends a positive ACKknowledgement (ACK). Until the receiver receives an error-free packet, the re-transmission action is continued. Additionally, the transmitter resends the packet if it does not receive acknowledgment within a pre-specified time-frame. The main drawbacks of the ARQ scheme are the additional cost of re-transmission and delays. The re-transmission will take place when the communication link is poor and will rarely happen when a communication link is good. Thus, the efficiency of ARQ is very good during good channel conditions but will produce poor efficiency during poor channel conditions.

Forward Error Correction (FEC)
FEC or channel coding [1,12] is a classic way to increase the performance and reliability of a communication channel. When re-transmission is relatively costly and the system is delay sensitive, FEC is used in the communication system. When FEC is applied in a communication system, controlled redundancy is introduced to the transmitted packet at the transmitter using ECC that allows detection and correction of a certain amount of error at the receiver side. Channel encoding operation is the process of adding redundancy at the transmitter where the operation converts information bits to codewords. The error can be identified and fixed at the receiver during the channel decoding operation. Hence, it eliminates the need for re-transmission. This is the key convenience of FEC which supports delay sensitive communication systems.
The advantages provided by FEC come with several additional costs. The use of FEC in WSN is justified on the basis of several factors. The use of FEC in coded communication system can achieve a certain reliability at significantly lower Signal to Noise Ratio (SNR) than an uncoded system. The gap in SNR between uncoded and coded systems is called coding gain and the value of coding gain depends on three factors: the type of ECC, code rate and decoding algorithm (i.e., the complexity of decoding algorithm). The lower signal power transmission requirement at the transmitter (due to coding gain) which comes at the cost of extra energy consumption due to channel encoding, channel decoding and the transmission of redundant bits introduced by FEC. Thus, we need to compare the extra power consumption introduced due to encoding, decoding and transmission of extra bits and the power saving due to use of FEC. The use of FEC is only justified if extra power consumption (due to encoding, decoding and extra transmission) is lower than the power saving (due to coding gain) because of energy-constrained nature of WSN node. The amount of extra bits introduced by FEC is measured by code rate (R) of ECC, and it is defined as in Equation (2) [2]: where n and k are the length of codeword and information bits, respectively. To make a fair comparison between uncoded and coded system with variety of modulation orders, the SNR is measured as the ratio of energy per bit (E b ) to the spectral noise (N 0 ), that is, E b /N 0 . Then, the relationship between E s /N 0 (the ratio of energy per symbol (E s ) to the spectral noise over Additive White Gaussian Noise (AWGN) channel) and E b /N 0 [2,3] (both expressed in dB) can be expressed as in Equation (3): where the term I represents the number of information bits per symbol which depends on the size of modulation alphabet (M) and the code rate of an ECC. It is written as in Equation (1).
For binary modulation like Binary Phase Shift Keying (BPSK) or Binary Amplitude Shift Keying (BASK), the value of M is two, then the number of information bits per symbol (refer to Equation (1)) is equal to code rate. Therefore, the number of information bits per symbol only depends on code rate. The value of the code rate is equal to one for an uncoded system, whereas the value of code rate is less than one for a coded system. When researchers compare the results between uncoded and coded systems, they should consider the energy consumption due to encoding, decoding, transmission of extra bits due to redundancy and also the modulation order. However, the energy consumption of the encoding operation is insignificant compared with the transmission and decoding operations in many cases [13][14][15]. Therefore, the major components that should be considered in the context of energy analysis are the power consumption due to decoding at the receiver (depends on the type of decoding algorithm) and the transmission of extra bits at transmitter (depends on code rate of FEC). Therefore, the energy analysis comparison between coded and uncoded systems should be dealt with transmission power for redundant bits as well as the decoding cost per bit.
In literature, there are various types of FEC with different decoding algorithms that will produce diverse performance. In general, ECCs is broadly divided into two classes: block codes and convolutional codes [2].

Block Codes
Block codes are a large family of ECCs where encoding is performed in blocks. There are varieties of block codes with various applications. In block codes, the information bits to be transmitted will be broken down into smaller blocks of pre-defined length. Then, the channel encoder converts these blocks into codewords. Block codes may be defined as binary and non-binary fields. In this paper, we limit the review of block codes in binary Galois Field GF(2), but the concept can be generalised to non-binary fields. Mathematically, a block code is represented by the triple (n, k, t) where n is codeword length i.e, the number of bits in codeword, k is information length, i.e., the number of information bits in the codeword and t is the error correction capability i.e., the number of bits errors that can be corrected. Figure 2 illustrates information bits and parity bits of a systematic block codes. As we discussed earlier, there are various types of binary block codes with a wide range of applications. A binary block code is termed as a linear code if, and only if, the modulo-2 sum of the two codewords produces a new codeword. Hamming codes [16] [17].
Cyclic code is another special class of linear block code where a circular shift of a codeword transforms into a new codeword. Bose-Chaudhuri-Hocquenghem (BCH) [18,19] and Reed-Solomon (RS) [20] codes are classified into binary and non-binary cyclic codes, respectively.
Low-Density Parity Check (LDPC) [21], and Repeat Accumulate (RA) [22] codes are two linear block codes with high error correction capability. These codes are considered as the most powerful codes in the current literature. LDPC codes are binary linear block codes with sparse parity-check matrices where the number of ones per column and per row is very small. LDPC code is represented by factor graph [23] in graphical form. An example of a parity check matrix of a regular LDPC code with degree of variable node (d v ) = 2 and degree of check node (d c ) = 3 is represented as parity check matrix in Equation (4). The factor graph of the parity check matrix given in Equation (4) is shown in Figure 3. Details of encoding and decoding operations of LDPC and RA codes can be found at [24]: Check nodes Variable nodes

Convolutional Codes
Convolutional code is another large family of a linear code. However, convolutional codes differ from block codes in many ways. In convolutional code, there is no division of information bits into smaller blocks. In this code, the whole data stream is converted into a single codeword during the encoding operation. Mathematically, a convolutional code is represented by the triple (n, k, L) where the n output bits from the convolutional encoder at any given time not only depends on k information bits, but also on L previous information bits (called constraint length of convolutional code). Convolutional codes can be classified into systematic and non-systematic. Figure 4 shows an example of an encoder with 1/2 code rate and constraints length of three. Even the encoding operation of convolutional codes is different from block codes; there is no difference while defining the code rate for these codes.
The concept of code concatenation is introduced by Forney in 1965 [25]. The code concatenation is obtained by combining an inner code and an outer code either in series or parallel. These codes are widely used in space communications. Some examples of concatenated codes are Serial Concatenated Convolutional Code (SCCC), Parallel-Concatenated Convolutional Code (PCCC) [26], turbo code [27], and RA code [22].
In literature, there are different versions of turbo codes using different component inner and outer codes, interleavers and other parameters. In classical turbo encoder, there are two identical recursive systematic convolutional coders separated by interleaver as shown in Figure 5. These encoders are connected to each other using parallel concatenation. Details of encoding and decoding operations of turbo codes can be found at [28].

Encoding and Decoding Complexity
The complexity of encoding and decoding operation in FEC depends on encoding and decoding algorithms, respectively. It also depends on the linearity of code. The encoding complexity of nonlinear block code is very complex as the block length increases. However, the encoding complexity of linear block code is significantly less than the nonlinear block codes for large block length. Therefore, the further discussion on complexity is only limited to linear codes. Commonly, the encoding operation is much straightforward than the decoding operation. Thus, the encoder operation at transmitter consumes significantly less power than the decoder operation at the receiver. Therefore, the power consumed by the encoder can be neglected during the energy analysis and ECS design [13,14].
The encoding and decoding complexity of cyclic codes is simple and easy to implement because of the special algebraic properties of the codes. The encoding and decoding operation of cyclic codes can be implemented using basic digital components such as exclusive-OR gates, switches and shift registers. Similarly, the encoder of convolutional code is also very simple and can be implemented using shift registers. Therefore, they are considered as very energy efficient due to the simple operation and implementation methods. However, convolutional codes use different types of decoding algorithms including simple and complex decoding techniques. Therefore, cyclic codes (such as BCH and RS) and convolutional codes are considered favourably by researchers as energy consumption is the key issue in WSN applications.
There are varieties of decoding algorithms and the complexity and performance of these decoding algorithm varies significantly. Therefore, there is a trade-off between the coding gain and the decoding complexity. The decoding algorithms can be broadly classified based on the type of ECC, the type of decoding technique used, and the channel input to decoder. For example, the decoding of Hamming codes can be performed by various decoding algorithms such as syndrome decoding [29]; Maximum Likelihood (ML) decoding [30] either using decoding to the nearest codeword or Viterbi algorithm [31] using trellis; and Maximum A Posteriori (MAP) decoding with the BCJR algorithm [32]. In BCH and RS codes, the decoding operation is performed using the complex polynomial solver to find error position. Additionally, Viterbi decoding with trellis or MAP decoding or sequential decoding can be used for error detection and correction of convolutional codes.
Another classification criteria for decoding algorithm is how decoding is performed; it can be iterative decoding and non-iterative decoding. The common examples of non-iterative decoding are: (a) Syndrome decoding and ML decoding using the nearest codeword for short block codes, (b) Algebraic decoding used in RS and BCH codes, and (c) Viterbi decoding and sequential decoding for convolutional codes. These non-iterative decoding algorithms are simple, easy to implement and fast but with inferior performance, whereas MAP decoding with the BCJR algorithm used in Turbo codes and Sum-Product Algorithm (SPA) or Belief Propagation (BP) [33] used in LDPCs are categorized into iterative decoding. These iterative decoding algorithms are complex (high consumption of energy), slow and hard to implement but with fantastic performance i.e., capacity approaching.
Additionally, the decoding algorithms can be divided based on the input from the channel to the decoding algorithms. If the decoder receives the hard decision from the channel (either 0 or 1) and that information will be used during the decoding operation, then the decoder is called a hard-decision decoder-whereas, if the decoder receives the soft decision from the channel and those information is used during the decoding, then the decoder is called a soft decision decoder. The soft decision decoder has better performance in terms of coding gain when compared with the corresponding hard decision decoder. However, the soft decision decoder has significantly higher decoding complexity and power consumption than the hard decision decoder. Therefore, there are some simplified versions of SPA decoder available in the literature to reduce complexity and power consumption. Some examples of simplified versions of SPA are Binary Message Passing (BMP) decoding, Weighted Bit Flipping (WBF) decoding and min-sum decoding [34]. Although LDPC and Turbo codes used with iterative decoding algorithms that use a soft-decision from a channel can achieve significantly better performance (coding gain) than cyclic codes and short block codes with non-iterative decoding; the use of these iterative codes are limited in WSN due to their high complexities and high power consumption.
One of the approaches used to evaluate the effectiveness of ECC on WSN is to look at the decoding power consumption. Decoder power consumption is based on complexity of the decoding algorithm i.e., the number of operations (addition, multiplication or other mathematical and logical operations) used on a decoding algorithm. Additionally, the power consumption also depends on the maximum number of iterations for iterative decoding techniques used in LDPC and Turbo codes. This method of evaluating effectiveness of error control code only incorporates the decoding cost at the receiver but does not cover the cost associated with transmission of redundant bits at the transmitter. Therefore, the evaluation of ECC in WSN using only decoder power consumption is inadequate for full analysis.
The complexity of LDPC decoding depends on the maximum number of iterations (N I) used during decoding algorithm, block length (n), average degree of variable node (d v ) and average degree of check node (d c ). The SPA decoding involves addition and multiplication operations at variable and check node, respectively. The complexity of LDPC decoding using an SPA algorithm in terms of number of operations is given as Equation (5), where E A and E M are defined as complexity of addition and multiplication operation, respectively. However, the validity of Equation (5) can not be verified independently, and the paper does not provide proper reference in [35]: The complexity of BCH decoding with t error correcting capability and code length n is given by Equation (6) [36].
The complexity of RS decoding with t error correcting capability and code length n is given by Equation (7) [37]. However, the validity of Equation (7) can not be verified independently or proper reference is not provided in [37]: The theoretical decoding complexity of trellis decoding of convolutional code is given by Equation (8) [38]:

Hybrid Automatic Repeat Request (HARQ)
As we discussed in Section 2.1, ARQ requires re-transmission for reliability, and re-transmission is frequent during poor channel conditions (which is costly) and seldom happens during good channel condition. Therefore, the reliability of communication link can be achieved using ARQ. However, the energy consumption is high due to frequent re-transmission during poor channel condition. On the other side, as we discussed in Section 2.2, FEC eliminates re-transmission, but it introduces redundancy bits for transmission. These redundant bits are unwanted costs during good channel conditions. The HARQ [39] scheme is developed by manipulating the advantages of both ARQ and FEC. In HARQ, the receiver tries to correct the detected errors first using FEC and asks for re-transmission only if error correction is not possible using FEC.

Channel-Adaptive Techniques
The wireless channel is time-varying in nature, and this is valid for WSN too. Channel-adaptive techniques are introduced to combat issues with time varying channels [40]. In the presence of multi-path fading and interference, channel adaptation is one way to fully utilise the channel capacity. In this technique, the system adapts system parameters (such as transmission power, code rate, modulation order, coding scheme or any combination of them) according to channel conditions [41].
The channel-adaptive technique provides flexibility and utilises full channel capacity, but it requires lots of extra work. The additional work includes prediction of channel (channel estimation); a return channel to send channel side information (CSI) from receiver to transmitter; update of system parameter at both transmitter and receiver; and flexible and fast re-configurable transmitter and receiver to support adaptive nature.
In the channel-adaptive approach, the system parameter varies according to channel condition. For example, when modulation order is an adaptive parameter, the order of modulation is changed according to the condition of the communication link. When the communication channel quality is better (i.e., better SNR), higher order modulation is used, whereas, when the communication link quality is poor, the modulation order is decreased in order to achieve the same BER [42]. Similarly, when the transmission power is an adaptive parameter, the transmission power at transmitter is changed according to channel condition. When the received SNR is good, lower transmission power is used, whereas, when the received SNR is bad, higher transmission power is used in order to achieve the same reliability. Similarly, we can adapt other parameters according to channel condition. Figure 6 illustrates the channel adaptive model where modulation order, code rate and transmission power can be adapted.

Other Techniques
In addition to ARQ, FEC, HARQ and channel-adaptive techniques, researchers have utilised other various techniques such as Bit-Interleaved Coded Modulation (BICM), network coding, and residual number system for error correction and energy efficiency analysis in WSN. In BICM [43], modulator and channel encoder are separated by a bit-level interleaver. The BICM technique is suitable for fading channel and adapted for Wireless Local Area Network (WLAN) standard (IEEE 802.11a/g) [44] and broadband wireless access (IEEE 802.16) [45]. We will perform a brief review of BICM used in WSN. However, we are not focusing review on network coding and the residual number system in this paper.

Standard, Network and Channel Models
In this section, we introduce the IEEE standard for WSN that is followed by network and channel models used for WSN in the literature.

Standard
The basic communication standard for WSN is IEEE 802.15.4 [46] and its definition includes the Physical layer (PHY) and medium access control (MAC) sublayer for short-range wireless transmission with low power consumption, low complexity, low cost and low-data-rate for fixed, portable and moving devices with very limited battery consumption. PHY contains the transceiver and its control mechanism, whereas the MAC sublayer allows access to radio channels for all kinds of transfer. The standard also provides precision ranging permission modes. The standard IEE 802. 15 The 802.15.4 PHY layer manages the radio channel and controls packet data flow. The PHY layer is responsible to activate and deactivate the radio transceiver, detect energy within the current channel, indicate link quality for received packets, and assess a clear channel for Carrier Sense Multiple Access-Collision Avoidance (CSMA-CA), channel frequency selection, data transmission and reception. The core channel access method is CSMA-CA, but there are different variations in the standard.
The MAC layer of IEEE802.15.4 provides the interface between physical layer and application layer, and it has two components named MAC Management Service and MAC data Service. The first component looks after the management function like database control and the second component provides the data transport service between the peers. The MAC data service allows the transmission and reception of MAC Protocol Data Units (MPDUs) through the PHY data service. Common features of MAC layer include managing beacon, accessing channel, managing Guaranteed Time Slot (GTS), validating frame, acknowledging frame delivery, associating and disassociating. The 802.15.4 MAC layer allows both inbound and outbound data transfer and management by higher-level entities of the RF and PHY. The MAC sublayer provides access to the upper layers through two Service Access Points (SAPs). MAC-SAP manages the data while MAC Layer Management Entity (MLME-SAP) interface controls and monitors functions. The MAC layer is responsible for generating network beacons that permits devices to find an existing network, or, in the case of Time Division Multiple Access (TDMA) networks, it furnishes a timing indication for client devices to access the channel during both contention-based and contention-free periods. The MAC sublayer also provides interface for executing application-appropriate security mechanisms.

Network Models
In WSN, there are different types of scenarios, and therefore different types of network settings or structures are considered during the previous research works. Broadly, the network is divided into two types: single hop WSN and multi-hop WSN. Figure 7 illustrates a single hop WSN model where source sensor node and base station are separated by distance d. A single hop sensor network is called Single Hop Asymmetric Structure (SHAS) network under some assumptions. In SHAS structure, it is assumed that the central base station has access to power supply and possesses computational power, whereas sensor nodes are energy-constrained and computationally-constrained. The link from base station to sensor node is called downlink communication, whereas a reverse link from sensor node to base station is called uplink communication in the SHAS network.
A multi-hop WSN is showed in Figure 8, where source node and base station is separated by distance d and the data transmission from sensor node to base station passes n hops, and the distance between nodes is represented by d i where i varies from 1 to n. The model is termed as a linear sensor array model. When the hop distance is equal, it is called a linear multi-hop model with equal hop distances or a linear packet forwarding model. A slightly modified version of multi-hop WSN model is shown in Figure 9, where the distance parameter between nodes is removed and a new parameter is introduced called received SNR at a node that depends on the distance between nodes and other factors including Line of Sight (LOS) / Non Line of Sight (NLOS), communication channel, and operating frequency.

Channel Models
WSN has various types of applications and also has different types of nodes depending on application. The distance between two nodes depends on the application. The distance between nodes creates different types of communication links depending on distance, deployment scenarios, LOS and NLOS scenarios. In the practical WSN scenario, there exist various types of communication links between nodes. Therefore, various types of channel models are considered in the previous research works to present these communication links. These channel models are roughly categorised into two: theoretical model and empirical model.
AWGN is the simplest and basic channel model used in telecommunication, but this channel model is not suitable for WSN because this does not consider frequency selectivity, fading, interference, signal dispersion, etc. It is a suitable model for noise affecting wireless communication systems and deep space communication links. However, it is not a good model for terrestrial links in harsh industrial environments, due to multipath, terrain blocking and interference. Furthermore, [49] shows that impulse noise in industrial environments cannot be modeled only with AWGN. AWGN can be used in a wireless channel if there is LOS. However, the assumption of AWGN channel is not realistic in NLOS as there is multipath fading.
Fading in wireless communication conveys the variation of the attenuation of a signal with various parameters including time, geographical position, and frequency. Communication channels that experience fading are called fading channels, and the fading may be caused by multipath propagation, weather and some obstacles in the wave propagation path. The reflectors in the transmission path means that multiple signals can arrive at the receiver, but each copy of signal can experience different attenuation, delay and phase shift. Fading can be categorised as slow fading vs. fast fading or selective fading or block fading. Some of the popular fading channels are: Rayleigh fading channel, Rician fading channel, block fading channel, etc. As the nodes in most of the WSN are static, multipath fading has particular importance in WSN [50]. Other important phenomenon is shadowing, which can cause deep fade if the sensor is under the shadow of a tall building or similar structure.
Rayleigh fading channel [51] assumes that the magnitude of a received signal will vary randomly according to a Rayleigh distribution. The transmitted signal may take multiple paths to reach a destination due to reflections, scattering, and diffraction. Hence, a signal can be described as a Rayleigh fading channel when there are a large number of scatters, distractions or reflections, and there is no LOS path between the receiver and transmitter. If there is a dominant LOS component, then Rician fading is a good model.
In Block fading channels, the fading varies slowly in time. This model was introduced in [52] to model correlated slowly varying fading, and it is particularly useful in wireless communications' circumstances containing slow time-frequency hopping or multi-carrier modulation using Orthogonal Frequency Division Multiplexing (OFDM). Design criteria for codes in block fading channels are different from AWGN and a fully-interleaved fading channel. The main difference is that information is not stable in Block fading channels; reliability function is zero for any finite SNR [53].
Free Space Optics (FSO) is transmission of modulated infrared beams to implement optical wireless communication. FSO can operate over several kilometers when there is a clear LOS; however, it is highly susceptible to various impairments such as: atmospheric fluctuations, scattering, pointing errors and building sway [54].
In FSO communication systems, fading due to atmospheric turbulence can be modeled with gamma-gamma distribution. Error control coding can be applied to mitigate turbulence-induced fading in FSO [55].
In wireless communication, the loss of signal between the transmitter and the receiver is called path loss, and it is a major factor in wireless communication system design and analysis [56]. Generally, the path loss can be expressed in dB as Equation (9), where PL is total path loss, d is distance between transmitter and receiver, β is path loss exponent and C is other system parameter noise: The value of a path loss exponent varies significantly according to communication environment. The path loss exponent is two for free space during LOS communication between transmitter and receiver and up to six for obstructed in building propagation. It is an important parameter that represents the degree of path loss with respect to the distance. Path loss models are very useful for planning and predicting the loss of signal strength in a specific location of the propagating channel [57]. Furthermore, path loss models can be classified as either bounded or unbounded path loss model and details can be found in [58]. One of the popular path loss model used in WSN is the two slope path loss model that is validated by real measurements as well [59].
As it is difficult to generalize behaviour of WSN channels, many researchers have used empirical channel models and a real channel model (i.e., implementing WSN in a practical setting) to study WSN channel behaviours.

Review on Energy Consumption and Efficiency Model
Energy efficiency is one of the key issues in WSN. Several models and many techniques have been used to analyse energy consumption and efficiency of WSN in the literature. In this section, we will discuss an overview of the energy consumption model and available energy efficiency model. The total energy consumption on any sensor node constitutes several components including the energy spent by the electronics, start-up process, RF transmission, encoding and decoding. A radio model [60] is used to represent the energy consumption in a typical transceiver of a sensor node and is illustrated in Figure 10.

Single Hop Network
We introduce a network including single hop and multi-hop in Section 3.2. In this section, we will review on energy consumption and efficiency model for single hop WSN. An energy consumption model based on a radio model considering distance between sensor nodes and number of transmission bits is introduced in [60]. The proposed energy consumption model does not consider encoding and decoding energy consumption. Therefore, the model does not reflect all aspects of energy consumption involved in WSN. Another energy consumption model based on the radio model and incorporating encoding and decoding energy consumption is introduced in [61,62]. However, this model does not consider the distance between sensor nodes and number of transmission bits during energy consumption modeling. A communication link of a single hop wireless link between two nodes is illustrated in Figure 11 [63][64][65]. The energy consumption by sensor node for sending l bits over a single hop wireless link of distance d incorporating encoding and decoding energy consumption can be expressed as in Equation (10) [63,64]: e(l, d) = (e t (l, d) + P tst T tst + e Enc ) + (e r (l) + P rst T rst + e Dec ) (10) where e t (l, d) is the energy spent by the transmitter electronics, P tst T tst is the start-up energy of the transmitter (e st ), e Enc is the encoding energy cost per frame, e r (l) is the energy spent by the receiver electronics, P rst T rst is the start-up energy of the receiver (e sr ) and e Dec is the decoding energy per frame. Equation (10) is valid for both coded and uncoded systems. In an uncoded system, there is no encoding and decoding energy cost and the number of transmission bits is less than the coded system. The concept of energy efficiency (η) for a single hop wireless link is introduced in [36] with a packet format as illustrated in Figure 12, with length of preamble α, payload n and trailer τ. The energy efficiency captures both throughput (η e ) and reliability factors of a WSN link and is defined as in Equation (11): where r is the Packet Acceptance Rate (PAR) as a reliability factor. The packet acceptance rate is (1 − PER) and Packet Error Rate (PER) of a communication link depends on application of error control coding, distance between nodes and quality of channel. Let us consider a channel with error probability of BER of p, the reliabilities of an uncoded and coded system with t correction capability are given by Equations (12) and (13), respectively [36]: The energy throughput is based on packet format, energy cost associated with transmitter, receiver and RF transmission. The length of a preamble and a trailer can be considered fixed for a single standard. However, the length of payload can be varied with a single standard according to the specific application. The total payload is equal to information bits for an uncoded system, whereas the total payload is higher than information bits when FEC is used. The total payload for coded system depends on the code rate (refer to Equation (2)). The energy consumption per bit i.e., e b can be expressed as in Equation (14) [64]: If we assume that encoding energy is negligible, which is a good assumption for many WSN applications as we discussed in Section 2.2, Equation (14) is reduced to Equation (15): where e tx and e rx are the transmitter energy consumption per bit and receiver energy consumption per bit, respectively. By separating start-up energy consumption and energy consumption due to circuit and amplifier at transmitter and receiver, Equation (15) can be written as Equation (16): where e t and e r are representing energy consumption per bit due to circuit and amplifier at transmitter and energy consumption due to circuit per bit at the receiver, respectively. The parameters e st and e sr are representing transmitter and receiver start-up energy per frame, respectively. Considering transmission data rate of R b bits per second, the parameters e t and e r are defined as Equations (17) and (18), respectively: Therefore, the overall energy efficiency of a communication link of a single hop wireless link (assuming that encoding energy is negligible and no re-transmission applied even when decoding failure is detected) can be written as Equation (19) [36]. It shows that the energy efficiency depends on reliability factor, payload length and decoding cost (depends on ECS used or not, types of ECS if used): η = η e r = n(e t + e r ) (n + α + τ)(e t + e r ) + e st + e sr + e Dec (1 − PER) In [36], Sankarasubramaniam et al. present the energy efficiency as a function of packet size for uncoded, BCH code (with different error correction capability) and convolutional code with different code rate. In this analysis, the authors consider a communication link with binary orthogonal non-coherent frequency shift keying modulated data on a frequency non-selective, Rayleigh fading channel.
The energy efficiency for ARQ (considering re-transmission and packet frame size) and BCH code as FEC is derived in [66], and this work is an extension of [36]. The paper claims that the energy efficiency of ARQ is independent of re-transmission attempts and is an optimum BCH i.e., error correcting capability for a certain packet size and communication distance. Finally, this paper compares energy efficiency of ARQ and BCH with different packet sizes and communication distances. The results are based on Mica2 sensor node, ATmega128L processor and CC1000 radio module.
Karvonen et al. evaluate energy efficiency of DC-balanced error correcting codes by introducing Manchestor code before ECCs (including BCH, Golay and SECDED) in a single hop model [63]. This work is an extension of [36], but there is no clarity whether the decoding cost is used or not in the energy efficiency results.
In [67], Donapudi et al. introduce a transmission cost model based on packet loss-ratio (p t ) and the cost of transmission of a packet over ideal network C t with a single hop. The total transmission cost for transmission of a packet over a network is given as Equation (20). This transmission cost model can be used for both uncoded and coded systems with convolutional code and Viterbi decoding. The paper compares transmission cost versus transmission distance of single hop for uncoded and coded system. The cost of transmission over an ideal network is measured on Mica2. The energy cost of transmitting (C t ) is estimated using average current drawn by Mica node and packet length but does not incorporate encoding energy cost. The result indicates that the cost of transmission is higher while using coding compared to uncoded, as distance between nodes is less than 30 m. However, the proposed coded system consumes significantly less power compared to uncoded system when the distance between nodes lies between 30-40 m. The results indicate that the cost of transmission using half rate convolutional code is more efficient than the uncoded system only when the distance between nodes is more than 35 m: A web based tool for software energy profiling, called JouleTrack, is introduced in [68]. This tool is available as an online resource that can be used to estimate instruction energy consumption and overall energy consumption for programs evaluated on the StrongARM SAA-1100 and Hitachi SH-4 microprocessors. The key disadvantage of using this tool is that the tool is not updated according to the changes in sensor technologies.
Balakrishnan et al. estimate power consumption in Field Programmable Gate Array (FPGA) using Xilinx Integrated Software Environment along with Xilinx Power using Xilinx Virtex-EXCV200E6CS144 and in Application Specific Integrated Circuit (ASIC) is based on Synopsys's Design Compiler and Design Vision [69]. The power analysis is performed using VHDL design using technology independent components. The power report is generated after compilation using power constrained scenarios. Finally, a report is generated to estimate power consumption in both technologies, and it is found that the power consumption in ASIC implementation is much less than FPGA implementation [69]. The outcomes from this paper is experimentally based and good at the time of research. However, those results need to be updated according to recent changes in ASIC and FPGA technologies.
In [70], the authors compare the performance of decoders without considering transmission, electronics and encoding cost. The paper introduces a measure called Decoding Energy per Bit (DEB) and savings on transmit energy per bit metrics. DEB is evaluated using decoder power consumption, decoding throughput and power supply voltage. The paper presents DEB and savings on transmit energy per bit for RS and convolutional code. The paper claims that the use of FEC is not energy efficient for a short distance due to encoding and decoding overhead. The paper further claims that RS code with efficient implementation can reduce energy consumption of sensor node. However, these claims are superficial as the results are based on DEB, which does not consider transmission cost.
In the SHAS network (as discussed in Section 3.2), it is assumed that a central base station has access to power supply and possesses no computational and power constraints. Thus, the decoding cost and any other energy cost at the base station do not need to be considered in the SHAS network. Therefore, the energy consumption model or energy analysis only need to be considered only at the sensor node but not at the base station. Therefore, the energy efficiency equation (i.e., Equation (19)) reduces significantly for a SHAS network. The energy efficiency analysis and model used for a multi-hop network is entirely different and need to be handled differently.

Multi-Hop Network
As we discussed in Section 2.3, there is re-transmission involved in HARQ. Therefore, the total energy for a system needs to incorporate re-transmission factor (N rtx ). The re-transmission factor depends on Frame Error Rate (FER) of the channel and is equal to 1/(1 − FEC). Then, the total energy consumption by HARQ system incorporating re-transmission factor is written as Equation (21) [56]: where E f rame Dec is the energy consumed to decode a frame and E f rame trans is the energy consumption due to transmission and reception of the frame. In [56], Pellenz et al. utilise standalone FER performance of convolutional code over Rayleigh fading channel with different memory order system to evaluate (N rtx ). The value of E f rame Dec is computed theoretically using trellis complexity and practically using a TMS320C54x DSP platform. However, the value of E f rame trans calculation is not clearly explained. The normalised energy consumption versus encoder memory order of convolutional code for several SNR ranges from 0 to 10 dB is presented. Finally, the optimal memory order of convolutional code is determined to minimise the energy consumption. The paper evaluates normalised energy consumption due to uncoded codes (with memory order of 2 and 8) and codes with optimised memory order for multi-hop networks (refer to Figure 9). The findings conclude that the convolutional code with optimised memory order according to average SNR at the node reduces overall power consumption compared with uncoded and coded with fixed memory order. The normalised energy consumption calculation in the whole paper does not consider the cost of adaption.
In [63,65], Karvonen et al. evaluate the energy consumption per information bit for multihop linear sensor model neglecting startup, encoding and decoding energy cost. These papers also calculate optimal number of hops and characteristic distance for multihop linear sensor models. In [63], Karvonen et al. present energy consumption against bit error probability for Hamming and Golay codes assuming linear array of 1000 m with different numbers of hops i.e., several hop distances. The work in [65] is similar to [63] in a multihop linear sensor model scenario with the addition of BCH codes. The results from these two papers indicate that error correction code is useful when channel condition is poor and energy consumption is at a minimum when the distance between nodes is close to the characteristic distance. In [63,65], the reliability calculation based on Rayleigh fading channel with FSK modulation and non-coherent detection. The paper lacks clarity on how the expected energy consumption per information bit calculated. The conclusion drawn from these papers are based on neglecting startup, encoding and decoding energy cost. However, these costs can not be neglected in most of the WSN cases. The energy efficiency model considering a re-transmission mechanism is introduced in [71]. This model is based on packet error probability of frame as a reliability factor (including uncoded and BCH coded system). The decoding cost is measured on the number of instructions to execute a BCH decoding algorithm. The calculation is based on Rayleigh fading channel and OQPSK modulation considering coded and uncoded systems for both single hop and multi-hop networks. Table 1 shows a summary of energy consumption and efficiency model for both single hop and multi-hop WSN networks.
In practical WSN applications such as home and industry automation, building monitoring and health care monitoring, there exists an SHAS network structure, as some WSN nodes are not energy and computationally constrained. However, there is a lack of research work to develop energy efficiency and a consumption model for an SHAS network incorporating capacity approaching ECC (refer Chapter 2.2) such as LDPC and Turbo codes. Another key finding from the review is that there are significant changes or developments on sensor node technology, but there is a lack of a new energy consumption model to adopt those changes.

Review on ECS Methods on WSN
In this section, we review ECS introduced for WSN in the literature. We broadly classify ECS introduced for WSN in three areas: FEC, adaptive techniques and other techniques. First, we will review FEC only followed by adaptive techniques and other techniques.

FEC
FEC techniques introduced for WSN are broadly divided into two areas: FEC for SHAS WSN and FEC for generic WSN. In this section, we review FEC introduced for SHAS WSN first and then FEC introduced for WSN in general.

FEC for Single Hop Asymmetric Structure (SHAS) WSN
First, we review FECs introduced by research papers for SHAS WSN (refer to Section 3.2 for a brief introduction of an SHAS WSN network). In [72], an asymmetric code concept is introduced for single hop WSN with an SHAS structure where the uplink and downlink communications are treated differently. In downlink, high transmission power is utilized at the base station. No FEC is used; only CRC is used and error correction is performed by ARQ. A highly efficient channel coding with low encoding complexity and high decoding complexity in the uplink is used. The proposed FEC code for the uplink is convolutional code with soft-decision Viterbi decoding. Zhong et al. discuss how the SHAS approach can be utilized to reduce power consumption at energy-constrained sensor node and its suitability for centralized MAC design. The paper also compares power consumption (using power consumption model based on [73]) in the uplink between the proposed concept and simplified multi-hop structure without considering several factors such as spatial diversity, data aggregation, etc. The paper claims that the SHAS with convolutional coding in the uplink consumes less power than a multi-hop structure with the same code when distance between nodes is less than 175 m. The paper introduces the use of receiver diversity (by using redundant base station) and the use of multiple transmitting antennae at the sensors to combat slow fading channels.
In [74], Ye et al. introduce RA codes in an unbalanced WSN, i.e., WSN with SHAS where the uplink and downlink utilize different error correction techniques. The paper presents BER performance of uncoded, RA and Irregular RA (IRA) (with different code rates) against E b /N 0 over an AWGN channel with no interference. The BER results indicate that there is coding gain as expected. This BER result is a standalone simulation outcome over an AWGN channel and does not consider a WSN scenario. Power consumption at sensor nodes versus distance between nodes is presented for coded systems including RA and convolutional code using SHAS and multi hop structure (similar to [72]). The power consumption model is based on coding gain and path loss model. The simulation result confirms that RA code outperforms the convolutional code in the simulation setting.
In [75], Maunder et al. introduce another way of utilizing properties of SHAS to redistribute energy consumption at WSN with SHAS. In this paper, a complex decoding algorithm (i.e., iterative decoding with a soft decision from a channel using an BCJR algorithm) at base station and rate-1 encoding at an energy-constrained sensor node is considered for an SHAS WSN network. The concept presented in this paper is similar to [72], and the only difference is encoding and decoding techniques used in the simulation setting. Another variation is that the result is presented in terms of coding gain.
The assumption of AWGN channel with LoS between nodes is not a realistic situation for practical WSN, and it is only valid for limited applications.
In [76], Schidt et al. present experimental results (energy consumption and error rates (BER, FER and Message Error Rate (MER)) using MICAz hardware on SHAS WSN using several error correction schemes including repetition code and simplified turbo code. The concept presented in this paper is similar to [72]. The difference is that there are different codes including uncoded, modified turbo codes and repetition code are used in experimental settings. The results are presented in terms of overall energy consumption and energy consumption per successful message for convolutional code, repetition code (rate 1/3 and 1/6) and modified turbo code (1/6). The total measured power consumed by modified turbo code is significantly less than repetition code and uncoded system. There is no clear explanation on experimental settings such as the distance between the nodes. The result indicates that the use of re-transmission is reduced significantly by the use of strong code (which is so obvious as FEC reduces BER) and saves power consumption in sensor nodes in WSN with SHAS. Table 2 shows a summary of FEC based ECS for SHAS structure. The review conducted on FEC used in SHAS WSN indicates that there are limited works on the use of ECS in SHAS structure, and found that there is no recent research work reported in the literature. As SHAS WSN is a practical WSN for home and industry automation and the use of capacity approaching codes such as LDPC, turbo and RA codes in SHAS WSN has huge potential, there is a need for further research work on the use of strong and capacity approaching codes (such as LDPC and turbo codes) in SHAS WSN.

FEC for WSN
In this section, we review FECs introduced by research papers for general WSN. In [77], Jeong et al. present experimental results (packet drop rate, distribution of burst bit errors and distribution of burst packet errors) of several codes including two versions of SECDED and DECTED under outdoor and indoor environments. The nodes are separated 182.9 m apart and are in LoS in outdoor environments. However, the indoor setting of sensor nodes is not clear regarding LoS and distance between the nodes. The paper claims that both versions of SECDED are able to achieve packet drop rate to zero when nodes are 182.9 m apart and are in LoS in outdoor environments. The results for indoor settings are unclear. The reason for performance variation between SECDED (13,8) and SECDED (30,24) is clearly explained. However, the poor performance of DECTED is not clearly explained. Experimental results for one indoor setting (location three) shows that uncoded, SECDED (13,8) and DECTED (16,8) have zero packet drop rates, but SECDED (30,24) has poorer performance than the uncoded system. The authors did not mention the reasons behind those results in the paper. In an experimental setting, Jeong et al. mention that the same packet is transmitted 5000 times, and it is not clear what types of bits on packets are transmitted. It is not clear whether there is any impact of data packets on the performance of specific codes or not.
Kashani and Shiva examined energy efficiency of uncoded and BCH codes with different correction capabilities in multi-hop WSN considering different packet length [78]. The simulation is performed in a linear packet forwarding model where distance between end-node and sink is 100 m and considers a single-hop to 20 hops (with uniform distance between nodes) scenarios. The energy consumption model is based on [68]. Overall, the paper claims that communication using longer packets is more energy efficient than the shorter packet. In addition, Kashani and Shiva claim that the need for error correction decreases as the number of hops increases. Therefore, an uncoded system is more energy efficient than a coded system in densely populated multi-hop WSN. Kashani and Shiva extend their work of [78] to [79] to compare the performance of RS, BCH, and convolutional code with different error correcting capabilities. The paper claims that RS code is the most energy efficient among them. The efficiency of RS code with large error correcting capability is better than an RS code with small error correcting capability when the number of hops is less than 10. However, the efficiency is similar when the number of hops is more than 10. The energy efficiency of convolutional codes is better than other codes only when the distance between nodes is more than 33 m. The uncoded system is more energy efficient than a coded system in densely populated multi-hop WSN i.e., when the distance between nodes is 5 m or less.
In [67], the paper presents results from experiments of WSN using Mica2 node and TinyOS applications. The paper presents measured results of packet lost, corruption rate and cost of transmission against transmission distance for uncoded systems and coded systems with convolutional code using Viterbi decoding. The distance between nodes varies from 0 to 40 m, but it is not clear whether or not LOS exists between the nodes. The net cost of transmission for each packet using FEC and uncoded system is evaluated using Equation (20).
Balakrishnan et al. present error control analysis, decoding complexity and power analysis of several codes and sensor node in [69]. The error control performance of RS, BCH and convolutional code is presented in terms of BER versus E b /N 0 with different rates over AWGN channels [69]. These results are standalone performance of these codes. The paper measures encoding and decoding complexity in terms of number of slices required and power consumption in terms of dynamic power per bit during implementation of those codes in FPGA (Xilinx Virtex-E XCV200E6CS144). The result indicates that the complexity of encoder and decoder of BCH and RS codes increases linearly as the number of parity bits increases. However, the complexity of Viterbi decoder increases very sharply as the memory order increases. The result also indicates that the encoder of convolutional and BCH codes are less complex than RS codes. Additionally, the paper measures power consumption in terms of power per bit of these codes in ASIC settings. In ASIC, power estimation is performed using Synopsys's design compiler and design vision using technology independent components. Balakrishnan et al. claim that ASIC implementation consumes less power than FPGA for the same code. Therefore, ASIC implementation is further analyzed. Finally, the power consumption per bit incorporating encoding, decoding, transmission and receiver cost at sensor node using Equation (4) is presented for all codes with different code rates with the distance between nodes of about 22 m. The paper claims that power consumed by BCH and RS codes is less than uncoded systems. However, the power consumed by convolutional code with Viterbi decoding is more than uncoded system. Therefore, Balakrishnan et al. claim that linear cyclic codes consume significantly less power than uncoded systems, and it is suitable for error correction on WSN. However, the paper presents power consumed after introduction of FEC, but there is no clarification on how it is measured. Additionally, the choice of using the distance between nodes of 22 m is not clear.
In [15], Vuran and Akyildiz perform comparison analysis of ARQ, FEC and HARQ types I and II (FEC as both BCH and RS) schemes in terms of energy consumption, decoding latency. The paper claims that the selection of the error control scheme depends on physical architecture of WSN, node distance and expected reliability.
Islam analyzes error characteristics of channels for WSN using Mica mote and also simulates BER versus E b /N 0 and evaluate power consumption by several codes in [80]. The analysis for error characteristic of channel indicates that most errors are single bit or double bits error and burst error is rare. However, there is no clarity of the experimental setting such as how the channel measurement is performed and whether there is LOS or NLOS between the nodes. There is no clarity of how power consumption is evaluated or measured for several RS codes. There is a lack of clear connection between the energy model presented in the paper and power consumption presented for several RS codes. Islam presents standalone BER simulation results for several codes including uncoded and several FECs. However, there is no clarity about types of channels used for the BER simulation result.
Singh and Kumar illustrate an efficient implementation of quasi cyclic code to save energy consumption that can be used for WSN in [81]. The paper demonstrates the working principle of implementation of quasi cyclic code and claims that the proposed implementation of quasi cyclic code reduces re-transmission and saves energy. However, the energy analysis is limited to an example only, and there is no analytical result.
As we discussed in Section 4.2, a model to measure energy efficiency is introduced in [71]. The paper claims that error detection using CRC without ARQ is necessary when the channels between sensor nodes are good (i.e., SNR > 25 dB) and have few hops. However, it is not clear how reliability is maintained without any error correction scheme. The paper claims that re-transmission is necessary when the channel between nodes are bad (i.e., SNR < 20 dB) and have larger number hops. There is no clear understanding and conclusion from the results. For example, what is the use of BCH code in the proposed simulation?
Nayak presents the performance analysis (energy per bit against distance and overhead versus probability of error) of LT and BCH codes in RF and FSO communication link [82]. The paper presents decoding power consumption versus distance for BCH and Luby Transform (LT) codes under RF channel (considering AWGN and LOS) and FSO channel (considering different Gamma-Gamma distributions for turbulences). However, the paper does not consider power consumption due to encoding and transmission of extra redundant bits. Under those considerations, Nayak claims that the performance of LT code is poorer than uncoded systems for the distance between nodes from 0 to 400 m for the RF channel. However, LT code with optimal erasure method is energy efficient for an FSO channel with moderate and strong turbulences. The results presented are standalone results of different codes without considering WSN setting.
Nithya et al. present simulation results of BER and energy spent per bit versus SNR for BCH and cyclic codes under the Rayleigh fading channel [83] considering IEEE 802.15.4 standard. The BER results for various codes with different rates presented are against SNR instead of E b /N 0 . Hence, the results do not take the code rate into consideration i.e., do not consider the overhead caused by ECS. Therefore, the discussion of coding gain for several codes are not accurate. In addition, energy spent per bit calculation considers only transmission of total bits, but it does not reflect power consumption of encoding and decoding. Therefore, the results presented are not accurate and do not reflect several aspects.
Abughalieh et al. introduce SCCC for a multi-hop WSN scenario [84]. A non-recursive convolutional outer encoder and a recursive convolutional encoder are used in the proposed SCCC. These encoders are separated by a random interleaver. In the proposed error correction method, Viterbi decoding and encoding for inner code is applied at each intermediate node and does not need to do anything for outer code. Turbo decoding is used at the destination node as base station on assuming that base station does not have energy and computational constraints. The additional power consumption (due to encoding and decoding at each intermediate node) by the proposed code and error correction method for multihop WSN [84] is performed using measurement data from [69]. They also calculate transmission and reception energy consumption by coded and uncoded system analytically separately. Abughalieh et al. display total power processing power consumption (numerical) versus the number of hops and claim that there is a linear increase of total processing power as the number of hops increases. However, there is no clear explanation of how total processing power is evaluated as power consumption due to transmission and reception is in analytical form, and power consumption due to encoding and decoding is in numerical form.
In [84], the paper considers three scenarios: uncoded using ARQ, intermediate nodes are not decoding the packet and Viterbi decoding and encoding for inner code applied at each intermediate node for results presentation. There is confusion between interleaver size and symbol size during result presentation and discussion. However, how inner and outer code is used in SCCC during BER simulation is not clear as results are presented for outer codes only and inner codes only. The final simulation result of BER versus SNR shows that BER lies between 0.3 to 0.5 which is a high BER for any communication system. However, the paper claims that the proposed SCCC can correct most packets with 2 to 5 hops WSN at low SNR that is contradictory to BER results presented in the paper.
Another paper presents error pattern analysis WSN 2.4 GHz channel using hardware implementation of CC2520 RF transceiver as node [85]. The experiment is conducted in several settings over the range of 0 to 60 m between two nodes, but there is no clarity whether or not LOS exists between the nodes. The experimental results indicate that there is more burst errors than random errors, but the rate of occurrence of burst error is very small when burst length exceed 50 bytes. Then, the paper introduces shortened RS (114, 50) code derived from RS (255, 191) to tackle bursty errors based on the experimental result. Then, PER versus distance and RSSI is measured using RS code and uncoded system using an experimental setting. Tan et al. claim that the proposed RS code is able to improve transmission distance by about 5 m compared with WSN without error correction at PER of 10 −3 . The results from PER versus RSSI showed that the RSSI can improve by about 13 dB by using error correction at the same target PER of 10 −3 compared with WSN without error correction. However, the cost of encoding, decoding, transmission and reception cost of extra bits due to redundancy is not considered during this result presentation. Therefore, the results from this paper is very obvious as PER is reduced due to introduction of error correction.
In [86], Chowdhury et al. analyse the impact of BCH and RS codes with different error correction capabilities on characteristics distance in a linear multi-hop model with equal hop distance. The paper considers two cases: decoding at all nodes and only at the destination node over all nodes transmitting and a single node transmitting situations. The characteristic distances for those scenarios are analytically calculated in terms of energy consumptions by different factors. Then, the paper presents results as characteristic distance versus bit error probability for those scenarios. However, the bit error probability calculation in the paper is generic in terms of average SNR not E b /N 0 . Therefore, the bit error probability does not incorporate any effect of error correction capability of BCH and RS codes. The paper concludes that hop distance increases when all intermediate nodes are decoding in both scenarios. However, there is no impact on hop distance when decoding is only done in destination node in both scenarios.
In [87], Subhagya et al. introduce use of LT code for wireless multimedia sensor network for image transmission. The paper evaluates peak SNR and structural similarity index metrics for RS and LT codes considering a binary erasure channel with different erasure probability. The simulation results based on MatLab indicate that LT codes are significantly better than RS code. However, there is a lack of clarity about code rate of those codes and energy efficiency analysis between these codes.
The summary of the review of FEC based ECS for WSN is presented in Table 3. One of the key findings from the review is that the use of a realistic network model to represent WSN in a practical setting is lacking. As the distance between nodes in WSN in a practical setting is not equal, a modified multi-hop WSN model is a more realistic network model. However, most of the previous work on the design of ECSs and energy analysis is focused on a multi-hop WSN model and very limited research work conducted on a modified multi-hop WSN model. Therefore, researchers need to focus on design and energy analysis of ECSs on modified multi-hop WSN model to cover realistic network situation.
Another key finding is that there is a lack of enough experimental results using currently available WSN node.

Adaptive Technique
We introduce channel adaptive techniques in Section 2.4 to combat a time varying channel. In this section, we review adaptive ECSs introduced by researchers for WSN and broadly classified into two areas: Single hop and Multi-hop networks.

Single-Hop Network
In [88], Jin et al. perform mathematical analysis of energy efficiency of RS code, ARQ and HARQ (RS code and ARQ) considering a Mica 2 series WSN platform. The energy efficiency analysis based on Equation (11) where decoding energy cost for RS code is evaluated using the number of operations involved during the decoding. The paper claims that ARQ is optimal when the distance between nodes is less than 40 m, whereas HARQ performs better than ARQ and RS code when the distance between nodes is more than 40 m. Then, Jin et al. introduce an adaptive error control mechanism called the Adaptive Error Control RSSI (AEC-RSSI) method, which is based on energy efficiency and Received Signal Strength Indicator (RSSI). RSSI is used to estimate the distance between nodes assuming log-normal shadowing model. Then, the distance between nodes is used to select the error correction technique. In AEC-RSSI, ARQ is used when the distance between nodes is less than 40 m; otherwise, HARQ is used. The energy efficiency result indicates that AEC-RSSI performs better than different ECS (including ARQ, RS code and HARQ) over all ranges from 0 to 60 m.
Liankuan et al. introduce adaptive BCH code with different error correction capability called BCH versions [89]. The paper outlines an adaptive algorithm to choose a BCH version for communication and also outlines how the initialization of BCH version is conducted. The use of BCH version is determined by percentage of packets in which bit errors are less than, equal to and more than error correction capability of BCH i.e., t. The paper outlines a bit error rate vector to exchange bit errors status and a version used between sender and receiver. The adaptive algorithm is implemented in real WSN with sender and receiver 65 m apart and LOS exists between nodes. The paper outlines the experimental setup and the result in terms of version changes and bit error rates during the experiment. The results are compared with adaptive BCH and different versions of BCH codes.
In [90], Sharma et al. present a framework for selection of ECC in WSN. However, the framework lacks clarity and followed by standalone BER performance of uncoded, convolutional code, Hamming code, Goley code and Reed-Solomon code against E b /N 0 . Additionally, the paper presents power consumption by several RS codes, but there is no clear connection between the energy models introduced earlier in the paper. Therefore, there is no clarity on the outcome of the paper.
In [91], AL-Suhail et al. propose BCH based adaptive error correction code where the code rate of BCH code varies according to distance between nodes and ACK. The energy efficiency against communication distance for BCH code and the proposed adaptive code results are compared. The results are based on Mica 2 series WSN platform and considering a Rayleigh fading channel. However, the simulation setting is not clearly explained. The paper claims that the proposed adaptive code is more energy efficient than non-adaptive code.
In [92], Sasikala et al. introduce adaptive LDPC code with SPA decoding for WSN. The code rate of LDPC is adapted according to required BER or QoS, received SNR and data rate demand. The LDPC code rate varies among 1/3, 1/2 and 3/4. The LDPC encoding complexity is discussed in detail, but it lacks discussion of decoding complexity which is very crucial for complex LDPC decoding as discussed in Section 2.2.3. Additionally, the energy consumption at the transmitter and the receiver for bit transmission is presented using µAMPS-1 Mote. However, how the decoding energy consumption LDPC decoding with SPA is measured is not clear. Sasikala et al. present a comparison of BER results of LDPC, proposed code and uncoded system without specifying channel SNR range, which is a very critical parameter for wireless channels. Another key issue in the paper is the use of LDPC code with SPA as decoding algorithm. As we discussed in Section 2.2.3, SPA is one of the complex decoding algorithm in the industry. However, how the use of this complex algorithm with energy and computationally constrained node of WSN is possible is not justified. Additionally, the results are also not compared with other codes.
There are two major findings from the review. First, there is a limited research work on the effect of using extra works (channel estimation, reverse link for channel estimation update at the transmitter from receiver) associated with an adaptive technique while implementing in a practical setting. Therefore, researchers should incorporate this extra power consumption during energy analysis while implementing adaptive techniques. Another key issue is the practicality of re-configurable transmitters and receivers at the energy and computationally constrained WSN node. There is no research work reported on this issue.

Multi-Hop Network
Pellenz et al. analyze trade-off between transmission and processing energy consumption in multi-hop sensor nodes (refer to Figure 9) using adaptive convolutional code combined with Stop-and-Wait ARQ [56]. Pellenz et al. put forward adaptive convolutional code with optimized code complexity for each transmission hop. The encoder memory order is used to alter the complexity of code and error correcting capability. The adaptability of convolutional code is performed by selecting optimal memory order according to received SNR value. The paper claims that there is a significant energy saving while using proposed adaptive code when compared with the use of conventional convolutional code with fixed encoder order and uncoded system combined with Stop-and-Wait ARQ in the same setting. The paper does not outline feedback mechanism and channel estimation techniques for adaptation.
In [35], Ez-zazi et al. propose an adaptive error control scheme consisting of LDPC as FEC, ARQ and CRC for multi-hop scenarios. Source nodes encode data using LDPC encoding and then calculate CRC of the encoded data. Then, the transmitter sends the encoded packet to next node using Minimum Transmission Energy (MTE) (refer to Figure 8). At the intermediate node, CRC is used to verify the quality of the encoded packets. If there is no error during CRC check, the packet will be transmitted to the next node. If CRC check finds an error, the intermediate node decides either to decode using LDPC or re-transmit based on the distance between nodes. If the distance between nodes is less than crossover distance, retransmission will be performed; otherwise, decoding is performed using LDPC decoding. The paper advises that the distance between nodes is estimated using RSSI and also discusses theoretical aspects of crossover distance calculation for LOS and NLOS situation. However, how the distance between nodes is determined using RSSI and crossover distance in simulation settings is not clearly discussed. Another key weakness in this paper is total energy calculation while using LDPC code at the intermediate node. During energy calculation, energy consumption of LDPC code using an BP algorithm is used once, which is not accurate according the algorithm described. However, it is not clear how this energy consumption is used to evaluate total energy consumption in the proposed adaptive coding scheme using multi-hop scenarios. Additionally, the paper does not outline the code rate of LDPC code used in the proposed scheme and does not consider the effect of code rate in the energy consumption model. Therefore, there is an issue regarding how total energy is computed during the simulation. The paper claims that the approach optimizes both energy consumption and reliability of WSN, and the proposed adaptive ECS performs well in all settings. The authors present total energy consumption of WSN versus network lifetime in 50 m 2 and 200 m 2 areas with 50 homogenous sensor nodes, but there is no output or result from a reliability aspect. The results in the paper clearly show that uncoded scheme performance is best among all. Therefore, the claim is not clearly supported by results.
In [37], Ez-zazi et al. propose an adaptive error control scheme consisting of two error correction codes: LDPC and RS codes for multi-hop scenarios. The energy model for multi-hop WSN is estimated considering that the transmitter sends the encoded packet to the next node using the MTE algorithm. In the proposed scheme, a node needs to choose between LDPC and RS code according to the distance between nodes and crossover distance. There is a lack of clarity about code rate of LDPC and RS code.
The key drawback of this paper is energy estimation. The estimation considers a one time decoding cost of LDPC and RS code instead of multiple decoding of codes involved in multi-hop scenarios. Therefore, the claim of efficiency and reliability of the proposed system can not be independently verified.
In [93], Singh and Pesch introduce the use of a soft-decision decoder called adaptive chase-2 decoding for a BCH code in multi-hop networks. The paper presents decoding energy consumption for BCH codes with standard chase and adaptive chase. The paper claims that adaptive chase consumes significantly higher energy compared with others. The throughput result of the proposed code is better than the others in most cases. However, there is a lack of comparison with other error correction codes.
In [94], Eriksson introduces adaptive hybrid-I BCH code (assuming that CSI is available) for process industry setting. The thesis investigates energy efficiency and latency of ARQ and the proposed adaptive code. The numerical analysis is based on AWGN and Raylaigh fading channel. The paper concludes that the proposed adaptive hybrid BCH code is energy efficient compared with ARQ. Table 4 shows a summary of adaptive ECS for WSN. As discussed in Section 5.1.2, a modified multi-hop WSN model is a more realistic network model. However, there is very limited work on design and energy analysis of ECS on this model. Therefore, researchers need to focus on design and energy analysis of adaptive ECSs on a modified multi-hop WSN model to cover a realistic network situation. As we discussed in Section 5.2.1, the researchers need to focus on the cost of extra energy consumption due to adaptive techniques, and it should be incorporated in energy analysis. Finally, the researcher should do more work on the design and implementation of re-configurable transmitter and receiver at the energy and computationally constrained WSN node.

Other Techniques
In this chapter, we briefly mention other techniques used in error correction in WSN. However, we are only reviewing BICM techniques used in WSN error correction. Network coding is utilised in error correction and energy saving in [95,96]. Finally, residual numbering is utilised in error correction and energy saving in [97].
We introduce BICM techniques in Section 2.5 and the researchers evaluate the use of this technique in WSN for performance and energy analysis [98][99][100][101]. In [98], Madkour [101].In this experiment, the authors use RS code as FEC with bit and symbol interleaving. However, the type of interleaving and modulation techniques used in the experiment are not clearly explained. The paper concludes that there is no significant improvement on packet salvation ratio (performance measure) by using interleaving in multipath fading environments. The paper also did not present energy analysis of the proposed BICM technique. RS code is used in the proposed BICM technique and the code has simple encoding decoding techniques. Therefore, the results presented on the paper can be justified even though there is no energy analysis result available.
Kinoshita and Ochiai presented BICM techniques using regular LDPC code with 61-QAM and AWGN channel considering an SHAS network [99]. The paper presented an energy consumption model without considering decoding cost, which is valid as we discussed in Section 4.1. In addition, this paper presented optimal constellation size and transmit energy versus distance between nodes for various block lengths. Those results are supported by information theoretic analysis. However, there is no explanation regarding what type of decoding algorithm is used for LDPC decoding.
In [100], Wang et al. consider the use of BICM techniques in WSN where the authors use convolutional code (corresponding Viterbi decoding) followed by a pseudo random interleaver, BPSK modulation and AWGN channel. The paper considers short packet length varying from 100 to 1000 bits. PER results for those settings are presented for different block lengths with and without interleaving. The PER results indicate that the use of convolutional code and interleaving for short packet length decreases the reliability of the communication link. These concluding remarks from the paper are difficult to understand, and there are no reasons provided by the authors. The PER results are standalone results without considering WSN scenarios. The use of AWGN channels for WSN is only realistic if LOS exists between nodes.
Our brief review on the BICM technique used in WSN indicates that there are limited investigations in these areas, and the outcomes from the review are also contradicting. The results from two papers showed that the use of BICM in WSN does not enhance in reliability significantly [100,101]. We found that there is a lack of energy analysis using BICM in WSN. Therefore, we expect further research on performance and energy analysis of BICM in WSN.

Future Research Challenges and Opportunities
WSN has wide ranging applications including military, monitoring of health and environment, industry and home automation. Those applications require different levels of reliability and data rate, and it also requires covering varying communication distance depending on the applications.Therefore, one static solution does not fit for all applications. Hence, the future ECS should be dynamic and adaptive to handle a variety of WSN nodes, reliability requirements and communication channels. Thus, the researchers should focus on integration of software-defined radio concept [102][103][104] in the context of adaptive ECS design and implementation in WSN.
The efficient design and implementation of ECS in WSN should exploit node constraints and channels. The exploitation of node constraints and channels is possible in SHAS WSN structures. Those structures practically exist at home and industry automation, building monitoring and Wireless Body Area Network (WBAN), where the distance between nodes is smaller and the base station node is not energy and computationally constrained. Therefore, the researchers need to do more work on energy efficiency analysis and ECS design using capacity approaching codes (such as LDPC, RA and turbo code) in SHAS structure.
Hence, the following research areas need to be examined further in order to design efficient ECS. This can be achieved by introducing dynamic and adaptive features in WSN.

•
Dynamic and adaptive ECS design based on the software-defined radio in order to support variety of nodes, channels, and QoS requirements in WSN.

•
Scholarly work addressing the use of power adaptive techniques at the transmitter in ECS design in WSN is not found. We advise researchers to investigate the use of power adaptive technique in ECS design.

•
Our review on adaptive techniques used in ECS design for WSN in Section 5.2 found that many techniques have been analysed in terms of communication link performance. The adaptive process demands additional tasks during implementation. However, the impact of using those additional tasks in energy consumption is lacking.

•
As we discussed in Section 3.1, WSN is implemented in an unlicensed frequency range, and there is a significant interference due to other wireless networks including WSN, WLAN and WBAN. Therefore, the efficiency of ECS for WSN in practical situations depends on interference from other systems. Further research is expected to analyse the efficiency of ECS for WSN in practical and real-life settings with interference.

•
Our review on the energy consumption model in Section 4 indicates that most of the research work conducted was based on old hardware. However, there is new hardware available in the market and this new hardware will be mostly used in the future. Hence, more research work is recommended on energy consumption models in order to keep pace with new developments in sensor nodes.

•
To design and implement ECS for WSN, researchers need to do more work on network modelling to incorporate practical WSN which extract several parameters such as wireless channel, node feature, reliability and data rate.

•
Another challenge is to verify ECS design for WSN in practical settings. Most of the previous work is completed in isolated situations or using theoretical channels. Therefore, the creation of experimental settings that resemble various WSN application scenarios is a challenge but requires some further work.
Furthermore, Table 5 illustrates the summary of key issues, opportunities and challenges in ECS design for WSN.

Conclusions
In this paper, we presented an overview of various types of ECSs used in literature for WSN. In order to determine the challenges for ECSs, detailed research study is conducted on WSN channel model, network model and standards as they are crucial for the designing and implementing efficient ECSs. The review on the proposed energy consumption and efficiency models for WSN indicates that existing research work has not considered SHAS with high performing ECCs. Further review on ECS design for WSN indicates that there are no sufficient research publications on ECS design on a practical network model i.e., modified multi-hop WSN model. Finally, we highlighted future research opportunities where WSN ECS design and implementation can be improved.
Author Contributions: All authors contributed to Sections 1, 3 and 5. R.K., K.P. and D.B.G. contributed for Sections 2, 4, 6 and 7. All authors have read and agree to the published version of the manuscript.
Funding: This research received no external funding.

Conflicts of Interest:
The authors declare no conflict of interest.

Abbreviations
The following abbreviations are used in this manuscript: