LTCD_070816.ISO
This commit is contained in:
1 parent
d14bbc24f9
commit
0e9364ff4c
506 files changed
+157705
-41812
No files matched your search
@@ -0,0 +1,169 @@
|
||||
U1Fifo *NewU1Fifo(U8 size,TssStruct *tss=NULL)
|
||||
{
|
||||
U1Fifo *f;
|
||||
if (!tss) tss=Fs;
|
||||
f=MAlloc(sizeof(U1Fifo),tss);
|
||||
f->mem_tss=tss;
|
||||
f->buf=MAlloc(size,tss);
|
||||
f->mask=size-1;
|
||||
f->in_ptr=0;
|
||||
f->out_ptr=0;
|
||||
return f;
|
||||
}
|
||||
|
||||
void DelU1Fifo(U1Fifo *f)
|
||||
{
|
||||
Free(f->buf,f->mem_tss);
|
||||
Free(f,f->mem_tss);
|
||||
}
|
||||
|
||||
BoolU8 U1FifoInsert(U1Fifo *f,U1 ch)
|
||||
{
|
||||
U8 old_flags=GetFlags,
|
||||
new_in_ptr;
|
||||
Cli;
|
||||
new_in_ptr=(f->in_ptr+1)&f->mask;
|
||||
if (new_in_ptr==f->out_ptr) {
|
||||
SetFlags(old_flags);
|
||||
return FALSE;
|
||||
} else {
|
||||
f->buf[f->in_ptr]=ch;
|
||||
f->in_ptr=new_in_ptr;
|
||||
SetFlags(old_flags);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
BoolU8 U1FifoRemove(U1Fifo *f,U1 *ch)
|
||||
{
|
||||
U8 old_flags=GetFlags;
|
||||
Cli;
|
||||
if (f->in_ptr==f->out_ptr) {
|
||||
SetFlags(old_flags);
|
||||
return FALSE;
|
||||
} else {
|
||||
*ch=f->buf[f->out_ptr];
|
||||
f->out_ptr=(f->out_ptr+1)&f->mask;
|
||||
SetFlags(old_flags);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
BoolU8 U1FifoPeek(U1Fifo *f,U1 *ch)
|
||||
{
|
||||
U8 old_flags=GetFlags;
|
||||
Cli;
|
||||
if (f->in_ptr==f->out_ptr) {
|
||||
SetFlags(old_flags);
|
||||
return FALSE;
|
||||
} else {
|
||||
*ch=f->buf[f->out_ptr];
|
||||
SetFlags(old_flags);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void U1FifoFlush(U1Fifo *f)
|
||||
{
|
||||
U8 old_flags=GetFlags;
|
||||
Cli;
|
||||
f->out_ptr=f->in_ptr;
|
||||
SetFlags(old_flags);
|
||||
}
|
||||
|
||||
U8 U1FifoCnt(U1Fifo *f)
|
||||
{
|
||||
U8 result,old_flags=GetFlags;
|
||||
Cli;
|
||||
if (f->out_ptr>f->in_ptr)
|
||||
result=f->mask+1-(f->out_ptr-f->in_ptr);
|
||||
else
|
||||
result=f->in_ptr-f->out_ptr;
|
||||
SetFlags(old_flags);
|
||||
return result;
|
||||
}
|
||||
|
||||
U8Fifo *NewU8Fifo(U8 size,TssStruct *tss=NULL)
|
||||
{
|
||||
U8Fifo *f;
|
||||
if (!tss) tss=Fs;
|
||||
f=MAlloc(sizeof(U8Fifo),tss);
|
||||
f->mem_tss=tss;
|
||||
f->buf=MAlloc(size*sizeof(U8),tss);
|
||||
f->mask=size-1;
|
||||
f->in_ptr=0;
|
||||
f->out_ptr=0;
|
||||
return f;
|
||||
}
|
||||
|
||||
void DelU8Fifo(U8Fifo *f)
|
||||
{
|
||||
Free(f->buf,f->mem_tss);
|
||||
Free(f,f->mem_tss);
|
||||
}
|
||||
|
||||
BoolU8 U8FifoInsert(U8Fifo *f,U8 d)
|
||||
{
|
||||
U8 old_flags=GetFlags,
|
||||
new_in_ptr;
|
||||
Cli;
|
||||
new_in_ptr=(f->in_ptr+1)&f->mask;
|
||||
if (new_in_ptr==f->out_ptr) {
|
||||
SetFlags(old_flags);
|
||||
return FALSE;
|
||||
} else {
|
||||
f->buf[f->in_ptr]=d;
|
||||
f->in_ptr=new_in_ptr;
|
||||
SetFlags(old_flags);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
BoolU8 U8FifoRemove(U8Fifo *f,U8 *d)
|
||||
{
|
||||
U8 old_flags=GetFlags;
|
||||
Cli;
|
||||
if (f->in_ptr==f->out_ptr) {
|
||||
SetFlags(old_flags);
|
||||
return FALSE;
|
||||
} else {
|
||||
*d=f->buf[f->out_ptr];
|
||||
f->out_ptr=(f->out_ptr+1)&f->mask;
|
||||
SetFlags(old_flags);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
BoolU8 U8FifoPeek(U8Fifo *f,U8 *d)
|
||||
{
|
||||
U8 old_flags=GetFlags;
|
||||
Cli;
|
||||
if (f->in_ptr==f->out_ptr) {
|
||||
SetFlags(old_flags);
|
||||
return FALSE;
|
||||
} else {
|
||||
*d=f->buf[f->out_ptr];
|
||||
SetFlags(old_flags);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void U8FifoFlush(U8Fifo *f)
|
||||
{
|
||||
U8 old_flags=GetFlags;
|
||||
Cli;
|
||||
f->out_ptr=f->in_ptr;
|
||||
SetFlags(old_flags);
|
||||
}
|
||||
|
||||
U8 U8FifoCnt(U8Fifo *f)
|
||||
{
|
||||
U8 result,old_flags=GetFlags;
|
||||
Cli;
|
||||
if (f->out_ptr>f->in_ptr)
|
||||
result=f->mask+1-(f->out_ptr-f->in_ptr);
|
||||
else
|
||||
result=f->in_ptr-f->out_ptr;
|
||||
SetFlags(old_flags);
|
||||
return result;
|
||||
}
|
||||
Reference in new issue
Block a user