/*
 * 	Module_RFID.h
 *
 *  Created on: 2019-10-24
 *  Update: 2020-10-19
 *  Author: Eason Yang
 *	Version: V0.03
 *
 * History
 * 1. Added : Reyax constant.
 *
 *
 *
 *
 *
 */
 
#ifndef LIB_Systex_H_
#define LIB_Systex_H_

#include 	<sys/time.h>
#include 	<sys/timeb.h>
#include    <sys/types.h>
#include    <sys/stat.h>
#include 	<sys/types.h>
#include 	<sys/ioctl.h>
#include 	<sys/socket.h>
#include 	<sys/ipc.h>
#include 	<sys/shm.h>
#include 	<sys/shm.h>
#include 	<sys/mman.h>
#include 	<linux/wireless.h>
#include 	<arpa/inet.h>
#include 	<netinet/in.h>

#include 	<unistd.h>
#include 	<stdarg.h>
#include    <stdio.h>	/* Standard input/output definitions */
#include    <stdlib.h>
#include    <unistd.h>	/* UNIX standard function definitions */
#include    <fcntl.h>	/* File control definitions */
#include    <termios.h>	/* POSIX terminal control definitions */
#include    <errno.h>	/* Error number definitions */
#include 	<string.h>	/* String function definitions */
#include	<time.h>
#include	<ctype.h>
#include 	<ifaddrs.h>
#include	<stdbool.h>



struct TransInfo
{
	unsigned char TransDate[6];	//交易日期
	unsigned char TransTime[6];	//交易時間
	unsigned char ROC[12];		//EDC簽單調閱編號 (左靠右補空白)
	unsigned char ApprovalNo[9];		//授權碼[信用卡退貨交易] (左靠右補空白)
	unsigned char StoreId[18];		//櫃號,機號,發票號碼(左靠右補空白)
	unsigned char RRN[12];		//信用卡交易序號
	unsigned char CardNo[20];		//卡號(左靠右補空白),卡號部份隱藏
	unsigned char TransAmount[12];		//交易金額
	unsigned char VemData[64];		//無人自助設備交易資訊 交易別31/32 (預授權完成/預授權取消) 必要欄位 資訊來源為交易別13 (預授權)的回傳
};
enum CreditCardResult {
	_CREDITCARD_FAIL,
	_CREDITCARD_PASS,
	_CREDITCARD_NOCARD,
};
int CreditCardSearch(int Fd,unsigned char *EVSEID, struct TransInfo *TransInfoReturn);
int CreditCardPreAuth(int Fd, int PreCost,unsigned char *EVSEID, struct TransInfo *TransInfoReturn);
int CreditCardPreAuthComplete(int Fd, int PreCost,unsigned char *EVSEID, unsigned char *VemData,struct TransInfo *TransInfoReturn);
int CreditCardPreAuthCancel(int Fd, int PreCost,unsigned char *EVSEID, unsigned char *ApprovalNo, unsigned char *CardNum,unsigned char *VemData);
int CreditCardUnionSettlement(int Fd,unsigned char *EVSEID,struct TransInfo *TransInfoReturn);
int CreditCardSale(int Fd, int Cost,unsigned char *EVSEID, struct TransInfo *TransInfoReturn);

#endif