blob: 948e86ae571d58d99944f755f4fbcdbae8ed6a75 [file] [log] [blame]
#ifndef _SP_CONFIG_H
#define _SP_CONFIG_H
#include "sp_version.h"
#include "../nec_hardware.h"
#ifndef int8
#define int8 signed char
#endif
#ifndef uint8
#define uint8 unsigned char
#endif
#ifndef int16
#define int16 signed short
#endif
#ifndef uint16
#define uint16 unsigned short
#endif
#ifndef int32
#define int32 signed int
#endif
#ifndef uint32
#define uint32 unsigned int
#endif
#ifndef NULL
#define NULL ((void *)0)
#endif
#define DEV_TYPE "G401302"
#define DEV_OFFLINE_DEFAULT_HOUR 168
#define DEV_BLKBITMAP_DONE 1984
#define DEV_MAX_DEVICENO 99
#define PRO_VERSION GIT_VERSION
#define BUILD_DATE __DATE__ // " " __TIME__
#ifdef FLOWSENSOR
#define PURCHASE_FLOWSENSOR 1
#else
#define PURCHASE_FLOWSENSOR 0
#endif
enum
{
SP_KEY_NONE = 0xFF,
SP_KEY_0 = 0,
SP_KEY_1 = 1,
SP_KEY_2 = 2,
SP_KEY_3 = 3,
SP_KEY_4 = 4,
SP_KEY_5 = 5,
SP_KEY_6 = 6,
SP_KEY_7 = 7,
SP_KEY_8 = 8,
SP_KEY_9 = 9,
SP_KEY_ENTER = 12,
SP_KEY_CLEAR = 11
};
typedef enum
{
PAYMODE_INIT = 0,
PAYMODE_CARD = 1,
PAYMODE_QRCODE = 2,
} sp_paymode_e;
#pragma pack(push)
#pragma pack(1)
typedef struct
{
uint8 command;
uint32 sendtime;
} sp_comm_status_t;
typedef struct
{
uint32 last_heartbeat_ticker;
uint8 hwVer[16]; //É豸°æ±¾ºÅ
uint8 offlineRecordCount; //δÉÏ´«Á÷Ë®ÊýÁ¿
uint8 workMode; //µ±Ç°×´Ì¬£¬0-¿ÕÏУ¬1-ÕýÔÚʹÓã¬9-ÒÉËÆ¹ÊÕÏ
uint8 heart_status; //ÐÄÌø×´Ì¬£¬0-³õʼ»¯£¬1-·¢ËÍ£¬2-½ÓÊÕ
} sp_heartbeat_t;
typedef struct
{
uint32 last_login_ticker;
uint8 login_flag; //0-δǩµ½£¬1-ÒÑÇ©µ½£¬2-×¢Ïú
uint8 hwVer[16]; //É豸°æ±¾ºÅ
uint8 deviceKey; //É豸¹¤×÷ÃÜÔ¿
} sp_login_t;
//Ïû·ÑÁ÷Ë®ÐÅÏ¢½á¹¹
typedef struct
{
uint8 devphyid[4]; //É豸±àºÅ
uint8 transdate[3]; //YYDDMM¸ñʽÈÕÆÚ
uint8 transtime[3];
uint32 cobillno; //½»Ò×¶©µ¥±àºÅ
uint8 cardphyid[4]; //¿¨ÎïÀíid
uint8 transway; //½»Ò×·½Ê½£¬0-³õʼ£¬1-Ë¢¿¨£¬2-ɨÂë
uint8 amount; //ʵ¼ÊÖ§¸¶½ð¶î
uint8 paidAmount; //ÒÑÖ§¸¶½ð¶î£¬µ±ÊÇÏȿ۷ÑģʽÏ£¬¼Ç¼ÒÑÖ§¸¶µÄ½ð¶î
uint8 flowsensors; //ʵ¼ÊʹÓüÆÁ¿£¨µ¥Î»£º°ÙºÁÉý£©
uint8 transtatus; //Á÷ˮ״̬£¬0-³õʼ£¬1-³É¹¦£¬2-ʧ°Ü
uint8 reverse[7]; //ռλ·û
uint8 crc[2]; //len=32
} sp_transdtl_t;
typedef struct
{
uint8 offline_work_hour; //ÔÊÐíÍÑ»ú¹¤×÷×î´óСʱ 0 ~ 168 Сʱ£¬0 ±íʾ²»ÏÞÖÆ
uint8 deviceno; //»úºÅ
uint8 devphyid[4]; //ÎïÀíID
uint8 flowsensor_unit; // 100ml¶ÔÓ¦Âö³åÊý
uint8 unused[54];
uint8 login_flag; //0-δǩµ½£¬1-ÒÑÇ©µ½£¬2-ÒÑ×¢Ïú
uint8 crc[2];
} sp_config_t;
typedef struct
{
uint32 transaddr; //µØÖ·
uint16 this_offset; //Ò³Æ«ÒÆÎ»
uint8 crc[2]; //len=8
} sp_last_transdtl_t;
typedef struct
{
uint32 transaddr; //µØÖ·
uint16 this_offset; //Ò³Æ«ÒÆÎ»
uint8 crc[2]; //len=8
} sp_unconfirm_transdtl_t;
//Ïû·ÑÐÅÏ¢
typedef struct
{
uint32 free_used_num; //ÒÑÃâ·ÑʹÓüÆÁ¿(µ¥Î»:100ml)
uint8 starttime[6]; //Ë¢¿¨Ê±¼ä
/*Ïȿۿîºó³öË®*/
uint16 prepaid_num; //µ¥´Î¿ÉÓüÆÁ¿(µ¥Î»:100ml)
uint16 prepaid_amt; //µ¥´ÎÔ¤¸¶½ðÇ®
uint16 paid_num; //ÀۼƿÉÓüÆÁ¿(µ¥Î»:100ml)
uint16 paid_sum; //ÀÛ¼ÆÖ§¸¶½ð¶î
uint16 used_num; //ÒÑʹÓüÆÁ¿(µ¥Î»:100ml)
} sp_purchase_t;
//¶þάÂëÐÅÏ¢
typedef struct
{
char qrcode_url[32]; ///¶þάÂë¶ÌÂë
uint32 starttime; //¶þάÂ뿪ʼʱ¼ä
uint32 nowtime; //¶þάÂ뵱ǰʱ¼ä
uint32 validtime; //¶þάÂëÓÐЧʱ¼ä
uint8 authstatus; //Óû§È·ÈÏ״̬£¨0-δȷÈÏ£¬1-ÒÑÈ·ÈÏ£©
uint8 paystatus; //Ö§¸¶×´Ì¬£¨0-´ýÖ§¸¶£¬ 1-ÒÑÖ§¸¶£¬ 2-´ú¿Û£¬3 - ¹Ø±Õ£©
uint8 paidAmount; //µ±¶©µ¥ÊÇÒÑÖ§¸¶×´Ì¬£¬·µ»ØÖ§¸¶³É¹¦½ð¶î £¬ ·ñÔòÊÇ 0
} sp_qrcode_t;
//É豸²ÎÊý
typedef struct
{
uint8 dev_offline_maxhour; //É豸ÍÑ»ú×î´ó¹¤×÷ʱ¼ä(Сʱ),0-²»ÏÞÖÆ,168-ĬÈÏʱ¼ä
uint8 flowsensor_unit; //100ml¶ÔÓ¦Âö³åÊý
uint8 hwVer[16]; //É豸°æ±¾ºÅ
uint8 deviceKey[8]; //É豸¹¤×÷ÃØÔ¿
uint8 work_mode; //É豸¹¤×÷״̬
} sp_sysconf_t;
typedef struct
{
uint8 tag_type;
uint8 cur_state;
uint8 snr[8];
uint32 firsttick; //Ê״ζÁ¿¨Ê±¼ä
uint32 lasttick; //×îºó¶Á¿¨Ê±¼ä
} sp_cardstate_t;
typedef struct
{
uint8 current_state; //µ±Ç°¹¤×÷״̬
uint16 errcode;
uint32 tick;
uint8 last_state; //ÉÏÒ»´Î״̬
uint8 pause_status; //Óû§Ê¹ÓÃ״̬£¬0--ʹÓÃÖУ¬!0--ÔÝÍ£
uint32 pause_tick; //ÔÝͣʱµÄʱ¼ä
} sp_cardworkstate_t;
//Ë®¿ØÆ÷É豸ÐÅÏ¢
typedef struct
{
uint8 link_stat; //0--Á´Â·¹¤×÷ÖУ¬1---Á´Â·¿ÉÓÃ
uint8 load_para_status; //0--Õý³££¬!0--´íÎó
uint8 deviceno;
uint8 local_deviceno;
uint8 devphyid[4];
sp_cardstate_t cardState;
sp_sysconf_t sysconf;
sp_comm_status_t last_comm_status;
sp_heartbeat_t heartbeat;
sp_login_t devlogin;
sp_last_transdtl_t last_transdtl;
sp_unconfirm_transdtl_t unconfirm_transdtl;
sp_paymode_e paymode;
sp_purchase_t purchase;
} sp_pos_t;
//·ÑÂÊÐÅÏ¢
typedef struct
{
uint8 fee_start; //T°ÙºÁÉý¿ªÊ¼;
uint8 fee_unit; //µ¥´Î¿Û·Ñ¿ÉÓÃÁ÷Á¿£¨µ¥Î»:100ml£©
uint8 fee_amt; //µ¥´Î¿Û·Ñ½ð¶î£¬ÒÔ·ÖΪµ¥Î»
} sp_feepara_t;
//¿¨½á¹¹ÐÅÏ¢
typedef struct
{
uint8 cardphyid[4];
uint8 citizen_cardno[12]; //ÊÐÃñºÅ
uint8 cardtype;
uint8 expiredate[4];
uint8 waterlimit; //µ¥´Î³öË®ÉÏÏÞ£¨100ml£©
uint32 cobillno; //½»Ò×¶©µ¥±àºÅ,BCDÂë
uint8 permit; //ÊÇ·ñÔÊÐíÏû·Ñ£¬0-ÔÊÐí£¬1-²»ÔÊÐí
uint8 limitmsg[45]; //ÏÞÖÆÏû·ÑÐÅÏ¢
sp_qrcode_t qrcode; //¶þάÂë
sp_feepara_t feepara;
} sp_card_t;
#pragma pack(pop)
typedef enum
{
HEART_INIT = 0,
HEART_SEND = 1,
HEART_RECV = 2
} sp_heart_status_t;
typedef enum
{
TAG_TYPE_UNKONWN = 0, //δ֪¿¨ÀàÐÍ
TAG_TYPE_M1, //M1¿¨
TAG_TYPE_CPU //CPU¿¨
} sp_cardTag_type;
typedef enum
{
STATE_NONE = 0,
STATE_EXIST,
STATE_ERROR=0xFF
} sp_cardState_type;
typedef enum
{
CARDWORKSTATUS_NONE = 0,
CARDWORKSTATUS_READY,
CARDWORKSTATUS_WORKING,
CARDWORKSTATUS_WORKING_WITHOUTCARD,
CARDWORKSTATUS_PAUSE,
CARDWORKSTATUS_STOPPING,
CARDWORKSTATUS_STOPPED,
CARDWORKSTATUS_TAKEOFF,
CARDWORKSTATUS_WORKERROR,
CARDWORKSTATUS_FEECARD_WORKING,
CARDWORKSTATUS_SET_DEV,
CARDWORKSTATUS_ERROR=0xff
} sp_cardWorkState_type;
#endif