Initial commit

Dependencies:   FastPWM

Revision:
0:bb348c97df44
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-dev-master/targets/TARGET_STM/TARGET_STM32F4/TARGET_STM32F439xI/TARGET_MODULE_UBLOX_ODIN_W2/sdk/ublox-odin-w2-drivers/cb_hw.h	Wed Sep 16 01:11:49 2020 +0000
@@ -0,0 +1,222 @@
+/*---------------------------------------------------------------------------
+ * Copyright (c) 2016, u-blox Malmö, All Rights Reserved
+ * SPDX-License-Identifier: LicenseRef-PBL
+ *
+ * This file and the related binary are licensed under the
+ * Permissive Binary License, Version 1.0 (the "License");
+ * you may not use these files except in compliance with the License.
+ *
+ * You may obtain a copy of the License here:
+ * LICENSE-permissive-binary-license-1.0.txt and at
+ * https://www.mbed.com/licenses/PBL-1.0
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Component: CB HW
+ * File     : cb_hw.h
+ *
+ * Description: Setup of hardware.
+ *              TODO clean up this interface..
+ *-------------------------------------------------------------------------*/
+ 
+#ifndef _CB_HW_H_
+#define _CB_HW_H_
+
+#include "cb_comdefs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*===========================================================================
+ * DEFINES
+ *=========================================================================*/
+#define cbHW_SECUREBOOT_SIGN_LENGTH  344
+#define cbHW_FW_NAME_MAX_LENGTH      22
+#define cbHW_FW_NAME_MIN_LENGTH      1
+#define cbHW_FW_FLAG_MAX_LENGTH      8 // 8 bit fields
+#define cbHW_FW_FLAG_MIN_LENGTH      1
+#define cbHW_UNIQUE_ID_SIZE          12
+
+typedef enum {
+    cbHW_PCB_VERSION_UNKNOWN,
+    cbHW_PCB_VERSION_1,
+    cbHW_PCB_VERSION_2,
+    cbHW_PCB_VERSION_3,
+    cbHW_PCB_VERSION_4,
+    cbHW_PCB_VERSION_5
+} cbHW_PCBVersion;
+
+typedef enum {
+    cbHW_RESET_REASON_UNKNOWN = 0,
+    cbHW_RESET_REASON_FW_UPDATE,
+    cbHW_RESET_REASON_PRODUCTION_MODE
+} cbHW_ResetReason;
+
+typedef enum {
+    cbHW_FLOW_CONTROL_DISABLED = 0,
+    cbHW_FLOW_CONTROL_ENABLED
+} cbHW_FlowControl;
+
+typedef enum {
+    cbHW_IRQ_HIGH = 2U,
+    cbHW_IRQ_MEDIUM = 3U,
+    cbHW_IRQ_DEFAULT = 5U,
+    cbHW_IRQ_LOW = 12U
+} cbHW_PRIO_LVL;
+
+typedef enum {
+    cbHW_SYSTICK_DISABLED,
+    cbHW_SYSTICK_LOW_FREQ,
+    cbHW_SYSTICK_DEFAULT,
+} cbHW_SysTickMode;
+
+typedef enum {
+    cbHW_HASH_MD5
+} cbHW_HashType;
+/*===========================================================================
+ * TYPES
+ *=========================================================================*/
+
+typedef void (*cbHW_StopModeStatusEvt)(cb_boolean enable);
+typedef void (*cbHW_SysTickCb)(void);
+
+/*===========================================================================
+ * FUNCTIONS
+ *=========================================================================*/
+
+void cbHW_init(void);
+void cbHW_registerStopModeStatusEvt(cbHW_StopModeStatusEvt evt);
+void cbHW_disableIrq(void);
+void cbHW_enableIrq(void);
+void cbHW_disableAllIrq(void); // Should not be used unless extremely critical
+void cbHW_enableAllIrq(void);
+void cbHW_enterSleepMode(void);
+void cbHW_enterStopMode(void);
+void cbHW_setWakeupEvent(void);
+void cbHW_resetWakeupEvent(void);
+void cbHW_setSysTickMode(cbHW_SysTickMode sysTickMode);
+
+/**
+ * Wait for specified amount of microseconds. May be interrupt dependent.
+ * @note Granularity may vary between systems. Will be at least systick based.
+ * The system may go to sleep during the delay.
+ * 
+ * @param us Time to delay in microseconds.
+ */
+void cbHW_delay(cb_uint32 us);
+
+/**
+* Puts the chip in NVIC soft reset
+* @note: this does not reset any watchdog timer already enabled
+*/
+void cbHW_reset(void);
+
+/**
+* Wait for specified amount of microseconds using a software loop.
+* @note Granularity may vary between systems. 
+* The system will not go to sleep during the delay.
+*
+* @param us Time to delay in microseconds.
+*/
+void cbHW_softDelay(cb_uint32 us);
+cb_boolean cbHW_sysFreqIsSupported(cb_uint32 sysFreq);
+void cbHW_setSysFreq(cb_uint32 sysFreq);
+cb_uint32 cbHW_getSysFreq(void);
+void cbHW_writeBackupRegister(cb_uint32 registerId, cb_uint32 value);
+cb_uint32 cbHW_readBackupRegister(cb_int32 registerId);
+void cbHW_getHWId(cb_uint8 uid[cbHW_UNIQUE_ID_SIZE]);
+cbHW_PCBVersion cbHW_getPCBVersion(void);
+
+/**
+* Register a system tick callback.
+* The system tick will be generated once evert millisecond.
+*
+* @param cb Callback function for the system tick timer.
+*/
+void cbHW_registerSysTickISRCallback(cbHW_SysTickCb cb);
+
+/**
+* Get the current tick frequency for the @ref cbHW_getTicks tick counter.
+* @note The frequency may be altered with different system clocks and power modes.
+*
+* @return The current tick frequency.
+*/
+cb_uint32 cbHW_getTickFrequency(void);
+
+/**
+* Get the current value of the tick counter.
+* Time base in @ref cbHW_getTickFrequency.
+* @note The value may wrap.
+*
+* @return The current tick counter.
+*/
+cb_uint32 cbHW_getTicks(void);
+
+/**
+* Enter forced boot mode. The bootloader will start in x-modem 
+* mode and emit CCCC.. to notify that it is ready to receive
+* a new fw.
+* This function will return and boot mode will be entered
+* after a device specific timeout.
+* @param address x-modem file download start address
+* @param baudrate x-modem download buadrate
+* @return None
+*/
+void cbHW_forceBoot(cb_uint32 address, cb_uint32 baudrate);
+
+/**
+* Enter forced boot mode. The bootloader will start in x-modem
+* mode and emit CCCC.. to notify that it is ready to receive
+* a new fw.
+* This function will return and boot mode will be entered
+* after a device specific timeout.
+* @param address x-modem file download start address
+* @param baudrate x-modem download buadrate
+* @param fwId firmware id
+* @param fwSize firmware file size
+* @param fwSignature firmware signature
+* @param fwName firmware name
+* @param fwFlags firmware flags
+* @return None
+*/
+void cbHW_forceBootSecure(
+    cb_uint32 address,
+    cb_uint32 baudrate,
+    cb_uint32 fwId,
+    cb_uint32 fwSize,
+    cb_char* fwSignature,
+    cb_char* fwName,
+    cb_char* fwFlags);
+
+/**
+* Cancel entry into boot mode. The user canceled entry
+* into forced boot mode.
+* This function will clean up the RTC memory that was
+* configured for a forced boot operation. Use this function
+* for both cbHW_forceBootSecure and cbHW_forceBoot
+* @return None
+*/
+void cbHW_cancelforceBoot(void);
+
+void cbHW_enterProductionMode(cbHW_FlowControl flowControl);
+cbHW_ResetReason cbHW_resetReason(void);
+cbHW_FlowControl cbHW_flowControl(void);
+
+/**
+* Calculates a hash over a dataset.
+* @param type: type of hashing, MD5 for now
+* @param pInData: pointer to Data over which the hashing should be done
+* @param indataSize: size of data buffer.
+* @param pOutData: pointer to result data
+* @return None
+*/
+void cbHW_hash(cbHW_HashType type, const cb_uint8* pInData,cb_uint32 indataSize, cb_uint8* pOutData);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+