📄 endpoint.h.svn-base
字号:
#ifndef __ENDPOINT_H__
#define __ENDPOINT_H__
#include "cc.h"
#include "api.h"
#define MAX_SAMPLING_DATA_COUNT 10
#define MAX_RAW_DATA_LENGTH 2048
#define MAX_BAND_COUNT 8
#define MAX_OES_FUNCTION_LENGTH 128
// function code
#define func_sys_start 1
#define func_sys_end 2
#define func_recipe_start 3
#define func_recipe_end 4
#define func_step_start 5
#define func_step_end 6
#define func_inquiry_endpoint 7
#define func_fetch_raw 8
#define func_inquiry_hardware_parameter 9
#define func_set_hardware_parameter 10
// err
#define err_ok 0
#define err_nodata 1
#define err_baddata 2
#define err_badfunc 3
#define rframe_len 6
#define bframe_len 30
#define hframe_len 42
#define stepframe_len 194
#define sysframe_len 192
#define hardframe_len 38
#define port_A 1028
#define port_B 1028
enum ENDPOINT_ALGORITHM_TYPE{
EP_ABOVE_ABS_VALUE,
EP_BELOW_ABS_VALUE,
EP_DOWN_PRECENT,
EP_DROP_PRECENT
};
enum ENDPOINT_RESULT_TYPE{
EP_UNKNOWN,
EP_RUNNING,
EP_FIRED
};
PACK_STRUCT_STRUCT struct endpoint_sampling_parameter{
PACK_STRUCT_FIELD(unsigned short exposure_time); //CCD Exposure Time(ms)
PACK_STRUCT_FIELD(unsigned short b_wlength[MAX_BAND_COUNT]); //OES Band Wavelength(nm)
PACK_STRUCT_FIELD(unsigned short b_binning[MAX_BAND_COUNT]); //Band binning(pixels)
PACK_STRUCT_FIELD(unsigned long pre_tw); //Pre-filter time width(ms)
PACK_STRUCT_FIELD(unsigned long post_tw); //Post-filter time width(ms)
PACK_STRUCT_FIELD(enum ENDPOINT_ALGORITHM_TYPE a_type); //Endpoint algorithm type
PACK_STRUCT_FIELD(unsigned long criteria); //Endpoint criteria
PACK_STRUCT_FIELD(unsigned long delay_t); //Endpoint delay time(ms)
PACK_STRUCT_FIELD(unsigned long validation_t); //Endpoint validation time(ms)
PACK_STRUCT_FIELD(unsigned long refer_tw); //Endpoint reference time window(ms)
PACK_STRUCT_FIELD(char determinate[MAX_OES_FUNCTION_LENGTH]); //OES endpoint determination
};
PACK_STRUCT_STRUCT struct endpoint_step_sampling_parameter{
PACK_STRUCT_FIELD(unsigned short step_num); //step number
PACK_STRUCT_FIELD(struct endpoint_sampling_parameter s_parameter); //sampling parameter
};
PACK_STRUCT_STRUCT struct endpoint_result{
PACK_STRUCT_FIELD(unsigned long timestape); //timestamp
PACK_STRUCT_FIELD(enum ENDPOINT_RESULT_TYPE r_type); //endpoint result
PACK_STRUCT_FIELD(unsigned short b_value[MAX_BAND_COUNT]); //Band value
};
PACK_STRUCT_STRUCT struct endpoint_raw_data_item{
PACK_STRUCT_FIELD(unsigned short step_num); //step number
PACK_STRUCT_FIELD(unsigned long step_time); //step start time
PACK_STRUCT_FIELD(unsigned long relative_time); //relative sampling time
PACK_STRUCT_FIELD(struct endpoint_sampling_parameter s_parameter); //sampling parameter
PACK_STRUCT_FIELD(unsigned short r_data[MAX_RAW_DATA_LENGTH]); //Raw data
};
PACK_STRUCT_STRUCT struct endpoint_raw_data{
PACK_STRUCT_FIELD(unsigned short count); //sampling data count
PACK_STRUCT_FIELD(struct endpoint_raw_data_item data[MAX_SAMPLING_DATA_COUNT]); //raw data
};
PACK_STRUCT_STRUCT struct endpoint_hardware_parameter{
PACK_STRUCT_FIELD(unsigned long version); //Endpoint software version
PACK_STRUCT_FIELD(long long first_c); //First Coefficient
PACK_STRUCT_FIELD(long long second_c); //Second Coefficient
PACK_STRUCT_FIELD(long long third_c); //Third Coefficient
PACK_STRUCT_FIELD(long long r_fit); //Regression Fit
};
PACK_STRUCT_STRUCT struct commad_frame{
PACK_STRUCT_FIELD(unsigned short func_code);
PACK_STRUCT_FIELD(char data[1024]);
};
PACK_STRUCT_STRUCT struct response_frame{
PACK_STRUCT_FIELD(unsigned short func_code);
PACK_STRUCT_FIELD(unsigned int err);
};
PACK_STRUCT_STRUCT struct band_value_frame{
PACK_STRUCT_FIELD(struct response_frame r_frame);
PACK_STRUCT_FIELD(struct endpoint_result result);
};
PACK_STRUCT_STRUCT struct raw_data_frame{
PACK_STRUCT_FIELD(struct response_frame r_frame);
PACK_STRUCT_FIELD(struct endpoint_raw_data raw_data);
};
PACK_STRUCT_STRUCT struct hardware_parameter_frame{
PACK_STRUCT_FIELD(struct response_frame r_frame);
PACK_STRUCT_FIELD(struct endpoint_hardware_parameter hardware_parameter);
};
// endpoint raw data transferation control block
struct erd_tcb{
struct erd_tcb *next;
struct raw_data_frame* rd_frame;
int sending;
int counter;
};
// endpoint band value transferation control block
struct ebv_tcb{
struct ebv_tcb* next;
struct band_value_frame* bv_frame;
int sending;
int writen;
};
struct raw_data_pointer{
struct erd_tcb* erd_sender;
struct erd_tcb* erd_writer;
};
struct band_value_pointer{
struct ebv_tcb* ebv_sender;
struct ebv_tcb* ebv_writer;
};
struct step_information{
unsigned short start_num;
PACK_STRUCT_FIELD(struct endpoint_sampling_parameter step_parameter);
};
struct data_list{
unsigned short numbers[128];
unsigned short send_counter;
};
struct station_information{
struct station_information* other;
struct netconn* conn;
OS_EVENT* dsp_sem;
unsigned long start_time;
struct step_information step_info[6];
unsigned short cur_step;
struct data_list pre_list;
struct raw_data_pointer* p_rdata;
struct band_value_pointer* p_bvalue;
struct hardware_parameter_frame* hframe;
struct response_frame* rframe;
unsigned short step_starting;
unsigned short pre_geting;
unsigned short pre_need;
};
void tranTest_task(void *pdata);
void endpoint_init(void);
//void send_raw_data(struct raw_data_pointer* p_rdata, struct netconn *conn);
//void send_harware_parameter(struct hardware_parameter_frame* p_hframe, struct netconn *conn);
//void send_band_value(struct band_value_pointer* p_bvalue, struct netconn *conn);
//void do_response(struct commad_frame* cframe, unsigned short len, struct netconn* conn, struct raw_data_pointer* p_rdata, struct band_value_pointer* p_bvalue, struct hardware_parameter_frame* hframe, struct response_frame* rframe);
void read_band_value(void);
void read_raw_data(void);
void read_pre_data(void);
#endif /* __ENDPOINT_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -