FreeHIL
Loading...
Searching...
No Matches
FH_RFCommunication.c File Reference

File Map:
FH_Setup, Section FH_RFCommunication
This file is the main source of the communication between RobotFramework and the micro-controller on which FH source code is ported
The micro-controller on which FH source code is ported, could be simply utilized in a RS485 network
In other word, multiple devices or multiple cards could be simply utilized where every device or every card has its own address
Address of the device (or card) for every device (or card) is set by FH user in FH_DeviceAddress.h
An interested UART (called Communication Dedicated UART) by the FH user for the communication between RobotFramework and the micro-controller on which FH source code is ported, shall be dedicated
More...

Go to the source code of this file.

Functions

FH_ErrorInfo FH_RFCommunication_Init ()
 This function initializes the Communication Dedicated UART
The Communication Dedicated UART could be any interested UART of the micro-controller on which FH source code is ported
FH user should call the initialization function of the interested UART here.
FH_ErrorInfo FH_RFCommunication_Send (char *DataString)
 This function sends data through the Communication Dedicated UART
The Communication Dedicated UART could be any interested UART of the micro-controller on which FH source code is ported
FH user should call the send function of the interested UART here.
FH_ErrorInfo FH_RFCommunication_Receive ()
 This function is the main source of receiving a complete message from RobotFramework
The micro-controller on which FH source code is ported, could be simply utilized in a RS485 network
In other word, multiple devices or multiple cards could be simply utilized where every device or every card has its own address
Address of the device (or card) for every device (or card) is set by FH user in FH_DeviceAddress.h
An interested UART (called Communication Dedicated UART) by the FH user for the communication between RobotFramework and the micro-controller on which FH source code is ported, shall be dedicated
.
FH_ErrorInfo FH_RFCommunication ()
 This function verifies if a complete message from RobotFramework is received or not and if yes, calls the related function
The micro-controller on which FH source code is ported, could be simply utilized in a RS485 network
In other word, multiple devices or multiple cards could be simply utilized where every device or every card has its own address
Address of the device (or card) for every device (or card) is set by FH user in FH_DeviceAddress.h
An interested UART (called Communication Dedicated UART) by the FH user for the communication between RobotFramework and the micro-controller on which FH source code is ported, shall be dedicated
.

Variables

volatile uint8_t FH_RFCommunication_ReceiveBuf [FH_RFCommunication_ReceiveBufLength]
volatile uint16_t FH_RFCommunication_ReceiveBufIndex
char FH_RFCommunication_SendBuf [FH_RFCommunication_SendBufLength]
volatile uint16_t FH_RFCommunication_ReceiveBufReadIndex = 0
volatile uint16_t FH_RFCommunication_Message_DataIndex = 0
FH_RFCommunication_Messagefh_RFCommunication_Message
volatile FH_RFCommunication_State fh_RFCommunication_State = RFCommunication_STATE_IDLE

Detailed Description

File Map:
FH_Setup, Section FH_RFCommunication
This file is the main source of the communication between RobotFramework and the micro-controller on which FH source code is ported
The micro-controller on which FH source code is ported, could be simply utilized in a RS485 network
In other word, multiple devices or multiple cards could be simply utilized where every device or every card has its own address
Address of the device (or card) for every device (or card) is set by FH user in FH_DeviceAddress.h
An interested UART (called Communication Dedicated UART) by the FH user for the communication between RobotFramework and the micro-controller on which FH source code is ported, shall be dedicated

Note
To have a clean code, FH user should have the implementation of the initialization and send functions of the Communication Dedicated UART in a separate c file
Then FH user should include the header file (.h) of the related source file (.c) here
This header file shall include the following items:
The declaration of the initialization function of the Communication Dedicated UART
The declaration of the send function of the Communication Dedicated UART
FH user shall use FH_RFCommunication_ReceiveBuf and FH_RFCommunication_ReceiveBufIndex in the receive ISR (Interrupt Service Routine) of the Communication Dedicated UART in a separate c file
For this to happen, FH user shall just include FH_RFCommunication_GlobalVariables.h there
In other word, FH_RFCommunication_ReceiveBuf array shall receive every byte of the received data there with FH_RFCommunication_ReceiveBufIndex as index of the array
Attention
FH_RFCommunication_Message is the structure for receiving the message frame from RobotFramework
The first data in this structure is the DeviceAddress
If a message (from RobotFramework) with a different DeviceAddress than the one set in FH_DeviceAddress.h is received, it will be ignored and not processed
Note
If there is just one device (or card), there is no need for the FH user to change the default address which is already 0x01
In this case, the address of the message in the message frame (in RobotFramework) shall be set to 01
 ==============================================================================
                       ##### RobotFramework Example #####
 ==============================================================================
 @{MessageData} =    Create List    ${DO01}    ${DO_Set}
 &{Message}     =    Create Dictionary    DeviceAddress=${DeviceAddress_01}    Function=${Function_DO}    Command=${DO_Commands_SetStatus}    Data=@{MessageData}
 ${Result}    SendMessage    &{Message}

 Comments:

 DO01 => It indicates the Digital Output 01
 DO_Set => It indicates the Digital Output 01 shall be Set (DO_Reset indicates the Digital Output 01 shall be Reset)
 DeviceAddress_01 => It shall be equal to the address of the device: FH_RFCommunication_DeviceAddress
 Function_DO => It is the function in the message frame
 DO_Commands_SetStatus => It is the command of the function in the message frame
Note
If at least one byte of data is received through the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, a complete message shall be received in a maximum defined timeout
The received data in the ISR (Interrupt Service Routine) will be ignored if the complete message will not be received within the defined timeout
For this to happen, FH_GlobalTimeCounter is utilized to calculate the maximum timeout
FH_RFCommunication_ReceiveBufMaxTimeout is the defined maximum timeout for every byte
In the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, FH_GlobalTimeCounter shall be reset after receiving every byte of data
If at least one byte of data is received through the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, a complete message shall be received in a maximum defined timeout
The received data in the ISR (Interrupt Service Routine) will be ignored if the complete message will not be received within the defined timeout
For this to happen, FH_GlobalTimeCounter is utilized to calculate the maximum timeout
FH_RFCommunication_ReceiveBufMaxTimeout is the defined maximum timeout for every byte
In the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, FH_GlobalTimeCounter shall be reset after receiving every byte of data
Warning
If FH user would not increment the FH_GlobalTimeCounter in a timer ISR (Interrupt Service Routine) every 1 mili-second, there will be a malfunction here
Attention
There are a total number of 3 attentions (FH user defined code) in this file where FH user shall insert some code
Other parts could be left intact

SPDX-License-Identifier: Apache-2.0

Copyright 2026 Vahid Hasirchi

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

For more information refer to FreeHIL.com

Definition in file FH_RFCommunication.c.

Function Documentation

◆ FH_RFCommunication()

FH_ErrorInfo FH_RFCommunication ( )

This function verifies if a complete message from RobotFramework is received or not and if yes, calls the related function
The micro-controller on which FH source code is ported, could be simply utilized in a RS485 network
In other word, multiple devices or multiple cards could be simply utilized where every device or every card has its own address
Address of the device (or card) for every device (or card) is set by FH user in FH_DeviceAddress.h
An interested UART (called Communication Dedicated UART) by the FH user for the communication between RobotFramework and the micro-controller on which FH source code is ported, shall be dedicated
.

Parameters
None
Returns
FH_ErrorInfo is returned
Note
FH user shall use FH_RFCommunication_ReceiveBuf and FH_RFCommunication_ReceiveBufIndex in the receive ISR (Interrupt Service Routine) of the Communication Dedicated UART in a separate c file
For this to happen, FH user shall just include FH_RFCommunication_GlobalVariables.h there
In other word, FH_RFCommunication_ReceiveBuf array shall receive every byte of the received data there with FH_RFCommunication_ReceiveBufIndex as index of the array
Attention
FH_RFCommunication_Message is the structure for receiving the message frame from RobotFramework
The first data in this structure is the DeviceAddress
If a message (from RobotFramework) with a different DeviceAddress than the one set in FH_DeviceAddress.h is received, it will be ignored and not processed
Note
If there is just one device (or card), there is no need for the FH user to change the default address which is already 0x01
In this case, the address of the message in the message frame (in RobotFramework) shall be set to 01
 ==============================================================================
                       ##### RobotFramework Example #####
 ==============================================================================
 @{MessageData} =    Create List    ${DO01}    ${DO_Set}
 &{Message}     =    Create Dictionary    DeviceAddress=${DeviceAddress_01}    Function=${Function_DO}    Command=${DO_Commands_SetStatus}    Data=@{MessageData}
 ${Result}    SendMessage    &{Message}

 Comments:

 DO01 => It indicates the Digital Output 01
 DO_Set => It indicates the Digital Output 01 shall be Set (DO_Reset indicates the Digital Output 01 shall be Reset)
 DeviceAddress_01 => It shall be equal to the address of the device: FH_RFCommunication_DeviceAddress
 Function_DO => It is the function in the message frame
 DO_Commands_SetStatus => It is the command of the function in the message frame
Note
If at least one byte of data is received through the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, a complete message shall be received in a maximum defined timeout
The received data in the ISR (Interrupt Service Routine) will be ignored if the complete message will not be received within the defined timeout
For this to happen, FH_GlobalTimeCounter is utilized to calculate the maximum timeout
FH_RFCommunication_ReceiveBufMaxTimeout is the defined maximum timeout for every byte
In the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, FH_GlobalTimeCounter shall be reset after receiving every byte of data
If at least one byte of data is received through the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, a complete message shall be received in a maximum defined timeout
The received data in the ISR (Interrupt Service Routine) will be ignored if the complete message will not be received within the defined timeout
For this to happen, FH_GlobalTimeCounter is utilized to calculate the maximum timeout
FH_RFCommunication_ReceiveBufMaxTimeout is the defined maximum timeout for every byte
In the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, FH_GlobalTimeCounter shall be reset after receiving every byte of data
Warning
If FH user would not increment the FH_GlobalTimeCounter in a timer ISR (Interrupt Service Routine) every 1 mili-second, there will be a malfunction here
Attention
FH user could left this function intact

SPDX-License-Identifier: Apache-2.0

Copyright 2026 Vahid Hasirchi

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

For more information refer to FreeHIL.com

Definition at line 511 of file FH_RFCommunication.c.

References FH_ErrorInfo::error_code, FH_AI_RFCommunication(), FH_AO_RFCommunication(), FH_CAN_RFCommunication(), FH_DI_RFCommunication(), FH_DO_RFCommunication(), FH_ERROR_OK, FH_PWMI_RFCommunication(), FH_PWMO_RFCommunication(), FH_ResetErrorInfo(), fh_RFCommunication_Message, FH_RFCommunication_Receive(), FH_UART_RFCommunication(), RFCommunication_Function_AI, RFCommunication_Function_AO, RFCommunication_Function_CAN, RFCommunication_Function_DI, RFCommunication_Function_DO, RFCommunication_Function_PWMI, RFCommunication_Function_PWMO, and RFCommunication_Function_UART.

◆ FH_RFCommunication_Init()

FH_ErrorInfo FH_RFCommunication_Init ( )

This function initializes the Communication Dedicated UART
The Communication Dedicated UART could be any interested UART of the micro-controller on which FH source code is ported
FH user should call the initialization function of the interested UART here.

Parameters
None
Returns
FH_ErrorInfo is returned
Note
To have a clean code, just include the related header file
Then just call the function here
Warning
To be able to send or receive data through the Communication Dedicated UART of the micro-controller on which FH source code is ported, this function shall be invoked once in the main.c file firstly

Definition at line 168 of file FH_RFCommunication.c.

References FH_ResetErrorInfo(), and FH_RFCommunication_ReceiveBufIndex.

◆ FH_RFCommunication_Receive()

FH_ErrorInfo FH_RFCommunication_Receive ( )

This function is the main source of receiving a complete message from RobotFramework
The micro-controller on which FH source code is ported, could be simply utilized in a RS485 network
In other word, multiple devices or multiple cards could be simply utilized where every device or every card has its own address
Address of the device (or card) for every device (or card) is set by FH user in FH_DeviceAddress.h
An interested UART (called Communication Dedicated UART) by the FH user for the communication between RobotFramework and the micro-controller on which FH source code is ported, shall be dedicated
.

Parameters
None
Returns
FH_ErrorInfo is returned
Note
FH user shall use FH_RFCommunication_ReceiveBuf and FH_RFCommunication_ReceiveBufIndex in the receive ISR (Interrupt Service Routine) of the Communication Dedicated UART in a separate c file
For this to happen, FH user shall just include FH_RFCommunication_GlobalVariables.h there
In other word, FH_RFCommunication_ReceiveBuf array shall receive every byte of the received data there with FH_RFCommunication_ReceiveBufIndex as index of the array
Attention
FH_RFCommunication_Message is the structure for receiving the message frame from RobotFramework
The first data in this structure is the DeviceAddress
If a message (from RobotFramework) with a different DeviceAddress than the one set in FH_DeviceAddress.h is received, it will be ignored and not processed
Note
If there is just one device (or card), there is no need for the FH user to change the default address which is already 0x01
In this case, the address of the message in the message frame (in RobotFramework) shall be set to 01
 ==============================================================================
                       ##### RobotFramework Example #####
 ==============================================================================
 @{MessageData} =    Create List    ${DO01}    ${DO_Set}
 &{Message}     =    Create Dictionary    DeviceAddress=${DeviceAddress_01}    Function=${Function_DO}    Command=${DO_Commands_SetStatus}    Data=@{MessageData}
 ${Result}    SendMessage    &{Message}

 Comments:

 DO01 => It indicates the Digital Output 01
 DO_Set => It indicates the Digital Output 01 shall be Set (DO_Reset indicates the Digital Output 01 shall be Reset)
 DeviceAddress_01 => It shall be equal to the address of the device: FH_RFCommunication_DeviceAddress
 Function_DO => It is the function in the message frame
 DO_Commands_SetStatus => It is the command of the function in the message frame
Note
If at least one byte of data is received through the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, a complete message shall be received in a maximum defined timeout
The received data in the ISR (Interrupt Service Routine) will be ignored if the complete message will not be received within the defined timeout
For this to happen, FH_GlobalTimeCounter is utilized to calculate the maximum timeout
FH_RFCommunication_ReceiveBufMaxTimeout is the defined maximum timeout for every byte
In the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, FH_GlobalTimeCounter shall be reset after receiving every byte of data
If at least one byte of data is received through the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, a complete message shall be received in a maximum defined timeout
The received data in the ISR (Interrupt Service Routine) will be ignored if the complete message will not be received within the defined timeout
For this to happen, FH_GlobalTimeCounter is utilized to calculate the maximum timeout
FH_RFCommunication_ReceiveBufMaxTimeout is the defined maximum timeout for every byte
In the ISR (Interrupt Service Routine) of the Communication Dedicated UART by the FH user, FH_GlobalTimeCounter shall be reset after receiving every byte of data
Warning
If FH user would not increment the FH_GlobalTimeCounter in a timer ISR (Interrupt Service Routine) every 1 mili-second, there will be a malfunction here
Attention
FH user could left this function intact
Note
FH_RFCommunication_Message is the structure for receiving the message frame from RobotFramework
FH_RFCommunication_State is the enumeration utilized as state machine to collect the different blocks of the message frame from RobotFramework
It is initialized with RFCommunication_STATE_IDLE to be ready to collect a new message from RobotFramework
FH_RFCommunication_ReceiveBufReadIndex is the index of the data which is read from the FH_RFCommunication_ReceiveBuf to be processed
It is used to help process the received data through the Communication Dedicated UART
FH_RFCommunication_Message_DataIndex is the index of the data part of the message frame
It is used in FH_RFCommunication_Receive function to help collect the received data part of the message frame through the Communication Dedicated UART For more information, refer to FH_RFCommunication_Message

SPDX-License-Identifier: Apache-2.0

Copyright 2026 Vahid Hasirchi

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

For more information refer to FreeHIL.com

Definition at line 312 of file FH_RFCommunication.c.

References FH_ErrorInfo::error_code, FH_ERROR_MessageFrame, FH_ERROR_NoInfo, FH_ERROR_OK, FH_ERROR_Timeout, FH_GlobalTimeCounter, FH_ResetErrorInfo(), FH_RFCommunication_DeviceAddress, fh_RFCommunication_Message, FH_RFCommunication_Message_DataIndex, FH_RFCommunication_MinCommandSize, FH_RFCommunication_ReceiveBuf, FH_RFCommunication_ReceiveBufIndex, FH_RFCommunication_ReceiveBufMaxTimeout, FH_RFCommunication_ReceiveBufReadIndex, fh_RFCommunication_State, RFCommunication_Command, RFCommunication_DataLength, RFCommunication_DeviceAddress, RFCommunication_Function, RFCommunication_STATE_Checksum, RFCommunication_STATE_Command, RFCommunication_STATE_Data, RFCommunication_STATE_DataLength, RFCommunication_STATE_DeviceAddress, RFCommunication_STATE_Function, RFCommunication_STATE_IDLE, and RFCommunication_STATE_MessageReceived.

Referenced by FH_RFCommunication().

◆ FH_RFCommunication_Send()

FH_ErrorInfo FH_RFCommunication_Send ( char * DataString)

This function sends data through the Communication Dedicated UART
The Communication Dedicated UART could be any interested UART of the micro-controller on which FH source code is ported
FH user should call the send function of the interested UART here.

Parameters
DataStringa null terminated string of data to be sent
Returns
FH_ErrorInfo is returned
Note
To have a clean code, just include the related header file
Then just call the function here
Warning
To be able to send data through the Communication Dedicated UART of the micro-controller on which FH source code is ported, the FH_RFCommunication_Init function shall be invoked once in the main.c file firstly

Definition at line 203 of file FH_RFCommunication.c.

References FH_ResetErrorInfo().

Referenced by FH_AI_RFCommunication(), FH_AO_RFCommunication(), FH_CAN_RFCommunication(), FH_DI_RFCommunication(), FH_DO_RFCommunication(), FH_PWMI_RFCommunication(), FH_PWMO_RFCommunication(), and FH_UART_RFCommunication().

Variable Documentation

◆ fh_RFCommunication_Message

FH_RFCommunication_Message* fh_RFCommunication_Message

FH_RFCommunication_Message is the structure for receiving the message frame from RobotFramework

Definition at line 142 of file FH_RFCommunication.c.

Referenced by FH_AI_GetStatus_AI01(), FH_AI_GetStatus_AI02(), FH_AI_GetStatus_AI03(), FH_AI_GetStatus_AI04(), FH_AI_GetStatus_AI05(), FH_AI_GetStatus_AI06(), FH_AI_GetStatus_AI07(), FH_AI_GetStatus_AI08(), FH_AI_GetStatus_AI09(), FH_AI_GetStatus_AI10(), FH_AI_GetStatus_AI11(), FH_AI_GetStatus_AI12(), FH_AI_GetStatus_AI13(), FH_AI_GetStatus_AI14(), FH_AI_GetStatus_AI15(), FH_AI_GetStatus_AI16(), FH_AI_GetStatus_AI17(), FH_AI_GetStatus_AI18(), FH_AI_GetStatus_AI19(), FH_AI_GetStatus_AI20(), FH_AI_GetStatus_AI21(), FH_AI_GetStatus_AI22(), FH_AI_GetStatus_AI23(), FH_AI_GetStatus_AI24(), FH_AI_GetStatus_AI25(), FH_AI_GetStatus_AI26(), FH_AI_GetStatus_AI27(), FH_AI_GetStatus_AI28(), FH_AI_GetStatus_AI29(), FH_AI_GetStatus_AI30(), FH_AI_GetStatus_AI31(), FH_AI_GetStatus_AI32(), FH_AI_GetStatus_AI33(), FH_AI_GetStatus_AI34(), FH_AI_GetStatus_AI35(), FH_AI_GetStatus_AI36(), FH_AI_GetStatus_AI37(), FH_AI_GetStatus_AI38(), FH_AI_GetStatus_AI39(), FH_AI_GetStatus_AI40(), FH_AI_GetStatus_AI41(), FH_AI_GetStatus_AI42(), FH_AI_GetStatus_AI43(), FH_AI_GetStatus_AI44(), FH_AI_GetStatus_AI45(), FH_AI_GetStatus_AI46(), FH_AI_GetStatus_AI47(), FH_AI_GetStatus_AI48(), FH_AI_GetStatus_AI49(), FH_AI_GetStatus_AI50(), FH_AI_GetStatus_AI51(), FH_AI_GetStatus_AI52(), FH_AI_GetStatus_AI53(), FH_AI_GetStatus_AI54(), FH_AI_GetStatus_AI55(), FH_AI_GetStatus_AI56(), FH_AI_GetStatus_AI57(), FH_AI_GetStatus_AI58(), FH_AI_GetStatus_AI59(), FH_AI_GetStatus_AI60(), FH_AI_GetStatus_AI61(), FH_AI_GetStatus_AI62(), FH_AI_GetStatus_AI63(), FH_AI_GetStatus_AI64(), FH_AI_Init_AI01(), FH_AI_Init_AI02(), FH_AI_Init_AI03(), FH_AI_Init_AI04(), FH_AI_Init_AI05(), FH_AI_Init_AI06(), FH_AI_Init_AI07(), FH_AI_Init_AI08(), FH_AI_Init_AI09(), FH_AI_Init_AI10(), FH_AI_Init_AI11(), FH_AI_Init_AI12(), FH_AI_Init_AI13(), FH_AI_Init_AI14(), FH_AI_Init_AI15(), FH_AI_Init_AI16(), FH_AI_Init_AI17(), FH_AI_Init_AI18(), FH_AI_Init_AI19(), FH_AI_Init_AI20(), FH_AI_Init_AI21(), FH_AI_Init_AI22(), FH_AI_Init_AI23(), FH_AI_Init_AI24(), FH_AI_Init_AI25(), FH_AI_Init_AI26(), FH_AI_Init_AI27(), FH_AI_Init_AI28(), FH_AI_Init_AI29(), FH_AI_Init_AI30(), FH_AI_Init_AI31(), FH_AI_Init_AI32(), FH_AI_Init_AI33(), FH_AI_Init_AI34(), FH_AI_Init_AI35(), FH_AI_Init_AI36(), FH_AI_Init_AI37(), FH_AI_Init_AI38(), FH_AI_Init_AI39(), FH_AI_Init_AI40(), FH_AI_Init_AI41(), FH_AI_Init_AI42(), FH_AI_Init_AI43(), FH_AI_Init_AI44(), FH_AI_Init_AI45(), FH_AI_Init_AI46(), FH_AI_Init_AI47(), FH_AI_Init_AI48(), FH_AI_Init_AI49(), FH_AI_Init_AI50(), FH_AI_Init_AI51(), FH_AI_Init_AI52(), FH_AI_Init_AI53(), FH_AI_Init_AI54(), FH_AI_Init_AI55(), FH_AI_Init_AI56(), FH_AI_Init_AI57(), FH_AI_Init_AI58(), FH_AI_Init_AI59(), FH_AI_Init_AI60(), FH_AI_Init_AI61(), FH_AI_Init_AI62(), FH_AI_Init_AI63(), FH_AI_Init_AI64(), FH_AI_Init_C(), FH_AI_Init_H(), FH_AI_ProcessCommand_GetStatus(), FH_AI_ProcessCommand_Init(), FH_AI_RFCommunication(), FH_AO_Init_AO01(), FH_AO_Init_AO02(), FH_AO_Init_AO03(), FH_AO_Init_AO04(), FH_AO_Init_AO05(), FH_AO_Init_AO06(), FH_AO_Init_AO07(), FH_AO_Init_AO08(), FH_AO_Init_AO09(), FH_AO_Init_AO10(), FH_AO_Init_AO11(), FH_AO_Init_AO12(), FH_AO_Init_AO13(), FH_AO_Init_AO14(), FH_AO_Init_AO15(), FH_AO_Init_AO16(), FH_AO_Init_AO17(), FH_AO_Init_AO18(), FH_AO_Init_AO19(), FH_AO_Init_AO20(), FH_AO_Init_AO21(), FH_AO_Init_AO22(), FH_AO_Init_AO23(), FH_AO_Init_AO24(), FH_AO_Init_AO25(), FH_AO_Init_AO26(), FH_AO_Init_AO27(), FH_AO_Init_AO28(), FH_AO_Init_AO29(), FH_AO_Init_AO30(), FH_AO_Init_AO31(), FH_AO_Init_AO32(), FH_AO_Init_AO33(), FH_AO_Init_AO34(), FH_AO_Init_AO35(), FH_AO_Init_AO36(), FH_AO_Init_AO37(), FH_AO_Init_AO38(), FH_AO_Init_AO39(), FH_AO_Init_AO40(), FH_AO_Init_AO41(), FH_AO_Init_AO42(), FH_AO_Init_AO43(), FH_AO_Init_AO44(), FH_AO_Init_AO45(), FH_AO_Init_AO46(), FH_AO_Init_AO47(), FH_AO_Init_AO48(), FH_AO_Init_AO49(), FH_AO_Init_AO50(), FH_AO_Init_AO51(), FH_AO_Init_AO52(), FH_AO_Init_AO53(), FH_AO_Init_AO54(), FH_AO_Init_AO55(), FH_AO_Init_AO56(), FH_AO_Init_AO57(), FH_AO_Init_AO58(), FH_AO_Init_AO59(), FH_AO_Init_AO60(), FH_AO_Init_AO61(), FH_AO_Init_AO62(), FH_AO_Init_AO63(), FH_AO_Init_AO64(), FH_AO_Init_C(), FH_AO_Init_H(), FH_AO_ProcessCommand_Init(), FH_AO_ProcessCommand_SetStatus(), FH_AO_RFCommunication(), FH_AO_SetStatus_AO01(), FH_AO_SetStatus_AO02(), FH_AO_SetStatus_AO03(), FH_AO_SetStatus_AO04(), FH_AO_SetStatus_AO05(), FH_AO_SetStatus_AO06(), FH_AO_SetStatus_AO07(), FH_AO_SetStatus_AO08(), FH_AO_SetStatus_AO09(), FH_AO_SetStatus_AO10(), FH_AO_SetStatus_AO11(), FH_AO_SetStatus_AO12(), FH_AO_SetStatus_AO13(), FH_AO_SetStatus_AO14(), FH_AO_SetStatus_AO15(), FH_AO_SetStatus_AO16(), FH_AO_SetStatus_AO17(), FH_AO_SetStatus_AO18(), FH_AO_SetStatus_AO19(), FH_AO_SetStatus_AO20(), FH_AO_SetStatus_AO21(), FH_AO_SetStatus_AO22(), FH_AO_SetStatus_AO23(), FH_AO_SetStatus_AO24(), FH_AO_SetStatus_AO25(), FH_AO_SetStatus_AO26(), FH_AO_SetStatus_AO27(), FH_AO_SetStatus_AO28(), FH_AO_SetStatus_AO29(), FH_AO_SetStatus_AO30(), FH_AO_SetStatus_AO31(), FH_AO_SetStatus_AO32(), FH_AO_SetStatus_AO33(), FH_AO_SetStatus_AO34(), FH_AO_SetStatus_AO35(), FH_AO_SetStatus_AO36(), FH_AO_SetStatus_AO37(), FH_AO_SetStatus_AO38(), FH_AO_SetStatus_AO39(), FH_AO_SetStatus_AO40(), FH_AO_SetStatus_AO41(), FH_AO_SetStatus_AO42(), FH_AO_SetStatus_AO43(), FH_AO_SetStatus_AO44(), FH_AO_SetStatus_AO45(), FH_AO_SetStatus_AO46(), FH_AO_SetStatus_AO47(), FH_AO_SetStatus_AO48(), FH_AO_SetStatus_AO49(), FH_AO_SetStatus_AO50(), FH_AO_SetStatus_AO51(), FH_AO_SetStatus_AO52(), FH_AO_SetStatus_AO53(), FH_AO_SetStatus_AO54(), FH_AO_SetStatus_AO55(), FH_AO_SetStatus_AO56(), FH_AO_SetStatus_AO57(), FH_AO_SetStatus_AO58(), FH_AO_SetStatus_AO59(), FH_AO_SetStatus_AO60(), FH_AO_SetStatus_AO61(), FH_AO_SetStatus_AO62(), FH_AO_SetStatus_AO63(), FH_AO_SetStatus_AO64(), FH_CAN_GSD16_C(), FH_CAN_GSD16_CAN01(), FH_CAN_GSD16_CAN02(), FH_CAN_GSD16_CAN03(), FH_CAN_GSD16_CAN04(), FH_CAN_GSD16_CAN05(), FH_CAN_GSD16_CAN06(), FH_CAN_GSD16_CAN07(), FH_CAN_GSD16_CAN08(), FH_CAN_GSD16_H(), FH_CAN_GSD32_C(), FH_CAN_GSD32_CAN01(), FH_CAN_GSD32_CAN02(), FH_CAN_GSD32_CAN03(), FH_CAN_GSD32_CAN04(), FH_CAN_GSD32_CAN05(), FH_CAN_GSD32_CAN06(), FH_CAN_GSD32_CAN07(), FH_CAN_GSD32_CAN08(), FH_CAN_GSD32_H(), FH_CAN_GSD8_C(), FH_CAN_GSD8_CAN01(), FH_CAN_GSD8_CAN02(), FH_CAN_GSD8_CAN03(), FH_CAN_GSD8_CAN04(), FH_CAN_GSD8_CAN05(), FH_CAN_GSD8_CAN06(), FH_CAN_GSD8_CAN07(), FH_CAN_GSD8_CAN08(), FH_CAN_GSD8_H(), FH_CAN_Init_C(), FH_CAN_Init_CAN01(), FH_CAN_Init_CAN02(), FH_CAN_Init_CAN03(), FH_CAN_Init_CAN04(), FH_CAN_Init_CAN05(), FH_CAN_Init_CAN06(), FH_CAN_Init_CAN07(), FH_CAN_Init_CAN08(), FH_CAN_Init_H(), FH_CAN_ProcessCommand_GSD16(), FH_CAN_ProcessCommand_GSD32(), FH_CAN_ProcessCommand_GSD8(), FH_CAN_ProcessCommand_Init(), FH_CAN_ProcessCommand_Receive(), FH_CAN_ProcessCommand_ReceiveW(), FH_CAN_ProcessCommand_ResetRB(), FH_CAN_ProcessCommand_Send(), FH_CAN_ProcessCommand_SSD16(), FH_CAN_ProcessCommand_SSD32(), FH_CAN_ProcessCommand_SSD8(), FH_CAN_Receive_CAN01(), FH_CAN_Receive_CAN02(), FH_CAN_Receive_CAN03(), FH_CAN_Receive_CAN04(), FH_CAN_Receive_CAN05(), FH_CAN_Receive_CAN06(), FH_CAN_Receive_CAN07(), FH_CAN_Receive_CAN08(), FH_CAN_ReceiveW_CAN01(), FH_CAN_ReceiveW_CAN02(), FH_CAN_ReceiveW_CAN03(), FH_CAN_ReceiveW_CAN04(), FH_CAN_ReceiveW_CAN05(), FH_CAN_ReceiveW_CAN06(), FH_CAN_ReceiveW_CAN07(), FH_CAN_ReceiveW_CAN08(), FH_CAN_ResetRB_CAN01(), FH_CAN_ResetRB_CAN02(), FH_CAN_ResetRB_CAN03(), FH_CAN_ResetRB_CAN04(), FH_CAN_ResetRB_CAN05(), FH_CAN_ResetRB_CAN06(), FH_CAN_ResetRB_CAN07(), FH_CAN_ResetRB_CAN08(), FH_CAN_RFCommunication(), FH_CAN_Send_C(), FH_CAN_Send_CAN01(), FH_CAN_Send_CAN02(), FH_CAN_Send_CAN03(), FH_CAN_Send_CAN04(), FH_CAN_Send_CAN05(), FH_CAN_Send_CAN06(), FH_CAN_Send_CAN07(), FH_CAN_Send_CAN08(), FH_CAN_Send_H(), FH_CAN_SSD16_C(), FH_CAN_SSD16_CAN01(), FH_CAN_SSD16_CAN02(), FH_CAN_SSD16_CAN03(), FH_CAN_SSD16_CAN04(), FH_CAN_SSD16_CAN05(), FH_CAN_SSD16_CAN06(), FH_CAN_SSD16_CAN07(), FH_CAN_SSD16_CAN08(), FH_CAN_SSD16_H(), FH_CAN_SSD32_C(), FH_CAN_SSD32_CAN01(), FH_CAN_SSD32_CAN02(), FH_CAN_SSD32_CAN03(), FH_CAN_SSD32_CAN04(), FH_CAN_SSD32_CAN05(), FH_CAN_SSD32_CAN06(), FH_CAN_SSD32_CAN07(), FH_CAN_SSD32_CAN08(), FH_CAN_SSD32_H(), FH_CAN_SSD8_C(), FH_CAN_SSD8_CAN01(), FH_CAN_SSD8_CAN02(), FH_CAN_SSD8_CAN03(), FH_CAN_SSD8_CAN04(), FH_CAN_SSD8_CAN05(), FH_CAN_SSD8_CAN06(), FH_CAN_SSD8_CAN07(), FH_CAN_SSD8_CAN08(), FH_CAN_SSD8_H(), FH_DI_Init_C(), FH_DI_Init_H(), FH_DI_InitMULTI_C(), FH_DI_InitMULTI_H(), FH_DI_ProcessCommand_GetStatus(), FH_DI_ProcessCommand_GetStatusMULTI(), FH_DI_ProcessCommand_Init(), FH_DI_ProcessCommand_InitMULTI(), FH_DI_RFCommunication(), FH_DO_Init_C(), FH_DO_Init_H(), FH_DO_InitMULTI_C(), FH_DO_InitMULTI_H(), FH_DO_ProcessCommand_Init(), FH_DO_ProcessCommand_InitMULTI(), FH_DO_ProcessCommand_SetStatus(), FH_DO_ProcessCommand_SetStatusMULTI(), FH_DO_RFCommunication(), FH_PWMI_GetStatus_PWMI01(), FH_PWMI_GetStatus_PWMI02(), FH_PWMI_GetStatus_PWMI03(), FH_PWMI_GetStatus_PWMI04(), FH_PWMI_GetStatus_PWMI05(), FH_PWMI_GetStatus_PWMI06(), FH_PWMI_GetStatus_PWMI07(), FH_PWMI_GetStatus_PWMI08(), FH_PWMI_GetStatus_PWMI09(), FH_PWMI_GetStatus_PWMI10(), FH_PWMI_GetStatus_PWMI11(), FH_PWMI_GetStatus_PWMI12(), FH_PWMI_GetStatus_PWMI13(), FH_PWMI_GetStatus_PWMI14(), FH_PWMI_GetStatus_PWMI15(), FH_PWMI_GetStatus_PWMI16(), FH_PWMI_GetStatus_PWMI17(), FH_PWMI_GetStatus_PWMI18(), FH_PWMI_GetStatus_PWMI19(), FH_PWMI_GetStatus_PWMI20(), FH_PWMI_GetStatus_PWMI21(), FH_PWMI_GetStatus_PWMI22(), FH_PWMI_GetStatus_PWMI23(), FH_PWMI_GetStatus_PWMI24(), FH_PWMI_GetStatus_PWMI25(), FH_PWMI_GetStatus_PWMI26(), FH_PWMI_GetStatus_PWMI27(), FH_PWMI_GetStatus_PWMI28(), FH_PWMI_GetStatus_PWMI29(), FH_PWMI_GetStatus_PWMI30(), FH_PWMI_GetStatus_PWMI31(), FH_PWMI_GetStatus_PWMI32(), FH_PWMI_GetStatus_PWMI33(), FH_PWMI_GetStatus_PWMI34(), FH_PWMI_GetStatus_PWMI35(), FH_PWMI_GetStatus_PWMI36(), FH_PWMI_GetStatus_PWMI37(), FH_PWMI_GetStatus_PWMI38(), FH_PWMI_GetStatus_PWMI39(), FH_PWMI_GetStatus_PWMI40(), FH_PWMI_GetStatus_PWMI41(), FH_PWMI_GetStatus_PWMI42(), FH_PWMI_GetStatus_PWMI43(), FH_PWMI_GetStatus_PWMI44(), FH_PWMI_GetStatus_PWMI45(), FH_PWMI_GetStatus_PWMI46(), FH_PWMI_GetStatus_PWMI47(), FH_PWMI_GetStatus_PWMI48(), FH_PWMI_GetStatus_PWMI49(), FH_PWMI_GetStatus_PWMI50(), FH_PWMI_GetStatus_PWMI51(), FH_PWMI_GetStatus_PWMI52(), FH_PWMI_GetStatus_PWMI53(), FH_PWMI_GetStatus_PWMI54(), FH_PWMI_GetStatus_PWMI55(), FH_PWMI_GetStatus_PWMI56(), FH_PWMI_GetStatus_PWMI57(), FH_PWMI_GetStatus_PWMI58(), FH_PWMI_GetStatus_PWMI59(), FH_PWMI_GetStatus_PWMI60(), FH_PWMI_GetStatus_PWMI61(), FH_PWMI_GetStatus_PWMI62(), FH_PWMI_GetStatus_PWMI63(), FH_PWMI_GetStatus_PWMI64(), FH_PWMI_Init_PWMI01(), FH_PWMI_Init_PWMI02(), FH_PWMI_Init_PWMI03(), FH_PWMI_Init_PWMI04(), FH_PWMI_Init_PWMI05(), FH_PWMI_Init_PWMI06(), FH_PWMI_Init_PWMI07(), FH_PWMI_Init_PWMI08(), FH_PWMI_Init_PWMI09(), FH_PWMI_Init_PWMI10(), FH_PWMI_Init_PWMI11(), FH_PWMI_Init_PWMI12(), FH_PWMI_Init_PWMI13(), FH_PWMI_Init_PWMI14(), FH_PWMI_Init_PWMI15(), FH_PWMI_Init_PWMI16(), FH_PWMI_Init_PWMI17(), FH_PWMI_Init_PWMI18(), FH_PWMI_Init_PWMI19(), FH_PWMI_Init_PWMI20(), FH_PWMI_Init_PWMI21(), FH_PWMI_Init_PWMI22(), FH_PWMI_Init_PWMI23(), FH_PWMI_Init_PWMI24(), FH_PWMI_Init_PWMI25(), FH_PWMI_Init_PWMI26(), FH_PWMI_Init_PWMI27(), FH_PWMI_Init_PWMI28(), FH_PWMI_Init_PWMI29(), FH_PWMI_Init_PWMI30(), FH_PWMI_Init_PWMI31(), FH_PWMI_Init_PWMI32(), FH_PWMI_Init_PWMI33(), FH_PWMI_Init_PWMI34(), FH_PWMI_Init_PWMI35(), FH_PWMI_Init_PWMI36(), FH_PWMI_Init_PWMI37(), FH_PWMI_Init_PWMI38(), FH_PWMI_Init_PWMI39(), FH_PWMI_Init_PWMI40(), FH_PWMI_Init_PWMI41(), FH_PWMI_Init_PWMI42(), FH_PWMI_Init_PWMI43(), FH_PWMI_Init_PWMI44(), FH_PWMI_Init_PWMI45(), FH_PWMI_Init_PWMI46(), FH_PWMI_Init_PWMI47(), FH_PWMI_Init_PWMI48(), FH_PWMI_Init_PWMI49(), FH_PWMI_Init_PWMI50(), FH_PWMI_Init_PWMI51(), FH_PWMI_Init_PWMI52(), FH_PWMI_Init_PWMI53(), FH_PWMI_Init_PWMI54(), FH_PWMI_Init_PWMI55(), FH_PWMI_Init_PWMI56(), FH_PWMI_Init_PWMI57(), FH_PWMI_Init_PWMI58(), FH_PWMI_Init_PWMI59(), FH_PWMI_Init_PWMI60(), FH_PWMI_Init_PWMI61(), FH_PWMI_Init_PWMI62(), FH_PWMI_Init_PWMI63(), FH_PWMI_Init_PWMI64(), FH_PWMI_ProcessCommand_GetStatus(), FH_PWMI_ProcessCommand_Init(), FH_PWMI_RFCommunication(), FH_PWMO_Init_PWMO01(), FH_PWMO_Init_PWMO02(), FH_PWMO_Init_PWMO03(), FH_PWMO_Init_PWMO04(), FH_PWMO_Init_PWMO05(), FH_PWMO_Init_PWMO06(), FH_PWMO_Init_PWMO07(), FH_PWMO_Init_PWMO08(), FH_PWMO_Init_PWMO09(), FH_PWMO_Init_PWMO10(), FH_PWMO_Init_PWMO11(), FH_PWMO_Init_PWMO12(), FH_PWMO_Init_PWMO13(), FH_PWMO_Init_PWMO14(), FH_PWMO_Init_PWMO15(), FH_PWMO_Init_PWMO16(), FH_PWMO_Init_PWMO17(), FH_PWMO_Init_PWMO18(), FH_PWMO_Init_PWMO19(), FH_PWMO_Init_PWMO20(), FH_PWMO_Init_PWMO21(), FH_PWMO_Init_PWMO22(), FH_PWMO_Init_PWMO23(), FH_PWMO_Init_PWMO24(), FH_PWMO_Init_PWMO25(), FH_PWMO_Init_PWMO26(), FH_PWMO_Init_PWMO27(), FH_PWMO_Init_PWMO28(), FH_PWMO_Init_PWMO29(), FH_PWMO_Init_PWMO30(), FH_PWMO_Init_PWMO31(), FH_PWMO_Init_PWMO32(), FH_PWMO_Init_PWMO33(), FH_PWMO_Init_PWMO34(), FH_PWMO_Init_PWMO35(), FH_PWMO_Init_PWMO36(), FH_PWMO_Init_PWMO37(), FH_PWMO_Init_PWMO38(), FH_PWMO_Init_PWMO39(), FH_PWMO_Init_PWMO40(), FH_PWMO_Init_PWMO41(), FH_PWMO_Init_PWMO42(), FH_PWMO_Init_PWMO43(), FH_PWMO_Init_PWMO44(), FH_PWMO_Init_PWMO45(), FH_PWMO_Init_PWMO46(), FH_PWMO_Init_PWMO47(), FH_PWMO_Init_PWMO48(), FH_PWMO_Init_PWMO49(), FH_PWMO_Init_PWMO50(), FH_PWMO_Init_PWMO51(), FH_PWMO_Init_PWMO52(), FH_PWMO_Init_PWMO53(), FH_PWMO_Init_PWMO54(), FH_PWMO_Init_PWMO55(), FH_PWMO_Init_PWMO56(), FH_PWMO_Init_PWMO57(), FH_PWMO_Init_PWMO58(), FH_PWMO_Init_PWMO59(), FH_PWMO_Init_PWMO60(), FH_PWMO_Init_PWMO61(), FH_PWMO_Init_PWMO62(), FH_PWMO_Init_PWMO63(), FH_PWMO_Init_PWMO64(), FH_PWMO_ProcessCommand_Init(), FH_PWMO_ProcessCommand_SetStatus(), FH_PWMO_RFCommunication(), FH_PWMO_SetStatus_PWMO01(), FH_PWMO_SetStatus_PWMO02(), FH_PWMO_SetStatus_PWMO03(), FH_PWMO_SetStatus_PWMO04(), FH_PWMO_SetStatus_PWMO05(), FH_PWMO_SetStatus_PWMO06(), FH_PWMO_SetStatus_PWMO07(), FH_PWMO_SetStatus_PWMO08(), FH_PWMO_SetStatus_PWMO09(), FH_PWMO_SetStatus_PWMO10(), FH_PWMO_SetStatus_PWMO11(), FH_PWMO_SetStatus_PWMO12(), FH_PWMO_SetStatus_PWMO13(), FH_PWMO_SetStatus_PWMO14(), FH_PWMO_SetStatus_PWMO15(), FH_PWMO_SetStatus_PWMO16(), FH_PWMO_SetStatus_PWMO17(), FH_PWMO_SetStatus_PWMO18(), FH_PWMO_SetStatus_PWMO19(), FH_PWMO_SetStatus_PWMO20(), FH_PWMO_SetStatus_PWMO21(), FH_PWMO_SetStatus_PWMO22(), FH_PWMO_SetStatus_PWMO23(), FH_PWMO_SetStatus_PWMO24(), FH_PWMO_SetStatus_PWMO25(), FH_PWMO_SetStatus_PWMO26(), FH_PWMO_SetStatus_PWMO27(), FH_PWMO_SetStatus_PWMO28(), FH_PWMO_SetStatus_PWMO29(), FH_PWMO_SetStatus_PWMO30(), FH_PWMO_SetStatus_PWMO31(), FH_PWMO_SetStatus_PWMO32(), FH_PWMO_SetStatus_PWMO33(), FH_PWMO_SetStatus_PWMO34(), FH_PWMO_SetStatus_PWMO35(), FH_PWMO_SetStatus_PWMO36(), FH_PWMO_SetStatus_PWMO37(), FH_PWMO_SetStatus_PWMO38(), FH_PWMO_SetStatus_PWMO39(), FH_PWMO_SetStatus_PWMO40(), FH_PWMO_SetStatus_PWMO41(), FH_PWMO_SetStatus_PWMO42(), FH_PWMO_SetStatus_PWMO43(), FH_PWMO_SetStatus_PWMO44(), FH_PWMO_SetStatus_PWMO45(), FH_PWMO_SetStatus_PWMO46(), FH_PWMO_SetStatus_PWMO47(), FH_PWMO_SetStatus_PWMO48(), FH_PWMO_SetStatus_PWMO49(), FH_PWMO_SetStatus_PWMO50(), FH_PWMO_SetStatus_PWMO51(), FH_PWMO_SetStatus_PWMO52(), FH_PWMO_SetStatus_PWMO53(), FH_PWMO_SetStatus_PWMO54(), FH_PWMO_SetStatus_PWMO55(), FH_PWMO_SetStatus_PWMO56(), FH_PWMO_SetStatus_PWMO57(), FH_PWMO_SetStatus_PWMO58(), FH_PWMO_SetStatus_PWMO59(), FH_PWMO_SetStatus_PWMO60(), FH_PWMO_SetStatus_PWMO61(), FH_PWMO_SetStatus_PWMO62(), FH_PWMO_SetStatus_PWMO63(), FH_PWMO_SetStatus_PWMO64(), FH_RFCommunication(), FH_RFCommunication_Receive(), FH_UART_GSD16_UART01(), FH_UART_GSD16_UART02(), FH_UART_GSD16_UART03(), FH_UART_GSD16_UART04(), FH_UART_GSD16_UART05(), FH_UART_GSD16_UART06(), FH_UART_GSD16_UART07(), FH_UART_GSD16_UART08(), FH_UART_GSD32_UART01(), FH_UART_GSD32_UART02(), FH_UART_GSD32_UART03(), FH_UART_GSD32_UART04(), FH_UART_GSD32_UART05(), FH_UART_GSD32_UART06(), FH_UART_GSD32_UART07(), FH_UART_GSD32_UART08(), FH_UART_GSD8_UART01(), FH_UART_GSD8_UART02(), FH_UART_GSD8_UART03(), FH_UART_GSD8_UART04(), FH_UART_GSD8_UART05(), FH_UART_GSD8_UART06(), FH_UART_GSD8_UART07(), FH_UART_GSD8_UART08(), FH_UART_Init_UART01(), FH_UART_Init_UART02(), FH_UART_Init_UART03(), FH_UART_Init_UART04(), FH_UART_Init_UART05(), FH_UART_Init_UART06(), FH_UART_Init_UART07(), FH_UART_Init_UART08(), FH_UART_ProcessCommand_GSD16(), FH_UART_ProcessCommand_GSD32(), FH_UART_ProcessCommand_GSD8(), FH_UART_ProcessCommand_Init(), FH_UART_ProcessCommand_Receive(), FH_UART_ProcessCommand_ReceiveW(), FH_UART_ProcessCommand_ResetRB(), FH_UART_ProcessCommand_Send(), FH_UART_ProcessCommand_SSD16(), FH_UART_ProcessCommand_SSD32(), FH_UART_ProcessCommand_SSD8(), FH_UART_Receive_UART01(), FH_UART_Receive_UART02(), FH_UART_Receive_UART03(), FH_UART_Receive_UART04(), FH_UART_Receive_UART05(), FH_UART_Receive_UART06(), FH_UART_Receive_UART07(), FH_UART_Receive_UART08(), FH_UART_ReceiveW_UART01(), FH_UART_ReceiveW_UART02(), FH_UART_ReceiveW_UART03(), FH_UART_ReceiveW_UART04(), FH_UART_ReceiveW_UART05(), FH_UART_ReceiveW_UART06(), FH_UART_ReceiveW_UART07(), FH_UART_ReceiveW_UART08(), FH_UART_ResetRB_UART01(), FH_UART_ResetRB_UART02(), FH_UART_ResetRB_UART03(), FH_UART_ResetRB_UART04(), FH_UART_ResetRB_UART05(), FH_UART_ResetRB_UART06(), FH_UART_ResetRB_UART07(), FH_UART_ResetRB_UART08(), FH_UART_RFCommunication(), FH_UART_Send_UART01(), FH_UART_Send_UART02(), FH_UART_Send_UART03(), FH_UART_Send_UART04(), FH_UART_Send_UART05(), FH_UART_Send_UART06(), FH_UART_Send_UART07(), FH_UART_Send_UART08(), FH_UART_SSD16_UART01(), FH_UART_SSD16_UART02(), FH_UART_SSD16_UART03(), FH_UART_SSD16_UART04(), FH_UART_SSD16_UART05(), FH_UART_SSD16_UART06(), FH_UART_SSD16_UART07(), FH_UART_SSD16_UART08(), FH_UART_SSD32_UART01(), FH_UART_SSD32_UART02(), FH_UART_SSD32_UART03(), FH_UART_SSD32_UART04(), FH_UART_SSD32_UART05(), FH_UART_SSD32_UART06(), FH_UART_SSD32_UART07(), FH_UART_SSD32_UART08(), FH_UART_SSD8_UART01(), FH_UART_SSD8_UART02(), FH_UART_SSD8_UART03(), FH_UART_SSD8_UART04(), FH_UART_SSD8_UART05(), FH_UART_SSD8_UART06(), FH_UART_SSD8_UART07(), and FH_UART_SSD8_UART08().

◆ FH_RFCommunication_Message_DataIndex

volatile uint16_t FH_RFCommunication_Message_DataIndex = 0

FH_RFCommunication_Message_DataIndex is the index of the data part of the message frame
It is used in FH_RFCommunication_Receive function to help collect the received data part of the message frame through the Communication Dedicated UART For more information, refer to FH_RFCommunication_Message

Definition at line 137 of file FH_RFCommunication.c.

Referenced by FH_RFCommunication_Receive().

◆ FH_RFCommunication_ReceiveBuf

volatile uint8_t FH_RFCommunication_ReceiveBuf[FH_RFCommunication_ReceiveBufLength]

FH user shall use FH_RFCommunication_ReceiveBuf in the receive ISR (Interrupt Service Routine) of the Communication Dedicated UART in a separate c file
For this to happen, FH user shall just include FH_RFCommunication_GlobalVariables.h there
In other word, FH_RFCommunication_ReceiveBuf array shall receive every byte of the received data there
It is configurable in FH_RFCommunication_Configs.h

Definition at line 112 of file FH_RFCommunication.c.

Referenced by FH_RFCommunication_Receive().

◆ FH_RFCommunication_ReceiveBufIndex

volatile uint16_t FH_RFCommunication_ReceiveBufIndex

FH_RFCommunication_ReceiveBufIndex is the index of FH_RFCommunication_ReceiveBuf

Definition at line 117 of file FH_RFCommunication.c.

Referenced by FH_RFCommunication_Init(), and FH_RFCommunication_Receive().

◆ FH_RFCommunication_ReceiveBufReadIndex

volatile uint16_t FH_RFCommunication_ReceiveBufReadIndex = 0

FH_RFCommunication_ReceiveBufReadIndex is the index of the data which is read from the FH_RFCommunication_ReceiveBuf to be processed
It is used in FH_RFCommunication_Receive function to help process the received data through the Communication Dedicated UART

Definition at line 130 of file FH_RFCommunication.c.

Referenced by FH_RFCommunication_Receive().

◆ FH_RFCommunication_SendBuf

char FH_RFCommunication_SendBuf[FH_RFCommunication_SendBufLength]

FH_RFCommunication_SendBuf is the data buffer for sending back the response to the received message through the Communication Dedicated UART
In other word, it is the data buffer to send the response back to the RobotFramework It is configurable in FH_RFCommunication_Configs.h

Definition at line 124 of file FH_RFCommunication.c.

Referenced by FH_AI_RFCommunication(), FH_AO_RFCommunication(), FH_CAN_RFCommunication(), FH_DI_RFCommunication(), FH_DO_RFCommunication(), FH_PWMI_RFCommunication(), FH_PWMO_RFCommunication(), and FH_UART_RFCommunication().

◆ fh_RFCommunication_State

volatile FH_RFCommunication_State fh_RFCommunication_State = RFCommunication_STATE_IDLE

FH_RFCommunication_State is the enumeration utilized as state machine to collect the different blocks of the message frame from RobotFramework
It is initialized with RFCommunication_STATE_IDLE to be ready to collect a new message from RobotFramework

Definition at line 148 of file FH_RFCommunication.c.

Referenced by FH_RFCommunication_Receive().