# HG changeset patch
# User ideenmodellierer
# Date 1552510285 -3600
# Node ID 331882a89421654ead129247f5f27a0d91deabd2
# Parent 9ecc2e60418df7ecf04c0de4d650939fbee49718
Removed not suppoted wireless feature
The code contains parts of a wireless sensor feature which is not supported by the OSTC4 hardware.
diff -r 9ecc2e60418d -r 331882a89421 Small_CPU/Inc/scheduler.h
--- a/Small_CPU/Inc/scheduler.h Wed Mar 13 21:49:25 2019 +0100
+++ b/Small_CPU/Inc/scheduler.h Wed Mar 13 21:51:25 2019 +0100
@@ -29,10 +29,9 @@
#include "settings.h"
/* Types -------------------------------------------------------------*/
-#define MAX_WIRELESS_BYTES 10
#define SENSOR_PRESSURE_ID 0
#define MAX_SENSORS 1
-
+
typedef struct
{
uint8_t mode;
@@ -59,9 +58,6 @@
uint8_t ButtonResponsiveness[4];
uint8_t chargerStatus;
uint8_t dataSendToSlaveIsNotValidCount;
- uint8_t wirelessdata[MAX_WIRELESS_BYTES];
- uint8_t wirelessReceived;
- uint8_t wirelessConfidenceStatus;
uint8_t ButtonPICdata[4];
uint8_t accidentFlag;
uint32_t accidentRemainingSeconds;
@@ -81,7 +77,6 @@
uint8_t counterPressure100msec;
uint8_t counterCompass100msec;
uint8_t counterAmbientLight100msec;
- uint16_t counterWireless1msec;
uint32_t tickstart;
} SScheduleCtrl;
diff -r 9ecc2e60418d -r 331882a89421 Small_CPU/Inc/wireless.h
--- a/Small_CPU/Inc/wireless.h Wed Mar 13 21:49:25 2019 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/**
- ******************************************************************************
- * @file wireless.h
- * @author heinrichs weikamp gmbh
- * @date 02-July-2015
- * @version V0.0.1
- * @since 02-July-2015
- * @brief Data transfer via magnetic field using Manchester code
- *
- @verbatim
- ==============================================================================
- ##### How to use #####
- ==============================================================================
- @endverbatim
- ******************************************************************************
- * @attention
- *
- *
© COPYRIGHT(c) 2015 heinrichs weikamp
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef WIRELESS_H
-#define WIRELESS_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* Includes ------------------------------------------------------------------*/
-#include
-
-void wireless_init(void);
-
-void wireless_trigger_FallingEdgeSignalHigh(void);
-void wireless_trigger_RisingEdgeSilence(void);
-
-uint8_t wireless_evaluate(uint8_t *dataOut, uint8_t maxData, uint8_t *confidence);
-uint8_t wireless_evaluate_crc_error(uint8_t *dataIn, uint8_t maxData);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* WIRELESS_H */
-
-/************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/
diff -r 9ecc2e60418d -r 331882a89421 Small_CPU/Src/baseCPU2.c
--- a/Small_CPU/Src/baseCPU2.c Wed Mar 13 21:49:25 2019 +0100
+++ b/Small_CPU/Src/baseCPU2.c Wed Mar 13 21:51:25 2019 +0100
@@ -141,7 +141,6 @@
#include "batteryGasGauge.h"
#include "batteryCharger.h"
#include "scheduler.h"
-#include "wireless.h"
#include "tm_stm32f4_otp.h"
// From Common/Inc:
@@ -240,9 +239,6 @@
static void EXTI_Test_Button_Init(void);
static void EXTI_Test_Button_DeInit(void);
-static void MX_EXTI_wireless_Init(void);
-static void MX_EXTI_wireless_DeInit(void);
-
//static void EXTILine01_Button_DeInit(void);
static void GPIO_LED_Init(void);
static void GPIO_Power_MainCPU_Init(void);
@@ -373,7 +369,7 @@
// ReInit_battery_charger_status_pins();
compass_init(0, 7);
accelerator_init();
- wireless_init();
+
if (global.mode == MODE_BOOT) {
GPIO_Power_MainCPU_OFF();
HAL_Delay(100); // for GPIO_Power_MainCPU_ON();
@@ -382,18 +378,9 @@
SPI_synchronize_with_Master();
MX_DMA_Init();
MX_SPI1_Init();
- MX_EXTI_wireless_Init();
SPI_Start_single_TxRx_with_Master(); /* be prepared for the first data exchange */
dohardspisync = 1;
EXTI_Test_Button_Init();
-
- /*
- uint8_t dataWireless[64];
- while(1)
- {
- wireless_evaluate_and_debug(dataWireless,64);
- }
- */
global.mode = MODE_SURFACE;
break;
@@ -462,7 +449,6 @@
NOT_USED_AT_THE_MOMENT_scheduleSleepMode();
*/
EXTI_Test_Button_DeInit();
- MX_EXTI_wireless_DeInit();
if (hasExternalClock())
SystemClock_Config_HSI();
sleep_prepare();
@@ -479,11 +465,9 @@
GPIO_Power_MainCPU_ON();
compass_init(0, 7);
accelerator_init();
- wireless_init();
SPI_synchronize_with_Master();
MX_DMA_Init();
MX_SPI1_Init();
- MX_EXTI_wireless_Init();
SPI_Start_single_TxRx_with_Master();
// EXTILine0_Button_DeInit(); not now, later after testing
@@ -519,26 +503,12 @@
*/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
- if (GPIO_Pin == WIRELSS_RISING_GPIO_PIN) {
- wireless_trigger_RisingEdgeSilence();
- }
-
- else
-
- if (GPIO_Pin == WIRELSS_FALLING_GPIO_PIN) {
- wireless_trigger_FallingEdgeSignalHigh();
- }
-
- else
-
if (GPIO_Pin == BUTTON_OSTC_GPIO_PIN) {
if (global.mode == MODE_SLEEP) {
global.mode = MODE_BOOT;
}
}
-
else
-
if (GPIO_Pin == BUTTON_TEST_GPIO_PIN) {
if (!global.demo_mode && (global.mode == MODE_SURFACE)) {
global.demo_mode = 1;
@@ -900,57 +870,6 @@
HAL_NVIC_DisableIRQ( BUTTON_TEST_IRQn);
}
-static void MX_EXTI_wireless_Init(void) {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- WIRELSS_POWER_HAL_RCC_GPIO_CLK_ENABLE();
- GPIO_InitStructure.Pin = WIRELSS_POWER_GPIO_PIN;
- GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStructure.Pull = GPIO_NOPULL;
- HAL_GPIO_Init( WIRELSS_POWER_GPIO_PORT, &GPIO_InitStructure);
- HAL_GPIO_WritePin( WIRELSS_POWER_GPIO_PORT, WIRELSS_POWER_GPIO_PIN,
- GPIO_PIN_SET);
-
- WIRELSS_RISING_HAL_RCC_GPIO_CLK_ENABLE();
- GPIO_InitStructure.Pin = WIRELSS_RISING_GPIO_PIN;
- GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING;
- GPIO_InitStructure.Pull = GPIO_NOPULL;
- HAL_GPIO_Init( WIRELSS_RISING_GPIO_PORT, &GPIO_InitStructure);
-
- HAL_NVIC_SetPriority( WIRELSS_RISING_IRQn, 0x02, 0);
- HAL_NVIC_EnableIRQ( WIRELSS_RISING_IRQn);
-
- WIRELSS_FALLING_HAL_RCC_GPIO_CLK_ENABLE();
- GPIO_InitStructure.Pin = WIRELSS_FALLING_GPIO_PIN;
- GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
- GPIO_InitStructure.Pull = GPIO_NOPULL;
- HAL_GPIO_Init( WIRELSS_FALLING_GPIO_PORT, &GPIO_InitStructure);
-
- HAL_NVIC_SetPriority( WIRELSS_FALLING_IRQn, 0x02, 0);
- HAL_NVIC_EnableIRQ( WIRELSS_FALLING_IRQn);
-
-}
-
-static void MX_EXTI_wireless_DeInit(void) {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- GPIO_InitStructure.Mode = GPIO_MODE_ANALOG;
- GPIO_InitStructure.Speed = GPIO_SPEED_LOW;
- GPIO_InitStructure.Pull = GPIO_NOPULL;
-
- GPIO_InitStructure.Pin = WIRELSS_RISING_GPIO_PIN;
- HAL_GPIO_Init( WIRELSS_RISING_GPIO_PORT, &GPIO_InitStructure);
-
- GPIO_InitStructure.Pin = WIRELSS_FALLING_GPIO_PIN;
- HAL_GPIO_Init( WIRELSS_FALLING_GPIO_PORT, &GPIO_InitStructure);
-
- GPIO_InitStructure.Pin = WIRELSS_POWER_GPIO_PIN;
- HAL_GPIO_Init( WIRELSS_POWER_GPIO_PORT, &GPIO_InitStructure);
-
- HAL_NVIC_DisableIRQ( WIRELSS_RISING_IRQn);
- HAL_NVIC_DisableIRQ( WIRELSS_FALLING_IRQn);
-}
-
/* NUCLEO C 13
KEY_BUTTON_GPIO_CLK_ENABLE();
GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING;
diff -r 9ecc2e60418d -r 331882a89421 Small_CPU/Src/scheduler.c
--- a/Small_CPU/Src/scheduler.c Wed Mar 13 21:49:25 2019 +0100
+++ b/Small_CPU/Src/scheduler.c Wed Mar 13 21:51:25 2019 +0100
@@ -40,7 +40,6 @@
#include "calc_crush.h"
#include "stm32f4xx_hal_rtc_ex.h"
#include "decom.h"
-#include "wireless.h"
#include "tm_stm32f4_otp.h"
@@ -87,8 +86,6 @@
void copyTissueData(void);
void copyVpmCrushingData(void);
void copyDeviceData(void);
-void changeAgeWirelessData(void);
-void copyWirelessData(void);
void copyPICdata(void);
uint16_t schedule_update_timer_helper(int8_t thisSeconds);
@@ -478,7 +475,6 @@
Scheduler.counterCompass100msec = 0;
Scheduler.counterPressure100msec = 0;
Scheduler.counterAmbientLight100msec = 0;
- Scheduler.counterWireless1msec = 0;
global.deviceData.diveCycles.value_int32++;
scheduleSetDate(&global.deviceData.diveCycles);
@@ -490,19 +486,6 @@
lasttick = HAL_GetTick();
ticksdiff = time_elapsed_ms(Scheduler.tickstart,lasttick);
-
- //Evaluate wireless data every ms, if present
- if(ticksdiff > Scheduler.counterWireless1msec)
- {
- Scheduler.counterWireless1msec++;
- changeAgeWirelessData();
- global.wirelessReceived = wireless_evaluate(global.wirelessdata,MAX_WIRELESS_BYTES, &global.wirelessConfidenceStatus);
- if((global.wirelessReceived > 0) && !wireless_evaluate_crc_error(global.wirelessdata,global.wirelessReceived))
- {
- copyWirelessData();
- }
- }
-
if(ticksdiff >= Scheduler.counterSPIdata100msec * 100 + 10)
{
SPI_Evaluate_RX_Data();
@@ -666,7 +649,6 @@
Scheduler.counterCompass100msec = 0;
Scheduler.counterPressure100msec = 0;
Scheduler.counterAmbientLight100msec = 0;
- Scheduler.counterWireless1msec = 0;
}
}
}
@@ -767,7 +749,6 @@
Scheduler.counterCompass100msec = 0;
Scheduler.counterPressure100msec = 0;
Scheduler.counterAmbientLight100msec = 0;
- Scheduler.counterWireless1msec = 0;
global.dataSendToMaster.mode = MODE_SURFACE;
global.deviceDataSendToMaster.mode = MODE_SURFACE;
@@ -780,16 +761,6 @@
lasttick = HAL_GetTick();
ticksdiff = time_elapsed_ms(Scheduler.tickstart,lasttick);
- if(ticksdiff > Scheduler.counterWireless1msec)
- {
- Scheduler.counterWireless1msec++;
- changeAgeWirelessData();
- global.wirelessReceived = wireless_evaluate(global.wirelessdata,MAX_WIRELESS_BYTES, &global.wirelessConfidenceStatus);
- if((global.wirelessReceived > 0) && !wireless_evaluate_crc_error(global.wirelessdata,global.wirelessReceived))
- {
- copyWirelessData();
- }
- }
if(setButtonsNow == 1)
{
if(scheduleSetButtonResponsiveness())
@@ -907,7 +878,6 @@
Scheduler.counterCompass100msec = 0;
Scheduler.counterPressure100msec = 0;
Scheduler.counterAmbientLight100msec = 0;
- Scheduler.counterWireless1msec = 0;
}
}
}
@@ -922,7 +892,6 @@
Scheduler.counterCompass100msec = 0;
Scheduler.counterPressure100msec = 0;
Scheduler.counterAmbientLight100msec = 0;
- Scheduler.counterWireless1msec = 0;
dohardspisync = 0;
}
}
@@ -1519,40 +1488,6 @@
global.deviceDataSendToMaster.boolVpmRepetitiveDataValid = 1;
}
-void changeAgeWirelessData(void)
-{
- for(int i=0;i<4;i++)
- {
- if(global.dataSendToMaster.data[global.dataSendToMaster.boolWirelessData].wireless_data[i].ageInMilliSeconds)
- global.dataSendToMaster.data[global.dataSendToMaster.boolWirelessData].wireless_data[i].ageInMilliSeconds++;
- }
-}
-
-void copyWirelessData(void)
-{
- uint8_t boolWirelessData = !global.dataSendToMaster.boolWirelessData;
- SDataWireless *dataOld, *dataNew;
- for(int i=0;i<3;i++)
- {
- dataNew = &global.dataSendToMaster.data[boolWirelessData].wireless_data[i+1];
- dataOld = &global.dataSendToMaster.data[!boolWirelessData].wireless_data[i];
- dataNew->ageInMilliSeconds = dataOld->ageInMilliSeconds;
- dataNew->numberOfBytes = dataOld->numberOfBytes;
- dataNew->status = dataOld->status;
- memcpy(dataNew->data, dataOld->data,8);
- }
-
- global.dataSendToMaster.data[boolWirelessData].wireless_data[0].ageInMilliSeconds = 1;
- global.dataSendToMaster.data[boolWirelessData].wireless_data[0].numberOfBytes = global.wirelessReceived;
- global.dataSendToMaster.data[boolWirelessData].wireless_data[0].status = global.wirelessConfidenceStatus;
- for(int i=0;i was removed from OSTC4 code => placeholder*/
void EXTI1_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1);
diff -r 9ecc2e60418d -r 331882a89421 Small_CPU/Src/wireless.c
--- a/Small_CPU/Src/wireless.c Wed Mar 13 21:49:25 2019 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,856 +0,0 @@
-/**
- ******************************************************************************
- * @file wireless.c
- * @author heinrichs weikamp gmbh
- * @date 02-July-2015
- * @version V0.0.2
- * @since 24-March-2016
- * @brief Data transfer via magnetic field using Manchester code
- *
- @verbatim
- ==============================================================================
- ##### How to use #####
- ==============================================================================
- history:
- 160324 V 0.0.2 für Bonex Sender (Only in old hardware. No longer supported)
-
-
-PA2 triggers to falling edge
-PA1 triggers to rising edge
-see baseCPU2.c definitions of ports for details
-time base is the systick of CMSIS with SysTick->VAL for sub ms info
-
-
-start id is 4 ms low (fall to rise time)
-old: followed by 2 ms high (but can continue with high on sending '0' next (Hi->Lo)
-160324: followed by bit 0: high to low of byte 1
-
-even index numbers are falling edge
-odd index numbers are rising edge
-
-first bit ('1' or '0' can be evaluated with triggerTimeDiffArray[2] (falling edge)
-if it is much longer than 2ms than the first bit is '0'
-if it is 2ms than it is '1'
-
-// Manchester code: 1 = low to high; 0 = high to low;
-bits are either
-rising edge at the middle of the bit transfer -> 1
-falling edge at the middle of the bit transfer -> 0
-
-an array is used with even index for falling and odd for rising
-the next time difference array entry is set to 0 to identify the loss of any edge
-the time index is stored as microseconds
-and generated by systick and SysTick->VAL (that is counting down from ->LOAD)
-
-old: startTime is the first falling edge, hence the ver first falling edge of the start byte)
-160324: startTime is the first rising edge
-
-160324: total transfer time (excluding start with 8 ms) 10*8*2ms + 2ms (stop bit) = 162 ms
-
-Definition: first bit is always '0'
-old: to recognize second start bit easily!
-old: hence after 2 ms there is a falling edge!
-160324: after 1 ms is a falling edge of first bit with value 0
-
-160324:
-Measurement of send data: length 162 ms including stop bit
-81 bit
-
-@endverbatim
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT(c) 2016 heinrichs weikamp
- *
- ******************************************************************************
- */
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f4xx_hal.h"
-#include "wireless.h"
-#include "scheduler.h"
-
-/* array starts with first falling edge
- * old: beginning of first start byte,
- * old: data starts on 3
- * new: beginning of first bit that is always 0 -> high->low
- * new: data starts on 0
- */
-
-#define ttdaSize (1200)
-
-#define TIMEOUTSIZE (20000)
-
-#define WIRELESS_OK (0)
-#define WIRELESS_FAIL (1)
-
-#define FALLING (0)
-#define RISING (1)
-
-//#define STEP_HALFBIT (1010)
-#define STEP_HALFBIT (1000)
-#define LIMIT_STARTBIT (5000)
-#define MIN_TIME_STARTBIT (3800)
-#define MAX_TIME_FIRST_STARTBIT (5200)
-#define MIN_TIME_BOTH_STARTBITS (MIN_TIME_STARTBIT + MIN_TIME_STARTBIT)
-#define MAX_TIME_BOTH_STARTBITS (MAX_TIME_FIRST_STARTBIT + 4200)
-// includes necessary start bit (2000 us) and timing issues
-#define HELPER_MAX_DATA_LENGTH_TOLERANCE (10*STEP_HALFBIT)
-#define HELPER_MAX_DATA_BYTES (10) ///< 160324: 10, before 8
-#define MAX_DATA_BITS (HELPER_MAX_DATA_BYTES*8)
-#define MAX_DATA_LENGTH ((STEP_HALFBIT*2*MAX_DATA_BITS) + HELPER_MAX_DATA_LENGTH_TOLERANCE)
-
-#define MAX_DIFF_IN_MS ((MAX_DATA_LENGTH+999)/1000)
-
-void wireless_reset(uint32_t timeMain, uint32_t timeSub);
-
-/* triggerTimeDiffArray in us with max 65 ms */
-
-int32_t triggerNewArray[ttdaSize][2];
-
-int32_t triggerNewArrayDebugStartBits[20][2];
-
-//uint16_t triggerTimeDiffArray[ttdaSize];
-uint16_t ttdaPointer;
-uint32_t startTimeMain;
-
-uint32_t subDivisorX1000;
-uint8_t blockDataCapture = 0;
-uint8_t evaluateRequest = 0; ///<
-
-uint8_t found_first_4ms_high = 0; ///<
-uint8_t found_second_4ms_low = 0; ///<
-
-
-
-
-// ===============================================================================
-// wireless_init
-/// @brief has to be called once to initialize the variables
-// ===============================================================================
-void wireless_init(void)
-{
- subDivisorX1000 = SysTick->LOAD; ///< never changes
- wireless_reset(0,0);
- ttdaPointer = 0; ///< is set back again by timeout or on error
- blockDataCapture = 0;
- //triggerTimeDiffArray[0] = 0;
-}
-
-
-/**
- ******************************************************************************
- * @brief RECORDING functions
- * @author heinrichs weikamp gmbh
- * @date 03-July-2015
- * @version V0.0.1
- * @since 03-July-2015
- ******************************************************************************
- */
-
-
-// ===============================================================================
-// wireless_getTime
-/// @brief RECORDING
-///
-/// @param
-// ===============================================================================
-void wireless_getTime(uint32_t *timeMain, uint32_t *timeSub)
-{
- uint32_t timeSub2, timeMain2;
-
- *timeSub = SysTick->VAL;
- *timeMain = HAL_GetTick();
- timeSub2 = SysTick->VAL;
- timeMain2 = HAL_GetTick();
-
-/*
- static uint32_t difference = 0;
- if(ttdaPointer == 1)
- difference = 7; //& breakpoint
-*/
-
- if((timeSub2 > *timeSub) && (timeMain2 == *timeMain))
- *timeMain -= 1;
-
- *timeSub = subDivisorX1000 - *timeSub;
- *timeSub *= 1000;
- *timeSub /= subDivisorX1000;
-}
-
-
-
-/* stored value _could be_ in multiples of 2 us
- * to have 1000 for each byte
- * 0000 is beginning of start bit (always 1)
- * 1000 is beginning of first bit (if timing is perfect, otherwise less or more)
- * ...
- * XXXX000 is beginning of XXXX bit
- *
- */
-
-// ===============================================================================
-// wireless_time0keeper
-/// @brief RECORDING
-///
-/// @param
-/// @return still in us
-// ===============================================================================
-int32_t wireless_time0keeper(uint8_t store1_or_diffOut0, uint32_t timeMain, uint32_t timeSub)
-{
- static uint32_t storeMain = 0, storeSub = 0;
-
- /* store time0 */
- if(store1_or_diffOut0)
- {
- storeMain = timeMain;
- storeSub = timeSub;
- return 0;
- }
-
- /* evaluate time difference */
- int32_t diff = 0;
-
- if((timeMain < storeMain) || ((timeMain - storeMain) > MAX_DIFF_IN_MS))
- return -1;
-
- diff = timeMain - storeMain;
- diff *= 1000;
- diff += timeSub;
- diff -= storeSub;
-
- return diff;
-}
-
-
-// ===============================================================================
-// wireless_save_time0
-/// @brief RECORDING
-///
-/// @param
-// ===============================================================================
-void wireless_save_time0(uint32_t timeMain, uint32_t timeSub)
-{
- wireless_time0keeper(1, timeMain, timeSub);
-}
-
-
-// ===============================================================================
-// wireless_get_time_since_time0
-/// @brief RECORDING
-///
-/// @param
-/// @return
-// ===============================================================================
-int32_t wireless_get_time_since_time0(uint32_t timeMain, uint32_t timeSub)
-{
- return wireless_time0keeper(0, timeMain, timeSub);
-}
-
-
-// ===============================================================================
-// wireless_get_time_since_previous
-/// @brief RECORDING
-///
-/// @param
-/// @return
-// ===============================================================================
-int32_t wireless_get_time_since_previous(uint8_t fallingOrRising, uint32_t timeMain, uint32_t timeSub)
-{
- int32_t absoluteTimeDiff = wireless_time0keeper(0, timeMain, timeSub);
-
- if(fallingOrRising == FALLING) // same array
- {
- return (absoluteTimeDiff - triggerNewArray[ttdaPointer][FALLING]);
- }
- else
- if(ttdaPointer > 0)
- {
- return (absoluteTimeDiff - triggerNewArray[ttdaPointer - 1][RISING]);
- }
- else // not possible
- return -1;
-}
-
-
-// ===============================================================================
-// wireless_reset
-/// @brief RECORDING
-///
-/// @param
-// ===============================================================================
-void wireless_reset(uint32_t timeMain, uint32_t timeSub)
-{
- found_first_4ms_high = 0;
- found_second_4ms_low = 0;
- ttdaPointer = 0;
- startTimeMain = 0;
- evaluateRequest = 0;
- wireless_save_time0(timeMain, timeSub);
- triggerNewArray[ttdaPointer][FALLING] = 0;
- triggerNewArray[ttdaPointer][RISING] = 0;
-}
-
-
-
-
-// ===============================================================================
-// wireless_trigger_FallingEdgeSignalHigh
-/// @brief RECORDING
-///
-// ===============================================================================
-void wireless_trigger_FallingEdgeSignalHigh(void)
-{
- uint32_t timeSub, timeMain;
- int32_t timeDifference;
-
- wireless_getTime(&timeMain, &timeSub);
-
- if((blockDataCapture) || (evaluateRequest == 1))
- return;
-
- if(evaluateRequest == 2)
- wireless_reset(0, 0);
-
- if(!found_first_4ms_high) // trying to get first start 4ms
- {
- if(ttdaPointer == 0)
- {
- wireless_reset(timeMain, timeSub);
- }
- else
- {
- timeDifference = wireless_get_time_since_time0(timeMain, timeSub);
- if((timeDifference > 0) && (timeDifference <= LIMIT_STARTBIT))
- {
- triggerNewArray[ttdaPointer][0] = timeDifference;
- }
- else
- {
- wireless_reset(timeMain, timeSub);
- }
- }
- }
- else // here comes the very important time0 for all following data
- if(!found_second_4ms_low) ///< the beginning of the very first is recorded here :-)
- {
- timeDifference = wireless_get_time_since_time0(timeMain, timeSub);
- if((timeDifference > 0) && (timeDifference >= MIN_TIME_BOTH_STARTBITS) && (timeDifference <= MAX_TIME_BOTH_STARTBITS))
- {
- // now we are ready for data
- for(int i=0;i<20;i++)
- {
- if(i <= ttdaPointer)
- {
- triggerNewArrayDebugStartBits[i][FALLING] = triggerNewArray[i][FALLING];
- triggerNewArrayDebugStartBits[i][RISING] = triggerNewArray[i][FALLING];
- }
- else
- {
- triggerNewArrayDebugStartBits[i][FALLING] = 0;
- triggerNewArrayDebugStartBits[i][RISING] = 0;
- }
- }
- wireless_reset(timeMain, timeSub); ///< reset all including ttdaPointer and more
- startTimeMain = timeMain; ///< set again
- found_first_4ms_high = 1; ///< set again
- found_second_4ms_low = 1; ///< set now: ready for recording
- }
- }
- else
- {
- timeDifference = wireless_get_time_since_time0(timeMain, timeSub);
-
- if((timeDifference > MAX_DATA_LENGTH) || (ttdaPointer > (ttdaSize - 2)))
- {
- evaluateRequest = 1;
- }
- else
- {
- triggerNewArray[ttdaPointer][FALLING] = timeDifference;
- triggerNewArray[ttdaPointer][RISING] = 0;
- }
- }
-}
-
-
-// ===============================================================================
-// wireless_trigger_RisingEdgeSilence
-/// @brief RECORDING
-///
-// ===============================================================================
-void wireless_trigger_RisingEdgeSilence(void)
-{
- uint32_t timeSub, timeMain;
- int32_t timeDifference;
-
- wireless_getTime(&timeMain, &timeSub);
-
- if((blockDataCapture) || (evaluateRequest == 1))
- return;
-
- if(evaluateRequest == 2)
- {
- wireless_reset(0, 0);
- return; // Falling Edge first
- }
-
- timeDifference = wireless_get_time_since_time0(timeMain, timeSub);
-
- if(!found_first_4ms_high)
- {
- if((timeDifference > 0) && (timeDifference <= MAX_TIME_FIRST_STARTBIT))
- {
- triggerNewArray[ttdaPointer++][RISING] = timeDifference;
- triggerNewArray[ttdaPointer][FALLING] = 0;
-
- if(timeDifference >= MIN_TIME_STARTBIT) ///< start bit is the 4 ms
- {
- found_first_4ms_high = 1;
- found_second_4ms_low = 0;
- }
- }
- }
- else
- {
- if((timeDifference > MAX_DATA_LENGTH) || (ttdaPointer > (ttdaSize - 2)))
- {
- evaluateRequest = 1;
- }
- else
- {
- triggerNewArray[ttdaPointer++][RISING] = timeDifference;
- triggerNewArray[ttdaPointer][FALLING] = 0;
- }
- }
-}
-
-
-// ===============================================================================
-// wireless_position_next
-/// @brief RECORDING
-///
-/// @param
-/// @return
-// ===============================================================================
-uint8_t wireless_position_next(uint16_t *ttdaPointerNow, uint8_t *typeNow)
-{
- if(*typeNow == FALLING)
- *typeNow = RISING;
- else if(*ttdaPointerNow < (ttdaSize - 1))
- {
- *ttdaPointerNow += 1;
- *typeNow = FALLING;
- }
- else
- {
- return WIRELESS_FAIL;
- }
- return WIRELESS_OK;
-
-}
-
-
-// ===============================================================================
-// wireless_position_previous
-/// @brief RECORDING
-///
-/// @param
-/// @return
-// ===============================================================================
-uint8_t wireless_position_previous(uint16_t *ttdaPointerNow, uint8_t *typeNow)
-{
- if(*typeNow == RISING)
- *typeNow = FALLING;
- else if(*ttdaPointerNow > 0)
- {
- *ttdaPointerNow -= 1;
- *typeNow = RISING;
- }
- else
- {
- return WIRELESS_FAIL;
- }
- return WIRELESS_OK;
-}
-
-
-// ===============================================================================
-// wireless_position_compare
-/// @brief RECORDING
-///
-/// @param
-/// @return
-// ===============================================================================
-int8_t wireless_position_compare(uint16_t ttdaPointerLeft, uint8_t typeLeft, uint16_t ttdaPointerRight, uint8_t typeRight)
-{
- if(ttdaPointerLeft < ttdaPointerRight)
- return -1;
- else
- if(ttdaPointerLeft > ttdaPointerRight)
- return 1;
- else
- if(typeLeft < typeRight)
- return -1;
- else
- if(typeLeft > typeRight)
- return 1;
- else
- return 0;
-}
-
-
-// ===============================================================================
-// wireless_debug
-/// @brief
-///
-/// @param
-/// @return
-// ===============================================================================
-/* outlined because of errors while compiling
-void wireless_debug(int8_t *adcData, uint16_t max_size_adc)
-{
- // debug
- uint32_t dataVisual[201];
- uint8_t dataVisualValue[201];
- int8_t dataVisualResult[201];
-
- dataVisualValue[0] = 1;
-
- for(int i=0;i<201;i++)
- dataVisualResult[i] = -1;
-
- for(int i=0;i<201-4;i +=4)
- {
- dataVisualValue[i] = 1;
- dataVisualValue[i+1] = 1;
- dataVisualValue[i+2] = 0;
- dataVisualValue[i+3] = 0;
- }
-
- dataVisual[0] = triggerNewArray[0][FALLING];
-
- int j = 1;
- uint32_t valueStore = 0;
- for(int i=0;i<50;i++)
- {
- valueStore = triggerNewArray[i][FALLING];
- dataVisual[j++] = valueStore;
- dataVisual[j++] = valueStore + 1;
- valueStore = triggerNewArray[i][RISING];
- dataVisual[j++] = valueStore;
- dataVisual[j++] = valueStore + 1;
- }
-
-
- if(max_size_adc > 0)
- {
- int jStep = 0;
- int jData = 0;
- for(int i=0;i<201;i++)
- {
- if(dataVisual[i] >= jStep)
- {
- if(adcData[jData] > 0)
- dataVisualResult[i] = 1;
- else
- dataVisualResult[i] = 0;
- jStep += STEP_HALFBIT + STEP_HALFBIT;
- jData++;
- if(jData >= max_size_adc)
- break;
- }
- }
- }
-}
-*/
-
-// ===============================================================================
-// wireless_debug_test_failed_AACCF1010203
-/// @brief
-///
-/// @param
-/// @return
-// ===============================================================================
-uint8_t wireless_debug_test_failed_AACCF1010203(uint8_t *data)
-{
- if(data[0] != 0xAA)
- return 1;
- if(data[1] != 0xCC)
- return 1;
- if(data[2] != 0xF1)
- return 1;
- if(data[3] != 0x01)
- return 1;
- if(data[4] != 0x02)
- return 0;
- if(data[5] != 0x03)
- return 1;
-
- return 0;
-}
-
-
-// ===============================================================================
-// wireless_check_crc_failed
-/// @brief
-///
-/// @param
-/// @return
-// ===============================================================================
-uint8_t wireless_check_crc_failed(uint8_t *dataOut, uint8_t maxData)
-{
- return (wireless_debug_test_failed_AACCF1010203(dataOut));
-}
-
-
-/**
- ******************************************************************************
- * @brief EVALUATION functions
- * @author heinrichs weikamp gmbh
- * @date 03-July-2015
- * @version V0.0.2
- * @since 14-July-2015
- ******************************************************************************
- */
-
-// ===============================================================================
-// wireless_time0keeper
-/// @brief EVALUATION
-///
-/// @param
-/// @return
-// ===============================================================================
-uint8_t wireless_evaluate_internal_loop(uint8_t *dataOut, uint8_t maxData, int32_t shift, uint8_t *confidence)
-{
- // variables
- int iOut = 0;
- int jAdc = 0;
-
- int8_t adcData[MAX_DATA_BITS];
- uint16_t adcPointer = 0;
-
- int8_t bitLeft = 0;
- int8_t bitRight = 0;
-
- uint16_t ttdaPointerStart = 0;
- uint16_t ttdaPointerEnd = 0;
- uint8_t typeStart = RISING;
- uint8_t typeEnd = RISING;
- int32_t startTimeHalfBit = 0;
- int32_t endTimeHalfBit = 0;
- int32_t startOfThisPeak = 0;
- int32_t endOfThisPeak = 0;
- uint8_t wirelessErrorStatus = 0;
- uint8_t timeToStop = 0;
- int32_t valueSingle = 0;
- int32_t halfbitTemp = 0;
- int confidenceTemp = 0;
-
- // safety end for all loops coming
- triggerNewArray[ttdaPointer][RISING] = INT32_MAX;
-
- ttdaPointerStart = 0;
- ttdaPointerEnd = 0;
- typeStart = RISING;
- typeEnd = RISING;
- startTimeHalfBit = 0;
- endTimeHalfBit = shift;
- adcPointer = 0;
-
- while(!timeToStop)
- {
- // start is latest start
- ttdaPointerEnd = ttdaPointerStart;
- typeEnd = typeStart;
- for(int doItTwice=0;doItTwice<2;doItTwice++)
- {
- startTimeHalfBit = endTimeHalfBit;
- endTimeHalfBit += STEP_HALFBIT;
- // find the end for this half bit; this will include values that continue to the next halfbit and negative values
- while(triggerNewArray[ttdaPointerEnd][typeEnd] < endTimeHalfBit)
- wireless_position_next(&ttdaPointerEnd,&typeEnd);
-
- if(triggerNewArray[ttdaPointerEnd][typeEnd] == INT32_MAX)
- {
- timeToStop = 1;
- break;
- }
- startOfThisPeak = startTimeHalfBit;
- wirelessErrorStatus = 0;
- halfbitTemp = 0;
- while(!wirelessErrorStatus && (wireless_position_compare(ttdaPointerStart,typeStart, ttdaPointerEnd,typeEnd) <= 0))
- {
- endOfThisPeak = triggerNewArray[ttdaPointerStart][typeStart];
- if(endOfThisPeak <= startOfThisPeak)
- {
- wireless_position_next(&ttdaPointerStart,&typeStart);
- }
- else
- {
- // TODO: what about time difference errors?
- if(endOfThisPeak >= endTimeHalfBit)
- valueSingle = endTimeHalfBit - startOfThisPeak;
- else
- valueSingle = endOfThisPeak - startOfThisPeak;
-
- if(typeStart == RISING)
- {
- halfbitTemp += valueSingle;
- }
- // next, also valid for every next halfbit
- if(endOfThisPeak <= endTimeHalfBit)
- {
- startOfThisPeak = endOfThisPeak;
- wireless_position_next(&ttdaPointerStart,&typeStart);
- }
- else
- {
- startOfThisPeak = endTimeHalfBit;
- }
- // should not be necessary, anyway
- if(startOfThisPeak == endTimeHalfBit)
- break;
- }
- }
- // store
- halfbitTemp *= 100;
- halfbitTemp /= STEP_HALFBIT;
- if(halfbitTemp > 100) halfbitTemp = 100;
- if(doItTwice == 0)
- {
- bitLeft = halfbitTemp;
- }
- else
- {
- bitRight = halfbitTemp;
- }
- }
- // Gewichtung und Bit Generierung
- adcData[adcPointer++] = (int8_t)((bitLeft - bitRight)); // possitive value
- if(adcPointer >= MAX_DATA_BITS)
- timeToStop = 1;
- }
-
- // Auswertung
- jAdc = 0;
- iOut = 0;
-
- for(int i=0;i 0))
- dataOut[i] |= 1;
- if(jAdc >= adcPointer)
- {
- j++;
- while(j<8)
- {
- jAdc = adcPointer + 1; // end signal
- dataOut[i] *= 2;
- j++;
- }
- break;
- }
- }
- if(jAdc > adcPointer)
- break;
- iOut++;
- }
-
- confidenceTemp = 0;
- for(int i=0;i= 5) && wireless_debug_test_failed_AACCF1010203(dataOut))
- wireless_debug(adcData,MAX_DATA_BITS);
-*/
- return iOut;
-
-}
-
-
-// ===============================================================================
-// wireless_evaluate_crc_error
-/// @brief EVALUATION
-///
-/// @param
-/// @return
-// ===============================================================================
-uint8_t wireless_evaluate_crc_error(uint8_t *dataIn, uint8_t maxData)
-{
- uint8_t crcTest = 0;
- for(int i=0; i< maxData; i++)
- crcTest ^= dataIn[i];
-
- return crcTest;
-}
-
-
-// ===============================================================================
-// wireless_evaluate
-/// @brief EVALUATION
-///
-/// @param
-/// @return
-// ===============================================================================
-uint8_t wireless_evaluate(uint8_t *dataOut, uint8_t maxData, uint8_t *confidence)
-{
- uint32_t timeTick;
- uint32_t timeElapsed;
-
- timeTick = HAL_GetTick();
- timeElapsed = time_elapsed_ms(startTimeMain,timeTick);
-
- uint8_t start = 0;
- int iOut = 0;
-
- // check condition for start
- if(evaluateRequest == 2)
- return 0;
-
- if(evaluateRequest == 1)
- start = 1;
-
- if((ttdaPointer > 10) && (timeElapsed > (MAX_DATA_LENGTH/1000)))
- start = 1;
-
- if(!start)
- return 0;
-
- // start
- blockDataCapture = 1;
-
- // evaluate
- iOut = wireless_evaluate_internal_loop(dataOut, maxData, 0, confidence);
-
-
- /*
- for(int i=0; i>=-500; i -= 100)
- {
- iOut = wireless_evaluate_internal_loop(dataOut, maxData, i, confidence);
- if(iOut < 5)
- break;
- if(wireless_check_crc_failed(dataOut,iOut) == 0)
- break;
- }
-*/
- // end
- evaluateRequest = 2;
- blockDataCapture = 0;
-
- return iOut;
-}
-
-/************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/