- main: no global vars

- changed data types in fifo


git-svn-id: http://moon:8086/svn/projects/HendiControl@39 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
2019-03-02 16:07:39 +00:00
parent 0b22e8a084
commit 6998950021
3 changed files with 33 additions and 29 deletions
+24 -4
View File
@@ -8,6 +8,26 @@
#include <stdint.h> #include <stdint.h>
#include "fifo.h" #include "fifo.h"
static volatile size_t criticalCount = 0;
void enterCritical()
{
cli();
criticalCount++;
}
void exitCritial()
{
if (criticalCount)
{
criticalCount--;
if (!criticalCount)
{
sei();
}
}
}
void fifo_init(Fifo *pObj, size_t capacity, size_t itemSize, const char *pName) void fifo_init(Fifo *pObj, size_t capacity, size_t itemSize, const char *pName)
{ {
pObj->wi = 0; pObj->wi = 0;
@@ -15,11 +35,11 @@ void fifo_init(Fifo *pObj, size_t capacity, size_t itemSize, const char *pName)
pObj->fill = 0; pObj->fill = 0;
pObj->capacity = capacity; pObj->capacity = capacity;
pObj->itemSize = itemSize; pObj->itemSize = itemSize;
pObj->ppData = (void**)malloc(capacity); pObj->ppData = (uint8_t**)malloc(capacity);
for (int i=0; i < capacity; i++) for (int i=0; i < capacity; i++)
{ {
pObj->ppData[i] = (void*)malloc(itemSize); pObj->ppData[i] = (uint8_t*)malloc(itemSize);
} }
pObj->pName = pName; pObj->pName = pName;
} }
@@ -47,7 +67,7 @@ int fifo_push(Fifo *pObj, void *pItem)
} }
for (size_t i=0; i < pObj->itemSize; i++) for (size_t i=0; i < pObj->itemSize; i++)
{ {
((uint8_t*)pObj->ppData[pObj->wi])[i] = ((uint8_t*)pItem)[i]; pObj->ppData[pObj->wi][i] = ((uint8_t*)pItem)[i];
} }
pObj->wi++; pObj->wi++;
pObj->fill++; pObj->fill++;
@@ -73,7 +93,7 @@ int fifo_pop(Fifo *pObj, void *pItem)
} }
for (size_t i=0; i < pObj->itemSize; i++) for (size_t i=0; i < pObj->itemSize; i++)
{ {
((uint8_t*)pItem)[i] = ((uint8_t*)pObj->ppData[pObj->ri])[i]; ((uint8_t*)pItem)[i] = pObj->ppData[pObj->ri][i];
} }
pObj->ri++; pObj->ri++;
pObj->fill--; pObj->fill--;
+3 -19
View File
@@ -14,7 +14,7 @@
typedef struct _sFifo typedef struct _sFifo
{ {
void **ppData; uint8_t **ppData;
size_t capacity; size_t capacity;
size_t itemSize; size_t itemSize;
size_t volatile fill; size_t volatile fill;
@@ -29,23 +29,7 @@ int fifo_push(Fifo *pObj, void *pItem);
int fifo_pop(Fifo *pObj, void *pItem); int fifo_pop(Fifo *pObj, void *pItem);
int fifo_isEmpty(Fifo *pObj); int fifo_isEmpty(Fifo *pObj);
static volatile size_t criticalCount = 0; void enterCritical();
void exitCritial();
static inline void enterCritical()
{
cli();
criticalCount++;
}
static inline void exitCritial()
{
if (criticalCount)
{
criticalCount--;
if (!criticalCount)
{
sei();
}
}
}
#endif /* FIFO_H_ */ #endif /* FIFO_H_ */
+6 -6
View File
@@ -39,11 +39,6 @@
#define TIMER_SW_DELAY_MS(dly) ((dly*TIMER_IRQ_CLOCK)/1000UL) #define TIMER_SW_DELAY_MS(dly) ((dly*TIMER_IRQ_CLOCK)/1000UL)
static uint8_t ledState = 0;
static int16_t adc_last = 0;
static int sw_in_last = 0;
static Fifo messageFifo;
FILE uart_file = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); FILE uart_file = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
typedef enum _eSwitch typedef enum _eSwitch
@@ -83,6 +78,12 @@ typedef enum _eState_t
int main(void) int main(void)
{ {
uint8_t ledState = 0;
int16_t adc_last = 0;
int sw_in_last = 0;
size_t cmdStrSize = 0;
Fifo messageFifo;
cli(); cli();
wdt_reset(); wdt_reset();
wdt_disable(); wdt_disable();
@@ -109,7 +110,6 @@ int main(void)
i2c_send(0x60, I2C_WRITE, dac_cmd, res); i2c_send(0x60, I2C_WRITE, dac_cmd, res);
char cmdStr[16]; char cmdStr[16];
size_t cmdStrSize = 0;
PRINT_PROMPT; PRINT_PROMPT;
// Start Timer // Start Timer