- introduced enterCritical, exitCritial

git-svn-id: http://moon:8086/svn/projects/HendiControl@36 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
2019-03-02 14:28:06 +00:00
parent a94413670a
commit c092db8909
5 changed files with 89 additions and 41 deletions
+47 -29
View File
@@ -37,44 +37,62 @@ void fifo_free(Fifo *pObj)
int fifo_push(Fifo *pObj, void *pItem)
{
if (pObj->fill >= pObj->capacity)
int success = 0;
enterCritical();
do
{
return 0;
}
for (size_t i=0; i < pObj->itemSize; i++)
{
((uint8_t*)pObj->ppData[pObj->wi])[i] = ((uint8_t*)pItem)[i];
}
pObj->wi++;
pObj->fill++;
if (pObj->wi == pObj->capacity)
{
pObj->wi = 0;
}
return 1;
if (pObj->fill >= pObj->capacity)
{
break;
}
for (size_t i=0; i < pObj->itemSize; i++)
{
((uint8_t*)pObj->ppData[pObj->wi])[i] = ((uint8_t*)pItem)[i];
}
pObj->wi++;
pObj->fill++;
if (pObj->wi == pObj->capacity)
{
pObj->wi = 0;
}
success = 1;
} while (0);
exitCritial();
return success;
}
int fifo_pop(Fifo *pObj, void *pItem)
{
if (!pObj->fill)
int success = 0;
enterCritical();
do
{
return 0;
}
for (size_t i=0; i < pObj->itemSize; i++)
{
((uint8_t*)pItem)[i] = ((uint8_t*)pObj->ppData[pObj->ri])[i];
}
pObj->ri++;
pObj->fill--;
if (pObj->ri == pObj->capacity)
{
pObj->ri = 0;
}
return 1;
if (!pObj->fill)
{
break;
}
for (size_t i=0; i < pObj->itemSize; i++)
{
((uint8_t*)pItem)[i] = ((uint8_t*)pObj->ppData[pObj->ri])[i];
}
pObj->ri++;
pObj->fill--;
if (pObj->ri == pObj->capacity)
{
pObj->ri = 0;
}
success = 1;
} while(0);
exitCritial();
return success;
}
int fifo_isEmpty(Fifo *pObj)
{
return pObj->fill == 0;
enterCritical();
int isEmpty = (pObj->fill == 0);
exitCritial();
return isEmpty;
}