49 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | #ifndef DISTURBANCE_DETECTION_H
 | ||
|  | #define DISTURBANCE_DETECTION_H
 | ||
|  | 
 | ||
|  | #include <stdint.h>
 | ||
|  | #include "preamble_generator.h"
 | ||
|  | 
 | ||
|  | #define PREAMBLE_BIT_GROUP      3
 | ||
|  | #define PREAMBLE_PHASE_NUM      3
 | ||
|  | #define PREAMBLE_BIT_LEN        (PREAMBLE_LENGTH + 1) /* 32 + 1 temp. */
 | ||
|  | 
 | ||
|  | #define PREAMBLE_SCALE          (3200 + 5)
 | ||
|  | #define PREAMBLE_SEARCH_DELTA   64
 | ||
|  | 
 | ||
|  | /* define the length of the array to store the wavelet transform results */ | ||
|  | #define WQ_VTB_ZC_DWT_BUF_LEN_MAX     (3200 + 128)
 | ||
|  | 
 | ||
|  | typedef struct _wq_preamble_bit_value_t { | ||
|  |     uint16_t bit_pos[PREAMBLE_BIT_GROUP]; | ||
|  |     uint8_t mag_sign[PREAMBLE_BIT_GROUP]; /* 0: negative, else : positive */ | ||
|  |     float mag_val[PREAMBLE_BIT_GROUP]; | ||
|  |     uint8_t bit_cnt; | ||
|  | } wq_prm_bit_val_t; | ||
|  | 
 | ||
|  | typedef struct _wq_preamble_value_t { | ||
|  |     uint32_t preamble;  /* preamble found */ | ||
|  |     uint32_t pos;       /* finally pos. */ | ||
|  |     float avg_val;      /* finally value. */ | ||
|  |     uint8_t mag_sign[PREAMBLE_LENGTH];  /* 0: negative, else : positive */ | ||
|  |     uint16_t bits_pos[PREAMBLE_LENGTH]; /* pos of each bit */ | ||
|  |     float mag_val[PREAMBLE_LENGTH]; | ||
|  | }wq_prm_val_t; | ||
|  | 
 | ||
|  | /* define the structure of array combination required by wavelet transform */ | ||
|  | typedef struct _wq_dwt_buff_t { | ||
|  |     /* define the array required for wavelet transform */ | ||
|  |     float result_buf[WQ_VTB_ZC_DWT_BUF_LEN_MAX]; | ||
|  |     float buf[WQ_VTB_ZC_DWT_BUF_LEN_MAX * 2]; | ||
|  |     /* defines the array needed to find distortion locations */ | ||
|  |     uint16_t pos_buf[WQ_VTB_ZC_DWT_BUF_LEN_MAX / 2]; | ||
|  |     uint8_t dir_buf[WQ_VTB_ZC_DWT_BUF_LEN_MAX / 2]; | ||
|  | } wq_dwt_buff_t; | ||
|  | 
 | ||
|  | uint8_t disturb_detection(uint32_t phase, int32_t *data, uint16_t data_len, | ||
|  |     uint8_t sample_order, int32_t exp_pos, float ave_mag, | ||
|  |     wq_prm_bit_val_t *preamble_bits_data, wq_dwt_buff_t *dwt_buf); | ||
|  | 
 | ||
|  | #endif
 | ||
|  | 
 |