⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 endpoint.h.svn-base

📁 lwip协议在arm7+uCos系统上的移植
💻 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 + -