FreeHIL
Loading...
Searching...
No Matches
FH_DI_Init_H.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_DI</b> (Digital Input), <b>Cmd</b> (Command), <b>Init</b>, <b>Init_H</b> (Init Health)\n
6 * Functions in this file, verify the health of the different message frames related to <b>DI</b> (Digital Input)
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_DI_MaxPeripheralNumber > 0 // It is configurable in FH_DevicePeripherals.h
40
41/**
42 * @brief This function verifies the health of <b>FH_DI_Commands_Init</b> command
43 *
44 * @param fh_RFCommunication_Message
45 * The message frame set by <b>RobotFramework</b>
46 *
47 * @verbatim
48 ==============================================================================
49 ##### RobotFramework Example #####
50 ==============================================================================
51 @{MessageData} = Create List ${DI01}
52 &{Message} = Create Dictionary DeviceAddress=${DeviceAddress_01} Function=${Function_DI} Command=${DI_Commands_Init} Data=@{MessageData}
53 ${Result} SendMessage &{Message}
54
55 Comments:
56
57 DI01 => It indicates the Digital Input 01
58 DeviceAddress_01 => It shall be equal to the address of the device: FH_RFCommunication_DeviceAddress
59 Function_DI => It is the function in the message frame
60 DI_Commands_Init => It is the command of the function in the message frame
61 @endverbatim
62 *
63 *
64 * @return FH_ErrorInfo is returned
65 *
66
67*/
69{
70 FH_ErrorInfo fh_ErrorInfo; // Error Information
71 FH_ResetErrorInfo(&fh_ErrorInfo); // Reset Error Information to default
72
73 uint8_t FH_MessageDataLength; // It temporarily stores the DataLength in the message frame
74 uint8_t FH_PeripheralNumber; // It temporarily stores the PeripheralNumber (Data[0]) in the message frame
75
76 // Verifying the minimum possible length in the message frame
77 FH_MessageDataLength = fh_RFCommunication_Message -> DataLength;
78 if (FH_MessageDataLength < FH_DI_MinCommandSize_Init) // If the length is less than expected value
79 {
80 fh_ErrorInfo.error_code = FH_ERROR_MessageFrame; // There is message frame error
81 return fh_ErrorInfo;
82 }
83
84 // Verifying the possible PeripheralNumber in the message frame
85 FH_PeripheralNumber = fh_RFCommunication_Message -> Data[0];
86 if (FH_PeripheralNumber == 0 || FH_PeripheralNumber > FH_DI_MaxPeripheralNumber) // If the PeripheralNumber is not within the expected value
87 {
88 fh_ErrorInfo.error_code = FH_ERROR_MessageFrame; // There is message frame error
89 return fh_ErrorInfo;
90 }
91
92 fh_ErrorInfo.error_code = FH_ERROR_OK; // There is no error
93 return fh_ErrorInfo;
94}
95
96/**
97 * @brief This function verifies the health of <b>FH_DI_Commands_InitMULTI</b> command
98 *
99 * @param fh_RFCommunication_Message
100 * The message frame set by <b>RobotFramework</b>
101 *
102 * @verbatim
103 ==============================================================================
104 ##### RobotFramework Example #####
105 ==============================================================================
106 @{MessageData} = Create List ${DI01}
107 &{Message} = Create Dictionary DeviceAddress=${DeviceAddress_01} Function=${Function_DI} Command=${DI_Commands_InitMULTI} Data=@{MessageData}
108 ${Result} SendMessage &{Message}
109
110 Comments:
111
112 01 02 03 04 05 06 07 08 => Example data as the first 8 parameters
113 DeviceAddress_01 => It shall be equal to the address of the device: FH_RFCommunication_DeviceAddress
114 Function_DI => It is the function in the message frame
115 DI_Commands_InitMULTI => It is the command of the function in the message frame
116 @endverbatim
117 *
118 * @return FH_ErrorInfo is returned
119 *
120
121*/
123{
124 FH_ErrorInfo fh_ErrorInfo; // Error Information
125 FH_ResetErrorInfo(&fh_ErrorInfo); // Reset Error Information to default
126
127 uint8_t FH_MessageDataLength; // It temporarily stores the DataLength in the message frame
128
129 // Verifying the minimum possible length in the message frame
130 FH_MessageDataLength = fh_RFCommunication_Message -> DataLength;
131 if (FH_MessageDataLength < FH_DI_MinCommandSize_InitMULTI) // If the length is less than expected value
132 {
133 fh_ErrorInfo.error_code = FH_ERROR_MessageFrame; // There is message frame error
134 return fh_ErrorInfo;
135 }
136
137 fh_ErrorInfo.error_code = FH_ERROR_OK; // There is no error
138 return fh_ErrorInfo;
139}
140
141#endif