ClearCore Library
SysManager.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020 Teknic, Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20  * SOFTWARE.
21  */
22 
31 #ifndef __SYSMANAGER_H__
32 #define __SYSMANAGER_H__
33 
34 #include <stddef.h>
35 #include <stdint.h>
36 #include "Connector.h"
37 #include "PeripheralRoute.h"
38 #include "SysConnectors.h"
39 
40 #ifdef __cplusplus
41 
47 namespace ClearCore {
48 
49 #ifndef HIDE_FROM_DOXYGEN
50 typedef void (*voidFuncPtr)(void);
51 #endif
52 
58 class SysManager {
59 
60 public:
65  typedef enum {
74  } ResetModes;
75 
76 #ifndef HIDE_FROM_DOXYGEN
77 
80  SysManager();
81 
85  void Initialize();
86 
93  bool Ready() {
94  return m_readyForOperations;
95  }
96 #endif
97 
112  Connector *ConnectorByIndex(ClearCorePins connectorIndex);
113 
125  void ResetBoard(ResetModes mode = RESET_NORMAL);
126 
127 #ifndef HIDE_FROM_DOXYGEN
128  // Ideally these would be private, but they need to be called from C
129  // interrupt handler functions that can't be friends without putting them
130  // in a namespace.
131  void SysTickUpdate();
132  void FastUpdate();
133 #endif
134 
135 private:
137  bool m_readyForOperations;
138 
142  void InitClocks();
143 
147  void UpdateFastImpl();
148 
152  void UpdateSlowImpl();
153 
154 }; // SysManager
155 
156 } // ClearCore namespace
157 
158 #endif // defined(__cplusplus)
159 #endif // __SYSMANAGER_H__
Connector * ConnectorByIndex(ClearCorePins connectorIndex)
Pin-determined accessor for ClearCore Connector objects.
void ResetBoard(ResetModes mode=RESET_NORMAL)
Resets the ClearCore.
ResetModes
Reset modes for the ClearCore board.
Definition: SysManager.h:65
Defines the Peripheral Route structure, used in HardwareMapping.
Base class for interacting with all ClearCore connector objects.
Definition: Connector.h:62
Definition: SysManager.h:69
Namespace to encompass the ClearCore board API.
Definition: AdcManager.h:36
Base class for all connector classes.
void(* voidFuncPtr)(void)
Definition: DigitalIn.h:43
ClearCore Board Supervisory System Manager.
Definition: SysManager.h:58
ClearCorePins
ClearCore PIN definitions.
Definition: SysConnectors.h:54