ccNOos  v0.0.0
Build Portable Microcontroller Applications!
Application_Solution.c
Go to the documentation of this file.
1 /** \file Application_Solution.c
2 * \brief <a href="https://www.inmechasol.org/" target="_blank">IMS</a>:
3  <a href="https://github.com/InMechaSol/ccNOos" target="_blank">ccNOos</a>,
4  Implementation for straight C
5 
6  Copyright 2021 <a href="https://www.inmechasol.org/" target="_blank">InMechaSol, Inc</a>
7 
8  Licensed under the Apache License, Version 2.0(the "License");
9  you may not use this file except in compliance with the License.
10  You may obtain a copy of the License at
11 
12  http://www.apache.org/licenses/LICENSE-2.0
13 
14  Unless required by applicable law or agreed to in writing, software
15  distributed under the License is distributed on an "AS IS" BASIS,
16  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  See the License for the specific language governing permissions and
18  limitations under the License.
19 
20 Notes:
21  (.c includes .h) - for straight C or
22  (.cpp includes .c which includes .h) - for C++ wrapped straight C
23  *Always compiled to a single compilation unit, either C or CPP, not both
24 
25 */
26 
27 #include "Application_Solution.h"
28 
29 
30 
31 // Re-usable, portable, cross-platform (SatComACS create() function)
33 {
34  MODdeclareSTRUCT(Mn) outStruct;
35  outStruct.compMod = CreateComputeModuleStruct();
36  outStruct.Terminal = createantennaStruct();
37  outStruct.APT = createaptStruct();
38  outStruct.TPM = createtpmStruct();
39  outStruct.TxRx = createtxRxStruct();
40  outStruct.WMM = createwmmStruct();
41  outStruct.ConsoleMenu = createuiStruct();
42  outStruct.LCDKeyPad = createuiStruct();
43  return outStruct;
44 }
45 
46 // Re-usable, portable, cross-platform (SatComACS setup() function)
48 {
50 
51  // Setup is running in the loop area to handle exceptions...
53  {
54  CLEAR_MODULE_ERRORS(Mn); // do nothing, clear flags
55  MODdataPTR(Mn)->Terminal.State = antState_Error;
56  }
57  // Setup is running in the setup area following power on
58  else
59  {
61  }
62  return RETURN_SUCCESS;
63 }
64 
65 // Re-usable, portable, cross-platform (SatComACS loop() function)
76 {
78 
79  // read devices
84 
85  // process satcomACS
87  switch (MODdataPTR(Mn)->Terminal.State)
88  {
93  default: ErrorInitState(MODdataPTR(Mn)); break;
94  }
95 
96  // write devices
101 
102  return RETURN_SUCCESS;
103 }
104 
105 MODdeclareSYSTICK(Mn) { ; } // do nothing in the systick area
106 
107 
108 
110 {
112  if (uiStructPtrIn != nullptr)
113  {
114  if (uiStructPtrIn->devptr->triggerWriteOperation)
115  {
116  uiStructPtrIn->lines2print = 1;
117  uiStructPtrIn->linesprinted = 0;
118  uiStructPtrIn->clearScreen = ui8TRUE;
119 
120  switch ((enum currentMenuNode)uiStructPtrIn->currentMenuIndex)
121  {
122  case cM_RootNode:
123  ;//writeRootNodeMenuScreen(&MODdataPTR(Mn), uiStructPtrIn);
124  break;
125  case cM_MainMenu:
126  writeSatComACSMenuScreen(MODdataPTR(Mn), uiStructPtrIn);
127  break;
128  case cM_Devices:
130  break;
131  case cM_Terminal:
132  writeTerminalMenuScreen(&MODdataPTR(Mn)->Terminal, uiStructPtrIn);
133  break;
134  case cM_ExecutionSystem:
135  //writeExeSysMenuScreen(&MODdataPTR(Mn), uiStructPtrIn);
136  break;
137  case cM_devAPT:
138  writeAPTMenuScreen(&MODdataPTR(Mn)->APT,uiStructPtrIn);
139  break;
140  case cM_devTXRX:
141  writeTxRxMenuScreen(&MODdataPTR(Mn)->TxRx, uiStructPtrIn);
142  break;
143  case cM_devTPM:
144  writeTPMMenuScreen(&MODdataPTR(Mn)->TPM, uiStructPtrIn);
145  break;
146  }
147  uiStructPtrIn->lines2print = 1;
148  uiStructPtrIn->linesprinted = 0;
149  writeUIHelpString(uiStructPtrIn);
150  //uiStructPtrIn->showHelp = ui8TRUE;
151  uiStructPtrIn->showPrompt = ui8TRUE;
152  uiStructPtrIn->devptr->outbuff.charbuff[0] = 0x00;
153  WriteMenuLine(uiStructPtrIn);
154 
155  uiStructPtrIn->devptr->triggerWriteOperation = ui8FALSE;
156  }
157  }
158 }
159 
160 
162 {
164  if (uiStructPtrIn != nullptr)
165  {
166  GetMenuChars(uiStructPtrIn);
167  if (uiStructPtrIn->devptr->newDataReadIn)
168  {
169 /* switch ((enum currentMenuNode)uiStructPtrIn->currentMenuIndex)
170  {
171  case cM_MainMenu: */
172  parseSatComACSMenuAPI(MODdataPTR(Mn), uiStructPtrIn);
173 /* break;
174  case cM_Devices:
175  parseSatComACSDevicesMenuAPI(MODdataPTR(Mn), uiStructPtrIn);
176  break;
177  case cM_Terminal:
178  parseTerminalMenuAPI(&MODdataPTR(Mn)->Terminal, uiStructPtrIn);
179  break;
180  case cM_devAPT:
181  parseAPTMenuAPI(&MODdataPTR(Mn)->APT, uiStructPtrIn);
182  break;
183  } */
184  uiStructPtrIn->devptr->triggerWriteOperation = ui8TRUE;
185  uiStructPtrIn->devptr->newDataReadIn = ui8FALSE;
186  }
187 
188  }
189 }
190 
191 
192 
193 
195 {
196  // check for new data from devices
197  if (MODdataPTR(Mn)->APT.GPS.newGPSData)
198  {
199  // latch into terminal object
200  MODdataPTR(Mn)->Terminal.GeoLocation.latitude = MODdataPTR(Mn)->APT.GPS.data.lattitude;
201  MODdataPTR(Mn)->Terminal.GeoLocation.longitude = MODdataPTR(Mn)->APT.GPS.data.longitude;
202  MODdataPTR(Mn)->Terminal.GeoLocation.altitude = MODdataPTR(Mn)->APT.GPS.data.altitude;
203  // clear flag
204  MODdataPTR(Mn)->APT.GPS.newGPSData = ui8FALSE;
205  // set connected flag
206  MODdataPTR(Mn)->APT.GPS.Connected = ui8TRUE;
207 
208  }
209  // check for new data from eCompass
210  if ((MODdataPTR(Mn)->APT.eCompass.neweCompassData))
211  {
212  // latch into terminal object
213  MODdataPTR(Mn)->Terminal.ReflectorAttitude.roll = MODdataPTR(Mn)->APT.eCompass.data.roll;
214  MODdataPTR(Mn)->Terminal.ReflectorAttitude.pitch = MODdataPTR(Mn)->APT.eCompass.data.pitch;
215  MODdataPTR(Mn)->Terminal.ReflectorAttitude.yaw = MODdataPTR(Mn)->APT.eCompass.data.yaw;
216  // clear flag
217  MODdataPTR(Mn)->APT.eCompass.neweCompassData = ui8FALSE;
218  // set connected flag
219  MODdataPTR(Mn)->APT.GPS.Connected = ui8TRUE;
220  }
221  // check for new data from down converter
222  if (MODdataPTR(Mn)->TPM.freqConverter.newFreqConvData)
223  {
224  if (MODdataPTR(Mn)->TPM.freqConverter.data.LockedOnRequiredLOFreq)
225  {
226  // latch into terminal object
227  }
228  // clear flag
229  MODdataPTR(Mn)->TPM.freqConverter.newFreqConvData = ui8FALSE;
230  }
231  // check for new data from power meter
232  if (MODdataPTR(Mn)->TPM.powerMeter.newPowerMeterValue)
233  {
234  if (MODdataPTR(Mn)->TPM.freqConverter.data.LockedOnRequiredLOFreq)
235  {
236  // latch into terminal object
237  MODdataPTR(Mn)->Terminal.CommSystem.RxSignalStrengthMetric = MODdataPTR(Mn)->TPM.powerMeter.data.PowerMeasuredinBanddB;
238  }
239  // clear flag
240  MODdataPTR(Mn)->TPM.powerMeter.newPowerMeterValue = ui8FALSE;
241  }
242 }
243 
244 
246 {
247  // if anything at all is wrong, for whatever reason
248  // it must be resolved cyclically here
249 
250  // only if everything is clear should we transition state
251 
252 }
254 {
255  // nothing at all is wrong, completely ready to acquire
256  // wating for command to do so
257 
258  // only transition on error or command to acquire
259 
260 }
262 {
263  // nothing at all is wrong,
264  // acquisition is in progress
265 
266  // only transition on error or acquisition
267 
268 }
270 {
271  // nothing at all is wrong,
272  // just monitoring and responding to commands
273 
274  // only transition on error or commands to reacquire
275 
276 }
277 
279 {
280  MODparseINPUT(Mn)(&MODdataPTR(Mn)->compMod, &MODdataPTR(Mn)->LCDKeyPad);
281 }
283 {
284  MODprintMENU(Mn)(&MODdataPTR(Mn)->compMod, &MODdataPTR(Mn)->LCDKeyPad);
285 }
287 {
288  MODparseINPUT(Mn)(&MODdataPTR(Mn)->compMod, &MODdataPTR(Mn)->ConsoleMenu);
289 }
291 {
292  MODprintMENU(Mn)(&MODdataPTR(Mn)->compMod, &MODdataPTR(Mn)->ConsoleMenu);
293 }
createtpmStruct
struct tpmStruct createtpmStruct()
Definition: TPMmodule.c:47
GetMenuChars
void GetMenuChars(struct uiStruct *uiStructPtrin)
Definition: Application_Platform_Main.c:111
tryWriteTPMData
void tryWriteTPMData(struct tpmStruct *tpmStructPtrIn)
Definition: TPMmodule.c:61
parseSatComACSMenuAPI
void parseSatComACSMenuAPI(struct SatComACSStruct *satcomacsStructPtrIn, struct uiStruct *uiStructPtrIn)
Definition: MenuAPI.c:141
Mn
MODdeclareCREATE() Mn(MODdeclareCREATEINS)
Definition: Application_Solution.c:29
MODdeclarePTRIN
#define MODdeclarePTRIN(mNAME)
Definition: version_config.h:284
CLEAR_MODULE_ERRORS
#define CLEAR_MODULE_ERRORS(mNAME)
Definition: version_config.h:339
tryReadConsoleMenu
void tryReadConsoleMenu(MODdeclarePTRIN(Mn))
Definition: Application_Solution.c:286
antState_Acquiring
@ antState_Acquiring
Definition: satComControl.h:87
UpdateTerminalState
void UpdateTerminalState(MODdeclarePTRIN(Mn))
Definition: Application_Solution.c:194
MODprintMENU
#define MODprintMENU(mNAME)
Definition: version_config.h:260
writeSatComACSDevicesMenuScreen
void writeSatComACSDevicesMenuScreen(struct SatComACSStruct *satcomacsStructPtrIn, struct uiStruct *uiStructPtrIn)
Definition: MenuAPI.c:244
antState_NotAcquired
@ antState_NotAcquired
Definition: satComControl.h:86
tryWriteConsoleMenu
void tryWriteConsoleMenu(MODdeclarePTRIN(Mn))
Definition: Application_Solution.c:290
MODDATAPTR_RETURN
#define MODDATAPTR_RETURN(mNAME)
Definition: version_config.h:323
createantennaStruct
struct antennaStruct createantennaStruct()
Definition: satComControl.c:70
MODDATAPTR_ERROR_RETURN
#define MODDATAPTR_ERROR_RETURN(mNAME)
Definition: version_config.h:331
antState_Error
@ antState_Error
Definition: satComControl.h:89
ui8FALSE
#define ui8FALSE
Definition: version_config.h:190
writeTerminalMenuScreen
void writeTerminalMenuScreen(struct antennaStruct *terminalStructPtrIn, struct uiStruct *uiStructPtrIn)
Definition: MenuAPI.c:316
MODdeclarePRINTm
MODdeclarePRINTm(Mn)
Definition: Application_Solution.c:109
tryReadTPMData
void tryReadTPMData(struct tpmStruct *tpmStructPtrIn)
Definition: TPMmodule.c:55
MODdeclareLOOP
MODdeclareLOOP(Mn)
Definition: Application_Solution.c:116
NotAcquiredState
void NotAcquiredState(MODdeclarePTRIN(Mn))
Definition: Application_Solution.c:253
MODdeclarePARSEi
MODdeclarePARSEi(Mn)
Definition: Application_Solution.c:161
writeSatComACSMenuScreen
void writeSatComACSMenuScreen(struct SatComACSStruct *satcomacsStructPtrIn, struct uiStruct *uiStructPtrIn)
Definition: MenuAPI.c:191
MODdeclareCREATEINS
#define MODdeclareCREATEINS
Definition: Application_Solution.h:58
IF_MODULE_ERROR
#define IF_MODULE_ERROR(mNAME)
Definition: version_config.h:335
createtxRxStruct
struct txRxStruct createtxRxStruct()
Definition: TxRxmodule.c:30
WriteMenuLine
void WriteMenuLine(struct uiStruct *uiStructPtrin)
Definition: Application_Platform_Main.c:144
MODparseINPUT
#define MODparseINPUT(mNAME)
Definition: version_config.h:264
tryWriteLCDKeyPad
void tryWriteLCDKeyPad(MODdeclarePTRIN(Mn))
Definition: Application_Solution.c:282
MODdeclareSYSTICK
MODdeclareSYSTICK(Mn)
Definition: Application_Solution.c:157
ui8TRUE
#define ui8TRUE
Definition: version_config.h:191
writeAttenuatorValues
void writeAttenuatorValues(struct txRxStruct *txRxStructPtrIn)
Definition: Application_Platform_Main.c:72
tryReadLCDKeyPad
void tryReadLCDKeyPad(MODdeclarePTRIN(Mn))
Definition: Application_Solution.c:278
MODdeclareCREATE
#define MODdeclareCREATE(mNAME)
Definition: version_config.h:292
tryReadAPTData
void tryReadAPTData(struct aptStruct *aptStructPtrIn)
Definition: APTmodule.c:69
MODdeclareSTRUCT
#define MODdeclareSTRUCT(mNAME)
Definition: version_config.h:277
AcquiredState
void AcquiredState(MODdeclarePTRIN(Mn))
Definition: Application_Solution.c:269
MODdataPTR
#define MODdataPTR(mNAME)
Definition: version_config.h:244
createaptStruct
struct aptStruct createaptStruct()
Definition: APTmodule.c:49
ErrorInitState
void ErrorInitState(MODdeclarePTRIN(Mn))
Definition: Application_Solution.c:245
MODdeclareSETUP
MODdeclareSETUP(Mn)
Definition: Application_Solution.c:79
antState_Acquired
@ antState_Acquired
Definition: satComControl.h:88
linkAPIioDevices
void linkAPIioDevices(struct SatComACSStruct *satcomacsStructPtrIn)
Definition: Application_Platform_Main.c:73
writeTxRxMenuScreen
void writeTxRxMenuScreen(struct txRxStruct *txRxStructPtrIn, struct uiStruct *uiStructPtrIn)
Definition: MenuAPI.c:384
writeAPTMenuScreen
void writeAPTMenuScreen(struct aptStruct *aptStructPtrIn, struct uiStruct *uiStructPtrIn)
Definition: MenuAPI.c:452
AcquiringState
void AcquiringState(MODdeclarePTRIN(Mn))
Definition: Application_Solution.c:261
writeTPMMenuScreen
void writeTPMMenuScreen(struct tpmStruct *tpmStructPtrIn, struct uiStruct *uiStructPtrIn)
Definition: MenuAPI.c:519
Application_Solution.h
CreateComputeModuleStruct
struct computeModuleStruct CreateComputeModuleStruct()
Definition: compute_module.c:30
RETURN_SUCCESS
#define RETURN_SUCCESS
Function Return Value for Success.
Definition: version_config.h:87
writeUIHelpString
void writeUIHelpString(struct uiStruct *uiStructPtrIn)
Definition: MenuAPI.c:29
createwmmStruct
struct wmmStruct createwmmStruct()
Definition: APTmodule.c:56