📄 vb500.h
字号:
/*
* 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 + -