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

📄 vb500.h

📁 Command for Modem Motorola
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
 * Defines para o VB500.
 *
 *
 * -------------------------------------
 * Versao     Data       Resp
 * -------------------------------------
 *  0.1    04/12/2002    CJ/AE
 *
*/

// Define utilizado para compilacao condicional

#define BOOL int

#define UCHAR unsigned char
#define ULONG unsigned long
#define UINT  unsigned int

#ifdef CCV500
#define DLL_SOCKET COM3_SOCKET
#define PIC_SOCKET COM_PIC_SOCKET
#endif

#define BASE_DAY  10957

#define SOCKET_SC 4

#define TP_RECARGA 1
#define TP_SALDO   2

//Codigos das funcoes que o terminal suporta

#define MAX_FUNC  16
#define N_MAX_LOGS  500  // Limite de armazenamento no arquivo da flash
//#define MAX_LOGS_TRANS 8 // Limite de transacoes numa mesma mensagem

#define SIGNON              1
#define SIGNOFF             2
#define LISTA               3
#define AUTORIZACAO         4
#define LOG                 5
#define SALDO_M             8
#define TRANS_ACK          10
#define CONFIG_TCP         11
#define DISPLAY_TCP        12
#define SALDO_SPT          13
#define RECARGA_SPT        14
#define RECARGA_SPT_MANUAL 15
#define USER_MENU         100

//Flags de transacoes pendentes
#define FLG_LST     0x01 //Lista de recarga
#define FLG_LOG     0x02 //Log de transacoes
#define FLG_SIG     0x04 //Sign-On automatico
#define FLG_SIGNOFF 0x08 //Sign-Off obrigatorio

//Tamanho maximo de outbuff
#define MAX_MSG 500//1400

//Indices em outbuff (header) - posicoes fixas em outbuff validas para todas as mensagens
#define MSG_LEN 0
#define TYP_MSG 4
#define MSG_SEQ 5
#define COD_TER 7
#define MSG_STA 11

#define HEAD_LEN 11

#define FAILURE 1
#define SUCESS  0

#define WITHOPERATOR  1

#define OPERATOR 1
#define USER     2


#define MAX_TK_TYPE 4
#define MAX_CODES   3
#define N_MAX_CARDS 5000
#define MAX_LOG_SEQ 20


#define TIMEOUT_LIMIT   30   //em segundos
#define MAX_RETRY       5    //numero de tentaivas para abrir socket
#define MAX_AUTO_TRANS  4
#define MAX_BENEFICIOS  8


//Bitmap de status do terminal
#define LOG_FULL       0x01
#define MULTOS_DISABLE 0x02

//Erros na mensagem
#define NONE                  0
#define TIMEOUT_EXCEDED       1
#define WRONG_TERMINAL        2
#define INVALID_MESSAGE       3
#define INVALID_SEQ           4
#define MAX_AUTO_TRANS_ERROR  5
#define MAX_BENEFICIOS_ERROR  6
#define MAX_MENU_ITENS_ERROR  7
#define MAX_TEXT_LEN_ERROR    8
#define MAX_N_CARDS_ERROR     9
#define TOTAL_LIST_NUM			10
#define ORDEM_MSG_LISTA			11
//Mensagens a serem exibidas no display
UCHAR err_messages[12][33]=   {{"    TRANSACAO      FINALIZADA   "},										{"SEM RESPOSTA DO     SERVIDOR    "},
										{"MENSAGEM NAO E  P/ ESSE TERMINAL"},
										{"    MENSAGEM        INVALIDA    "},
										{"   SEQUENCIAL       INVALIDO    "},
										{"TIPO DA MENSAGEM    INVALIDO    "},
										{"LIMITE DE BENEFICIOS EXCEDIDO   "},
										{"LIMITE DE ITENS DE MENU EXCEDIDO"},
										{"LIMITE DE TEXTO EXCEDIDO        "},
										{"LIMITE CARTOES  EXCEDIDO        "},
										{"ERRO NO NUMERO    MENS. DE LISTA"},
										{"ERRO SEQUENCIAL   MENS. DE LISTA"},
										};

// Erros de comunica玢o
/*
#define RECEIVE_STX_ERR  40
#define MAX_MSG_LEN_ERR  41
#define PROTOCOL_ERR     42
#define TIMEOUT_COMM_ERR 43
#define CRC_ERR          44
#define SEQ_NR_ERR       45
#define BCC_ERR          46
#define PIC_SEND_ERR     47
*/

/*********************************
*  Protocolo de comunicacao 3964.
*
*********************************/
#define STX   0x02
#define ETX   0x03
#define DLE   0x10
#define ACK   0x06
#define NACK  0x15

#define M_CARD	   0x01
#define USER_CARD	0x02

#define KEY_A	  0x01
#define KEY_B	  0x02

#define SPTRANS  0x02

/*
#define K_NDEF 0xff
#define K_CANC 0x0c
#define K_UP   0x0f
#define K_DOWN 0x0d
#define K_DEL  0x0e
#define K_ENT  0x0b

unsigned char Keyboard_map[17]={ K_NDEF, K_UP, 0x03, 0x02, 0X01,
								 K_DOWN, 0x06, 0x05, 0X04, K_NDEF,
								 0x09, 0x08, 0X07, K_DEL, K_ENT,
								 0x00, K_CANC};

*/
/*
 * Structs usadas pelo software do terminal
 *
*/

// Struct de armazenamento da lista de
// cartoes a serem recarregados
struct {
	ULONG card_n_serie;       // numero de serie do cartao
	ULONG cod_beneficio;      // tipo de credito
	ULONG  cred_value;         // saldo atual do credito
	UCHAR  charge_seq;         // sequencial de recarga
//	BOOL  done;         // flag para indicar se recarga ja foi efetuada
} card_list;

// Struct para armazenamento em memoria de uma
// lista temporaria de cartoes a serem recarregados
// mas que nao constavam na lista original (armazenada na Flash)
struct card_data{
	ULONG cred_value;    // saldo atual do credito
	UCHAR charge_seq;    // sequencial de recarga
	struct card_data *next;
};

struct temp_card_list{
	ULONG card_n_serie;      // numero de serie do cartao
	UCHAR qtde;              // quantidade de creditos disponiveis
	struct card_data *data;
};


// sp_trans

struct  log_trans{
	UINT  log_seq;			 // log_seq -> CAMPO RESERVADO
//	UCHAR id_pacote;         // id do pacote
	ULONG id_usuario;        // numero do cartao do usuario(logico)
	UCHAR tp_usuario;        // tipo do cartao usuario
	UCHAR tp_transacao;      // tipo de transacao
	UCHAR tp_beneficio;       // tipo de beneficio
	ULONG id_master;         // id cartao master
	ULONG id_pdv;            // id do pdv
//	UINT  ruf;               // ruf
	ULONG serial_sam;        // numero serial do SAM
	UINT  dt_recarga;        // data da recarga
	UINT  hr_recarga;        // hora da recarga
//	UCHAR carteira;          // numero da carteira recarregada
	ULONG valor_recarga;     // valor recarregado
	UCHAR cnt_credito;       // contador de creditos
	UINT  cnt_debito;        // contador de debitos
	ULONG saldo_1A;          // saldo carteira 1A
	UINT  dt_1A;             // data de recarga da carteira 1A
	ULONG saldo_1B;          // saldo carteira 1B
	UINT  dt_1B;             // data de recarga da carteira 1B
	UCHAR id_lista;          // id na lista de recarga
	UCHAR id_emiss_user;     // id emissor usuario
	UCHAR id_emiss_master;   // id emissor master
	UCHAR viagens;           //??
	UCHAR dias_temporal;     // dias cartao temporal
	UINT  serie_transferida; // serie transferida
	ULONG saldo_master_ant;  // saldo master anterior
	UCHAR signature[8];      // assinatura dos dados de log
	UINT  nsu_transaction;   // NSU do terminal referente a transacao
};

#define MAX_LOGS_TRANS ((MAX_MSG - HEAD_LEN) - 4)/sizeof(struct log_trans)

// Struct de armazenamento das informacoes
// do terminal para efetuar a transacao de Sign-On
struct{
//	ULONG term_number;     // numero do terminal
//	ULONG operator_psw;    // senha do operador
	ULONG pic_number;      // numero do PIC usado no terminal
	UCHAR M3card_number[8];   // numero do cartao M3 usado no terminal
	ULONG M3card_amount;   // saldo do cartao M3 usado no terminal
	UINT  sw_version;      // versao do software do terminal
	UINT  location_number; // numero de localizacao do terminal
								  // na base de dados Embryo
}signon_out;



// Struct de armazenamento das informacoes do terminal
// retornadas pelo servidor na transacao de Sign-On
struct{
//	ULONG term_number;     // numero do terminal
//	UCHAR status;          // status da transacao de Sign-On
	ULONG operator_card;   // numero do cartao do operador para o terminal
	UCHAR date[3];         // data do servidor no momento da transacao
	UCHAR time[3];         // hora do servidor no momento da transacao
	UINT  id_sessao;       // id da sessao criada com o servidor
	ULONG flag;            // flag com pendencias do terminal em
								  // relacao ao servidor
	UCHAR func_default;    // funcao default a ser executada pelo terminal
}signon_in;



struct auto_trans
{
	UCHAR tp_trans;
	ULONG time;
	UCHAR last_day;
};



struct beneficio {
	ULONG  cod_beneficio;
	ULONG  max_store;     // limite de armazenamento
	ULONG  max_recharge;  // limite para cada recarga
};



struct{
	BOOL wait;
	UCHAR type;
	ULONG date_time;
}response;

struct terminal_set{
	ULONG  term_number;
	UINT   nsu;
	ULONG  operator_card;
	ULONG  local_ip;
	UINT   local_port;
	ULONG  remote_ip;
	UINT   remote_port;
	ULONG  gate_ip;
	ULONG  mask;
};



/*
struct menu_option{
	UCHAR id;
	UCHAR str[MAX_TEXT];
	UCHAR father;
	UCHAR function;
};
*/

union
{
	unsigned long vulong;
	unsigned int  vuint;
	unsigned char array4[4];
}liaunion;

#define VALUE_BLOCK1A 21
#define VALUE_BLOCK1B 25
#define VALUE_BLOCK2A 29
#define VALUE_BLOCK2B 33


// Definicao do mapa do cartao de usuario - SpTrans (v2.7)

enum {
	// Dados de Emissao
	ID_EMISSOR,
	EMISS_CARTAO,
	TIPO_CARTAO,
	SERIAL_CARTAO,
	RUF1,
	ASSIN8P1,
	ASSIN8P2,

	// Dados de Restricoes do cartao
	VAL_BENEFICIO,
	LIMITE_DIARIO,
	LIMITE_SEMANAL,
	LIMITE_MENSAL,
	DIAS_SEMANA,
	COD_ESC_EMP,
	ACOMPANHANTE,
	COD_TF_DESLOC,
	ASSIN9P1,
	ASSIN9P2,

	//Backup bloco 9
	BKP_BLOCO9,

	// Contadores e dados da transacao de viagem
	TEMPO_INTEGRACAO,
	COD_MOD_ULT_VIAGEM,
	SENTIDO_LINHA,
	COD_LINHA,
	COD_GRP_LINHA,
	COD_TP_LINHA,
	COD_ABRANGENCIA,
	COD_TARIFA,
	ATV,
	FLAG_BLOQUEIO,
	RUF3,
	ASSIN12P1,
	ASSIN12P2,

	CNT_DIARIO,
	CNT_SEMANAL,
	CNT_MENSAL,
	CNT_DIAS_SEMANA,
	CNT_DIAS_TEMP,
	NUM_INTEGRACOES,
	TARIFA_ACUM,
	ACUM_VALOR,
	CANCELA_CART1,
	CANCELA_CART2,
	DT_ULT_VIAGEM,
	HR_ULT_VIAGEM,
	RUF4,
	RUF5,

	DT_1A_VIAGEM,
	HR_1A_VIAGEM,
	COD_TP_1A_VIAGEM,
	CNT_REST_INTEGRA,
	RUF6,
	CRC,

	BKP_BLOCO12,
	BKP_BLOCO13,
	BKP_BLOCO14,

	// Porta moeda com restricao de uso 1A
	DT_REC_CART1A,
	VR_REC_CART1A,
	ID_REC_LISTA_VT1A,
	ACCM1A,
	ATR1A,
	ID_LISTA_SUBST_SALDOS1A,
	ASSIN20P1,
	ASSIN20P2,

	SALDO_CART1A,
	BKP_BLOCO21,

	// Porta moeda com restricao de uso 1B
	DT_REC_CART1B,
	VR_REC_CART1B,
	ID_REC_LISTA_VT1B,
	ACCM1B,
	ATR1B,
	ID_LISTA_SUBST_SALDOS1B,
	ASSIN24P1,
	ASSIN24P2,

	SALDO_CART1B,
	BKP_BLOCO25,

	// Porta moeda sem restricao de uso 2A
	DT_REC_CART2A,
	VR_REC_CART2A,
	NORM_TEMP2A,
	DIAS_UTL_TEMP2A,
	ID_LISTA_SUBST_SALDOS2A,
	ATR2A,
	RUF7,
	ASSIN28P1,
	ASSIN28P2,

	SALDO_CART2A,
	BKP_BLOCO29,

	// Porta moeda sem restricao de uso 2B
	DT_REC_CART2B,
	VR_REC_CART2B,
	NORM_TEMP2B,
	DIAS_UTL_TEMP2B,
	ID_LISTA_SUBST_SALDOS2B,
	ATR2B,
	RUF8,
	ASSIN32P1,
	ASSIN32P2,

	SALDO_CART2B,
	BKP_BLOCO33,


	LIM_TM_MENS_EST,
	RUF9,

	LIM_TE_MENS_EST,
	DT_ULT_METRO,
	ACCM_TE,
	RUF10,

	RUF11,

	MAX_FIELDS,
	BLANK_FIELD_16,
	BLANK_FIELD_10,
	BLANK_FIELD_08,
	MAX_BLANKS_FIELDS
};

UCHAR blankFields[MAX_BLANKS_FIELDS-MAX_FIELDS] = {0,16,10, 8};

struct card_map sptrans[MAX_FIELDS] =	{
	 //Dados de Emissao
	 {  0,   4,  8},     // Id Emissor
	 {  4,  16,  8},     // Data de emissao do cartao
	 { 20,   8,  8},     // Tipo do cartao
	 { 28,  32,  8},     // Numero serial + DV
	 { 60,   4,  8},     // RUF
	 { 64,  32,  8},     // Codigo de Aprovacao do SAM de emissao
	 { 96,  32,  8},     // Codigo de Aprovacao do SAM de emissao

	 //Dados de Restricoes do cartao
	 {  0,  16,  9},     // Data de validade do beneficio
	 { 16,   4,  9},     // Limite diario de utilizacao
	 { 20,   6,  9},     // Limite semanal de utilizacao
	 { 26,   8,  9},     // Limite mensal de utilizacao
	 { 34,   3,  9},     // Limite de dias da semana
	 { 37,  20,  9},     // Codigo da escola/empresa
	 { 57,   1,  9},     // Flag de acompanhante de deficiente
	 { 58,   6,  9},     // RUF
	 { 64,  32,  9},     // Codigo de Aprovacao do SAM de revalidacao
	 { 96,  32,  9},     // Codigo de Aprovacao do SAM de revalidacao

	 {  0, 128, 10},

	 // Contadores e dados da transacao de viagem
	 {  0,   8, 12},
	 {  8,   5, 12},
	 { 13,   1, 12},
	 { 14,  12, 12},
	 { 26,   7, 12},
	 { 33,   7, 12},
	 { 40,   3, 12},
	 { 43,   5, 12},
	 { 48,  14, 12},
	 { 62,   1, 12},
	 { 63,   1, 12},
	 { 64,  32, 12},
	 { 96,  32, 12},

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -