avr: implement char/short/long read and write functions from/to ctrl buffer
This commit is contained in:
parent
01863a6594
commit
98496e442d
|
@ -93,12 +93,12 @@ uint8_t ctrlAddToRxBuffer(uint8_t data)
|
||||||
return bufferAddToEnd(&ctrlRxBuffer, data);
|
return bufferAddToEnd(&ctrlRxBuffer, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t ctrlGetFromRxBuffer(uint8_t* data)
|
uint8_t ctrlGetFromRxBuffer(uint8_t* pdata)
|
||||||
{
|
{
|
||||||
// make sure we have data in the Rx buffer
|
// make sure we have data in the Rx buffer
|
||||||
if(ctrlRxBuffer.datalength) {
|
if(ctrlRxBuffer.datalength) {
|
||||||
// get byte from beginning of buffer
|
// get byte from beginning of buffer
|
||||||
*data = bufferGetFromFront(&ctrlRxBuffer);
|
*pdata = bufferGetFromFront(&ctrlRxBuffer);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -112,6 +112,79 @@ void ctrlFlushReceiveBuffer(void)
|
||||||
ctrlRxBuffer.datalength = 0;
|
ctrlRxBuffer.datalength = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t ctrlReadCharFromRxBuffer(uint8_t* pdata)
|
||||||
|
{
|
||||||
|
uint8_t high_hex, low_hex;
|
||||||
|
|
||||||
|
if (ctrlGetFromRxBuffer(&high_hex) && ctrlGetFromRxBuffer(&low_hex)) {
|
||||||
|
*pdata = htob(((uint16_t)high_hex << 8) + low_hex);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ctrlReadShortFromRxBuffer(uint16_t* pdata)
|
||||||
|
{
|
||||||
|
uint8_t high_char, low_char;
|
||||||
|
|
||||||
|
if(ctrlReadCharFromRxBuffer(&high_char) && ctrlReadCharFromRxBuffer(&low_char)) {
|
||||||
|
*pdata = ((uint16_t)high_char << 8) + low_char;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ctrlReadLongFromRxBuffer(uint32_t* pdata)
|
||||||
|
{
|
||||||
|
uint16_t high_short, low_short;
|
||||||
|
|
||||||
|
if(ctrlReadShortFromRxBuffer(&high_short) && ctrlReadShortFromRxBuffer(&low_short)) {
|
||||||
|
*pdata = ((uint32_t)high_short << 16) + low_short;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ctrlWriteCharToTxBuffer(uint8_t data)
|
||||||
|
{
|
||||||
|
uint16_t hex;
|
||||||
|
|
||||||
|
hex = btoh(data);
|
||||||
|
if (ctrlAddToTxBuffer((uint8_t)(hex >> 8)) && ctrlAddToTxBuffer((uint8_t)hex)) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ctrlWriteShortToTxBuffer(uint16_t data)
|
||||||
|
{
|
||||||
|
if (ctrlWriteCharToTxBuffer((uint8_t)(data >> 8)) && ctrlWriteCharToTxBuffer((uint8_t)data)) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ctrlWriteLongToTxBuffer(uint32_t data)
|
||||||
|
{
|
||||||
|
if (ctrlWriteShortToTxBuffer((uint16_t)(data >> 16)) && ctrlWriteShortToTxBuffer((uint16_t)data)) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ctrlRxToTxLoop(void)
|
void ctrlRxToTxLoop(void)
|
||||||
{
|
{
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
|
@ -150,14 +223,11 @@ void ctrlDecode(void)
|
||||||
void ctrlCmdGet(uint8_t cmd)
|
void ctrlCmdGet(uint8_t cmd)
|
||||||
{
|
{
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
uint16_t hex;
|
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case 'p':
|
case 'p':
|
||||||
for (i = 0 ; i < MAX_SENSORS; i++) {
|
for (i = 0 ; i < MAX_SENSORS; i++) {
|
||||||
hex = btoh(phy_to_log[i]);
|
ctrlWriteCharToTxBuffer(phy_to_log[i]);
|
||||||
ctrlAddToTxBuffer((uint8_t)(hex >> 8));
|
|
||||||
ctrlAddToTxBuffer((uint8_t)hex);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -165,14 +235,12 @@ void ctrlCmdGet(uint8_t cmd)
|
||||||
|
|
||||||
void ctrlCmdSet(uint8_t cmd)
|
void ctrlCmdSet(uint8_t cmd)
|
||||||
{
|
{
|
||||||
uint8_t i, high_hex, low_hex;
|
uint8_t i;
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case 'p':
|
case 'p':
|
||||||
for (i = 0 ; i < MAX_SENSORS; i++) {
|
for (i = 0 ; i < MAX_SENSORS; i++) {
|
||||||
ctrlGetFromRxBuffer(&high_hex);
|
ctrlReadCharFromRxBuffer(&phy_to_log[i]);
|
||||||
ctrlGetFromRxBuffer(&low_hex);
|
|
||||||
phy_to_log[i] = htob(((uint16_t)high_hex << 8) + low_hex);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue