#pragma once
#ifndef _YSP_MODBUS_SLAVE_H
#define _YSP_MODBUS_SLAVE_H

//一个寄存器占两个字节，这样映射的话就是一个数据占两个寄存器

typedef struct ysp_modbus_regsiter {
	float H2;
	float CO;
	float CO2;
	float CH4;
	float C2H2;
	float C2H4;
	float C2H6;
	float Total; //总烃
	float Water; //微水
	int time_H32;	//1970以来的秒  共8byte， 低32位  先传输
	int time_L32;	//高32位
	int pad_reg[60];//用于扩展
}ysp_modbus_regs_t;

/*
0000H_0001H: H2 （float）
0002H_0003H: CO（float）
0004H_0005H: CO2（float）
0006H_0007H: CH4（float）
0008H_0009H: C2H2（float）
000AH_000BH: C2H4（float）
000CH_000DH: C2H6（float）
000EH_000FH: Total（float）总烃
00010H_0011H: Water（float）微水  //到这里有9*2=18个寄存器 (0到17寄存器)
00012H_0013H: 时间的低4字节(18-19寄存器)
00014H_0015H：时间的高4字节的//时间占8个字节(20-21寄存器)

00020H 到 0049H: 保留扩展


*/


typedef struct slave_address {
	int slave_addr;
}slave_add_t;


//modbus 从机tcp ipaddr
void xSet_slave_ip_addr(const char* ip_addr);

//modbus从机tcp port
void xSet_slave_port(const char* tcp_port);
/*
008EH 008FH slave address
*/


/*
寄存器的逻辑空间分配
气体数据 + 从机地址 //  寄存器地址连续
*/
int xModbus_task_init();

#endif