Merge commit 'f214e0ff43594ebf48a00f8debb96613c307c309'
fetch sources for CashAgentLib 3.3.
This commit is contained in:
@@ -13,7 +13,8 @@ void sendWRcmd_INI(void)
|
||||
|
||||
sendWRcmd_clrCmdStack();
|
||||
sendWRcmd_clrCmd4Stack();
|
||||
|
||||
sendFDcmd_clrStack();
|
||||
longFDcmd_clrStack();
|
||||
}
|
||||
|
||||
// Command Stack for commands without parameters
|
||||
@@ -60,13 +61,19 @@ bool sendWRcmd_setSendCommand0(uint16_t nextCmd)
|
||||
uint16_t sendWRcmd_getSendCommand0(void)
|
||||
{
|
||||
uint16_t nxtAsynchCmd;
|
||||
uint8_t nn;
|
||||
uint8_t nn, ll;
|
||||
if (nrOfCmdsInQueue==0 || nrOfCmdsInQueue>CMDSTACKDEPTH)
|
||||
return 0; // error
|
||||
nxtAsynchCmd=nextAsynchsendCmd0[0];
|
||||
|
||||
// move Puffer down by one element
|
||||
for (nn=0; nn<CMDSTACKDEPTH; nn++)
|
||||
if (CMDSTACKDEPTH>0)
|
||||
ll=CMDSTACKDEPTH-1;
|
||||
else
|
||||
ll=0;
|
||||
for (nn=0; nn<ll; nn++)
|
||||
nextAsynchsendCmd0[nn]=nextAsynchsendCmd0[nn+1];
|
||||
|
||||
if (nrOfCmdsInQueue>0)
|
||||
nrOfCmdsInQueue--;
|
||||
//qDebug() << "PI cmd queued:"<< nxtAsynchCmd << ", restored, pp now =" << nrOfCmdsInQueue;
|
||||
@@ -138,7 +145,7 @@ bool sendWRcmd_setSendCommand4(uint16_t nextCmd, uint8_t dat1, uint8_t dat2, uin
|
||||
uint16_t sendWRcmd_getSendCommand4(uint8_t *dat1, uint8_t *dat2, uint8_t *dat3, uint8_t *dat4)
|
||||
{
|
||||
uint16_t nxtAsynchCmd;
|
||||
uint8_t nn;
|
||||
uint8_t nn, ll;
|
||||
|
||||
if (nrOfCmds4InQueue==0 || nrOfCmds4InQueue>CMD4STACKDEPTH)
|
||||
return 0; // error
|
||||
@@ -152,7 +159,11 @@ uint16_t sendWRcmd_getSendCommand4(uint8_t *dat1, uint8_t *dat2, uint8_t *dat3,
|
||||
// " data3: " << nextCmd4para3[0] << " data4: " << nextCmd4para4[0];
|
||||
|
||||
// move Puffer down by one element
|
||||
for (nn=0; nn<CMD4STACKDEPTH; nn++)
|
||||
if (CMD4STACKDEPTH>0)
|
||||
ll=CMD4STACKDEPTH-1;
|
||||
else
|
||||
ll=0;
|
||||
for (nn=0; nn<ll; nn++)
|
||||
{
|
||||
nextAsynchsendCmd4[nn]=nextAsynchsendCmd4[nn+1];
|
||||
nextCmd4para1[nn]=nextCmd4para1[nn+1];
|
||||
@@ -211,9 +222,9 @@ bool sendWRcmd_setSendCommand8(uint16_t nextCmd, uint8_t dat1, uint8_t dat2, uin
|
||||
uint16_t sendWRcmd_getSendCommand8(uint8_t *dat1, uint8_t *dat2, uint16_t *dat3, uint32_t *dat4)
|
||||
{
|
||||
uint16_t nxtAsynchCmd;
|
||||
uint8_t nn;
|
||||
uint8_t nn, ll;
|
||||
|
||||
if (nrOfCmds8InQueue==0 || nrOfCmds8InQueue>CMD4STACKDEPTH)
|
||||
if (nrOfCmds8InQueue==0 || nrOfCmds8InQueue>CMD8STACKDEPTH)
|
||||
return 0; // error
|
||||
nxtAsynchCmd=nextAsynchsendCmd8[0];
|
||||
*dat1=nextCmd8para1[0];
|
||||
@@ -222,7 +233,11 @@ uint16_t sendWRcmd_getSendCommand8(uint8_t *dat1, uint8_t *dat2, uint16_t *dat3,
|
||||
*dat4=nextCmd8para4[0];
|
||||
|
||||
// move buffer down by one element
|
||||
for (nn=0; nn<CMD8STACKDEPTH; nn++)
|
||||
if (CMD8STACKDEPTH>0)
|
||||
ll=CMD8STACKDEPTH-1;
|
||||
else
|
||||
ll=0;
|
||||
for (nn=0; nn<ll; nn++)
|
||||
{
|
||||
nextAsynchsendCmd8[nn]=nextAsynchsendCmd8[nn+1];
|
||||
nextCmd8para1[nn]=nextCmd8para1[nn+1];
|
||||
@@ -433,3 +448,215 @@ uint8_t gpi_chk4remainingText(void)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------------
|
||||
// 11.4.23 neu, Kommando direkt an "FastDevice"-protokoll senden, nicht mehr umsetzen
|
||||
// ---------------------------------------------------------------------------------
|
||||
|
||||
|
||||
// short command, 4 data bytes
|
||||
static uint8_t nextFDwrCmd[FDCMD_STACKDEPTH];
|
||||
static uint8_t nextFDrdCmd[FDCMD_STACKDEPTH];
|
||||
static uint8_t nextFDblkNr[FDCMD_STACKDEPTH];
|
||||
|
||||
static uint8_t nextFDpara1[FDCMD_STACKDEPTH];
|
||||
static uint8_t nextFDpara2[FDCMD_STACKDEPTH];
|
||||
static uint8_t nextFDpara3[FDCMD_STACKDEPTH];
|
||||
static uint8_t nextFDpara4[FDCMD_STACKDEPTH];
|
||||
static uint8_t p_nextFDcmdsInQueue;
|
||||
/* convention: use simple (not rotating) FIFO Stack:
|
||||
Example: nrOfCmdsInQueue=4 then
|
||||
nextAsynchsendCmd0[0]=cmd1 // was stored as first
|
||||
nextAsynchsendCmd0[1]=cmd2
|
||||
nextAsynchsendCmd0[2]=cmd3
|
||||
nextAsynchsendCmd0[3]=cmd4 // came in as last
|
||||
|
||||
Send: [0] first, then move buffer 1 down:
|
||||
nextAsynchsendCmd0[0]=cmd2
|
||||
nextAsynchsendCmd0[1]=cmd3
|
||||
nextAsynchsendCmd0[2]=cmd4
|
||||
nextAsynchsendCmd0[3]=0;
|
||||
nrOfCmdsInQueue=3 now
|
||||
*/
|
||||
|
||||
|
||||
void sendFDcmd_clrStack(void)
|
||||
{
|
||||
uint8_t nn;
|
||||
for (nn=0; nn<FDCMD_STACKDEPTH; nn++)
|
||||
{
|
||||
nextFDwrCmd[nn]=0;
|
||||
nextFDrdCmd[nn]=0;
|
||||
nextFDblkNr[nn]=0;
|
||||
nextFDpara1[nn]=0;
|
||||
nextFDpara2[nn]=0;
|
||||
nextFDpara3[nn]=0;
|
||||
nextFDpara4[nn]=0;
|
||||
}
|
||||
p_nextFDcmdsInQueue=0;
|
||||
}
|
||||
|
||||
bool sendFDcmd_set(uint8_t nextWrCmd, uint8_t nextRdCmd, uint8_t blockNum, uint8_t dat1, uint8_t dat2, uint8_t dat3, uint8_t dat4)
|
||||
{
|
||||
// write Command to memory, wait for transport
|
||||
if (p_nextFDcmdsInQueue>=FDCMD_STACKDEPTH)
|
||||
{
|
||||
qDebug() << "cannot save cmd because stack is full";
|
||||
return false; // not possible
|
||||
}
|
||||
nextFDwrCmd[p_nextFDcmdsInQueue]=nextWrCmd;
|
||||
nextFDrdCmd[p_nextFDcmdsInQueue]=nextRdCmd;
|
||||
nextFDblkNr[p_nextFDcmdsInQueue]=blockNum;
|
||||
nextFDpara1[p_nextFDcmdsInQueue]=dat1;
|
||||
nextFDpara2[p_nextFDcmdsInQueue]=dat2;
|
||||
nextFDpara3[p_nextFDcmdsInQueue]=dat3;
|
||||
nextFDpara4[p_nextFDcmdsInQueue]=dat4;
|
||||
//qDebug() << "data with 4 data byte saved, pp=" << nrOfCmds4InQueue;
|
||||
//qDebug() << " dat1=" << nextCmd4para1[nrOfCmds4InQueue] << " dat2=" << nextCmd4para2[nrOfCmds4InQueue]
|
||||
// << " dat3=" << nextCmd4para3[nrOfCmds4InQueue] << " dat4=" << nextCmd4para4[nrOfCmds4InQueue];
|
||||
p_nextFDcmdsInQueue++;
|
||||
return true; // ok, will be sent
|
||||
}
|
||||
|
||||
bool sendFDcmd_get(uint8_t *nextWrCmd, uint8_t *nextRdCmd, uint8_t *blockNum, uint8_t *dat1, uint8_t *dat2, uint8_t *dat3, uint8_t *dat4)
|
||||
{
|
||||
uint8_t nn, ll;
|
||||
|
||||
if (p_nextFDcmdsInQueue==0 || p_nextFDcmdsInQueue>FDCMD_STACKDEPTH)
|
||||
return false; // not possible
|
||||
|
||||
*nextWrCmd=nextFDwrCmd[0];
|
||||
*nextRdCmd=nextFDrdCmd[0];
|
||||
*blockNum=nextFDblkNr[0];
|
||||
*dat1=nextFDpara1[0];
|
||||
*dat2=nextFDpara2[0];
|
||||
*dat3=nextFDpara3[0];
|
||||
*dat4=nextFDpara4[0];
|
||||
//qDebug() << "cmd4 restored to send from [0]; pp=" << nrOfCmds4InQueue;
|
||||
//qDebug() << " data1: " << nextCmd4para1[0] << " data2: " << nextCmd4para2[0] <<
|
||||
// " data3: " << nextCmd4para3[0] << " data4: " << nextCmd4para4[0];
|
||||
|
||||
// move Puffer down by one element
|
||||
if (FDCMD_STACKDEPTH>0)
|
||||
ll=FDCMD_STACKDEPTH-1;
|
||||
else
|
||||
ll=0;
|
||||
for (nn=0; nn<ll; nn++)
|
||||
{
|
||||
nextFDwrCmd[nn]=nextFDwrCmd[nn+1];
|
||||
nextFDrdCmd[nn]=nextFDrdCmd[nn+1];
|
||||
nextFDblkNr[nn]=nextFDblkNr[nn+1];
|
||||
nextFDpara1[nn]=nextFDpara1[nn+1];
|
||||
nextFDpara2[nn]=nextFDpara2[nn+1];
|
||||
nextFDpara3[nn]=nextFDpara3[nn+1];
|
||||
nextFDpara4[nn]=nextFDpara4[nn+1];
|
||||
}
|
||||
if (p_nextFDcmdsInQueue>0)
|
||||
p_nextFDcmdsInQueue--;
|
||||
//qDebug() << "cmd4 after push down: pp=" << nrOfCmds4InQueue;
|
||||
return true; // ok, will be sent
|
||||
}
|
||||
|
||||
uint8_t check4FDshortCmd(void)
|
||||
{
|
||||
// returns number of waiting command
|
||||
return p_nextFDcmdsInQueue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// long command, 64 data bytes
|
||||
static uint8_t longFDwrCmd[FDLONG_STACKDEPTH];
|
||||
static uint8_t longFDrdCmd[FDLONG_STACKDEPTH];
|
||||
static uint8_t longFDblkNr[FDLONG_STACKDEPTH];
|
||||
static uint8_t longFDlength[FDLONG_STACKDEPTH];
|
||||
|
||||
static uint8_t longFDpara[FDLONG_STACKDEPTH][64];
|
||||
static uint8_t p_longFDcmdsInQueue;
|
||||
|
||||
|
||||
void longFDcmd_clrStack(void)
|
||||
{
|
||||
uint8_t nn, mm;
|
||||
for (nn=0; nn<FDLONG_STACKDEPTH; nn++)
|
||||
{
|
||||
longFDwrCmd[nn]=0;
|
||||
longFDrdCmd[nn]=0;
|
||||
longFDblkNr[nn]=0;
|
||||
longFDlength[nn]=0;
|
||||
for (mm=0; mm<64; mm++)
|
||||
longFDpara[nn][mm]=0;
|
||||
}
|
||||
p_longFDcmdsInQueue=0;
|
||||
}
|
||||
|
||||
|
||||
bool longFDcmd_set(uint8_t nextWrCmd, uint8_t nextRdCmd, uint8_t blockNum, uint8_t length, uint8_t *data)
|
||||
{
|
||||
// write Command to memory, wait for transport
|
||||
// data buffer size always 64! data[64], padded with 0
|
||||
uint8_t nn;
|
||||
if (p_longFDcmdsInQueue>=FDLONG_STACKDEPTH)
|
||||
{
|
||||
qDebug() << "cannot save cmd because stack is full";
|
||||
return false; // not possible
|
||||
}
|
||||
longFDwrCmd[p_longFDcmdsInQueue]=nextWrCmd;
|
||||
longFDrdCmd[p_longFDcmdsInQueue]=nextRdCmd;
|
||||
longFDblkNr[p_longFDcmdsInQueue]=blockNum;
|
||||
longFDlength[p_longFDcmdsInQueue]=length;
|
||||
for (nn=0; nn<64; nn++)
|
||||
longFDpara[p_longFDcmdsInQueue][nn]=data[nn];
|
||||
|
||||
p_longFDcmdsInQueue++;
|
||||
return true; // ok, will be sent
|
||||
}
|
||||
|
||||
bool longFDcmd_get(uint8_t *nextWrCmd, uint8_t *nextRdCmd, uint8_t *blockNum, uint8_t *length, uint8_t *data)
|
||||
{
|
||||
uint8_t nn, mm, ll;
|
||||
|
||||
if (p_longFDcmdsInQueue==0 || p_longFDcmdsInQueue>FDLONG_STACKDEPTH)
|
||||
return false; // not possible
|
||||
|
||||
*nextWrCmd= longFDwrCmd[0];
|
||||
*nextRdCmd= longFDrdCmd[0];
|
||||
*blockNum = longFDblkNr[0];
|
||||
*length = longFDlength[0];
|
||||
for (mm=0; mm<64; mm++)
|
||||
data[mm] = longFDpara[0][mm];
|
||||
|
||||
// move Puffer down by one element
|
||||
if (FDLONG_STACKDEPTH>0)
|
||||
ll=FDLONG_STACKDEPTH-1;
|
||||
else
|
||||
ll=0;
|
||||
for (nn=0; nn<ll; nn++)
|
||||
{
|
||||
longFDwrCmd[nn] = longFDwrCmd[nn+1];
|
||||
longFDrdCmd[nn] = longFDrdCmd[nn+1];
|
||||
longFDblkNr[nn] = longFDblkNr[nn+1];
|
||||
longFDlength[nn] = longFDlength[nn+1];
|
||||
|
||||
for (mm=0; mm<64; mm++)
|
||||
longFDpara[nn][mm] = longFDpara[nn+1][mm];
|
||||
|
||||
}
|
||||
if (p_longFDcmdsInQueue>0)
|
||||
p_longFDcmdsInQueue--;
|
||||
|
||||
return true; // ok, will be sent
|
||||
}
|
||||
|
||||
uint8_t check4FDlongCmd(void)
|
||||
{
|
||||
// returns number of waiting command
|
||||
return p_longFDcmdsInQueue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user