FreeHIL
Loading...
Searching...
No Matches
FH_UART_Send_C.c
Go to the documentation of this file.
1/**
2 * @file
3 * @brief
4 * <b>File Map:</b>\n
5 * <b>FH_Root</b>, Section <b>FH_Perif</b>, <b>FH_UART</b>, <b>Cmd</b> (Command), <b>Send</b>, <b>Send_C</b> (Send Call)\n
6 * Functions in this file, Call the related function in <b>FH_Functions</b>, Section <b>FH_UART</b> according to the first parameter of the Data in the message frame
7 *
8 * @attention <b>FH</b> user could left this file intact
9 *
10 *******************************************************************************
11 * SPDX-License-Identifier: Apache-2.0
12 *
13 * Copyright 2026 Vahid Hasirchi
14 *
15 * Licensed under the Apache License, Version 2.0 (the "License");
16 * you may not use this file except in compliance with the License.
17 * You may obtain a copy of the License at
18 *
19 * http://www.apache.org/licenses/LICENSE-2.0
20 *
21 * Unless required by applicable law or agreed to in writing, software
22 * distributed under the License is distributed on an "AS IS" BASIS,
23 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24 * See the License for the specific language governing permissions and
25 * limitations under the License.
26 ********************************************************************************
27
28 *
29 * <b>For more information refer to FreeHIL.com</b>
30 *
31*/
32
33/* Includes ------------------------------------------------------------------*/
35
36#include "../../../../../../../FH_Embedded/FH_Root/FH_General/FH_GeneralFunctions/FH_GeneralFunctions.h"
38
39#if FH_UART_MaxPeripheralNumber > 0 // It is configurable in FH_DevicePeripherals.h
40
41/**
42 * @brief This function calls the related function in <b>FH_Functions</b>, Section <b>FH_UART</b> according to the first parameter of the Data in the message frame
43 *
44 * @param fh_RFCommunication_Message
45 * The message frame set by <b>RobotFramework</b>
46 * @param fH_UART_Send_FuncPtr
47 * The array of function pointers
48 *
49 * @verbatim
50 ==============================================================================
51 ##### RobotFramework Example #####
52 ==============================================================================
53 @{MessageData} = Create List ${UART01} 02 B1 FF
54 &{Message} = Create Dictionary DeviceAddress=${DeviceAddress_01} Function=${Function_UART} Command=${UART_Commands_Send} Data=@{MessageData}
55 ${Result} SendMessage &{Message}
56
57 Comments:
58
59 UART01 => It indicates the UART 01
60 02 => Example length of the data to be sent
61 B1 FF => Example data (0xB1, 0xFF) to be sent (or apart from the data to be sent, it may include some other data like ID, Filter, ... to be processed too, if need be) through the <b>UART 01</b>\n
62 DeviceAddress_01 => It shall be equal to the address of the device: FH_RFCommunication_DeviceAddress
63 Function_UART => It is the function in the message frame
64 UART_Commands_Send => It is the command of the function in the message frame
65 @endverbatim
66 *
67 * @return FH_ErrorInfo is returned
68 *
69
70*/
72{
73 FH_ErrorInfo fh_ErrorInfo; // Error Information
74 FH_ResetErrorInfo(&fh_ErrorInfo); // Reset Error Information to default
75
76 for (uint8_t i = 1; i <= FH_UART_MaxPeripheralNumber; i++) // Iteration through all defined peripherals
77 {
78 if (i == fh_RFCommunication_Message -> Data[UART_Send_PeripheralNumber]) // If the PeripheralNumber in the message frame is met
79 {
80 if (fH_UART_Send_FuncPtr[i-1] != NULL_PTR) // If the address of the function is truly assigned
81 {
82 fh_ErrorInfo = fH_UART_Send_FuncPtr[i-1](fh_RFCommunication_Message); // Call the related function
83 }
84 else
85 {
86 fh_ErrorInfo.error_code = FH_ERROR_Root; // There is Root error
87 }
88 return fh_ErrorInfo;
89 }
90 }
91 fh_ErrorInfo.error_code = FH_ERROR_MessageFrame; // There is message frame error
92 return fh_ErrorInfo;
93}
94
95#endif