OSDN Git Service

update libMiMic
[mimic/MiMicSDK.git] / lib / src / NyLPC_cRingBuffer.c
index ef4a58e..645e3d5 100644 (file)
@@ -19,8 +19,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
  *\r
  * For further information please contact.\r
- *     http://nyatla.jp/\r
- *     <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
+ *  http://nyatla.jp/\r
+ *  <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
  *\r
  *********************************************************************************/\r
 #include "NyLPC_cRingBuffer.h"\r
 #elif NyLPC_ARCH==NyLPC_ARCH_WIN32\r
 void NyLPC_cRingBuffer_dump(NyLPC_TcRingBuffer_t* i_inst)\r
 {\r
-       NyLPC_TUInt8* s=((NyLPC_TUInt8*)(i_inst+1));//バッファ開始位置\r
-       int i;\r
-       if(i_inst->ro<=i_inst->wo){\r
-               for(i=0;i<i_inst->ro;i++){\r
-                       printf("-- ");\r
-               }\r
-               for(i=i_inst->ro;i<i_inst->wo;i++){\r
-                       printf("%02X ",*(s+i));\r
-               }\r
-               for(i=i_inst->wo;i<i_inst->bl;i++){\r
-                       printf("-- ");\r
-               }\r
-       }else{\r
-               for(i=0;i<i_inst->wo;i++){\r
-                       printf("%02X ",*(s+i));\r
-               }\r
-               for(i=i_inst->wo;i<i_inst->ro;i++){\r
-                       printf("-- ");\r
-               }\r
-               for(i=i_inst->ro;i<i_inst->bl;i++){\r
-                       printf("%02X ",*(s+i));\r
-               }\r
-       }\r
-       printf("\n");\r
+    NyLPC_TUInt8* s=((NyLPC_TUInt8*)(i_inst+1));//バッファ開始位置\r
+    int i;\r
+    if(i_inst->ro<=i_inst->wo){\r
+        for(i=0;i<i_inst->ro;i++){\r
+            printf("-- ");\r
+        }\r
+        for(i=i_inst->ro;i<i_inst->wo;i++){\r
+            printf("%02X ",*(s+i));\r
+        }\r
+        for(i=i_inst->wo;i<i_inst->bl;i++){\r
+            printf("-- ");\r
+        }\r
+    }else{\r
+        for(i=0;i<i_inst->wo;i++){\r
+            printf("%02X ",*(s+i));\r
+        }\r
+        for(i=i_inst->wo;i<i_inst->ro;i++){\r
+            printf("-- ");\r
+        }\r
+        for(i=i_inst->ro;i<i_inst->bl;i++){\r
+            printf("%02X ",*(s+i));\r
+        }\r
+    }\r
+    printf("\n");\r
 }\r
 #else\r
 #endif\r
 \r
 void NyLPC_cRingBuffer_reset(NyLPC_TcRingBuffer_t* i_inst)\r
 {\r
-       i_inst->ro=i_inst->wo=0;\r
+    i_inst->ro=i_inst->wo=0;\r
 }\r
 \r
 NyLPC_TInt16 NyLPC_cRingBuffer_getReadableSize(NyLPC_TcRingBuffer_t* i_inst)\r
 {\r
-       volatile NyLPC_TUInt16 wo=(i_inst)->wo;\r
-       volatile NyLPC_TUInt16 ro=(i_inst)->ro;\r
-       if(wo>=ro)\r
-       {\r
-               return wo-ro;\r
-       }else{\r
-               return (i_inst)->bl-ro;\r
-       }\r
+    volatile NyLPC_TUInt16 wo=(i_inst)->wo;\r
+    volatile NyLPC_TUInt16 ro=(i_inst)->ro;\r
+    if(wo>=ro)\r
+    {\r
+        return wo-ro;\r
+    }else{\r
+        return (i_inst)->bl-ro;\r
+    }\r
 }\r
 \r
 NyLPC_TInt16 NyLPC_cRingBuffer_getWritableSize(const NyLPC_TcRingBuffer_t* i_inst)\r
 {\r
-       volatile NyLPC_TUInt16 wo=(i_inst)->wo;\r
-       volatile NyLPC_TUInt16 ro=(i_inst)->ro;\r
-       if(wo>=ro){\r
-               //書込み可能サイズの計算\r
-               return i_inst->bl-(wo-ro)-1;\r
-       }else{\r
-               return ro-wo-1;\r
-       }\r
+    volatile NyLPC_TUInt16 wo=(i_inst)->wo;\r
+    volatile NyLPC_TUInt16 ro=(i_inst)->ro;\r
+    if(wo>=ro){\r
+        //書込み可能サイズの計算\r
+        return i_inst->bl-(wo-ro)-1;\r
+    }else{\r
+        return ro-wo-1;\r
+    }\r
 \r
 }\r
 \r
 void NyLPC_cRingBuffer_initialize(NyLPC_TcRingBuffer_t* i_inst,void* i_buf,NyLPC_TUInt16 sizeof_buf)\r
 {\r
-       //バッファの開始位置と終了位置の計算\r
-       i_inst->bl=sizeof_buf;\r
-       i_inst->ro=0;\r
-       i_inst->wo=0;\r
-       i_inst->buf=i_buf;\r
+    //バッファの開始位置と終了位置の計算\r
+    i_inst->bl=sizeof_buf;\r
+    i_inst->ro=0;\r
+    i_inst->wo=0;\r
+    i_inst->buf=i_buf;\r
 }\r
 \r
 int NyLPC_cRingBuffer_write(NyLPC_TcRingBuffer_t* i_inst,NyLPC_TUInt8* i_data,const int i_len)\r
 {\r
-       NyLPC_TUInt8* s=(NyLPC_TUInt8*)i_inst->buf;\r
-       NyLPC_TUInt8* p;\r
-       NyLPC_TUInt16 wo=i_inst->wo;\r
-       NyLPC_TUInt16 ro=i_inst->ro;\r
-       NyLPC_TUInt16 wsize;//書込み可能サイズ\r
-       int l,i;\r
-       NyLPC_TUInt16 rw;\r
+    NyLPC_TUInt8* s=(NyLPC_TUInt8*)i_inst->buf;\r
+    NyLPC_TUInt8* p;\r
+    NyLPC_TUInt16 wo=i_inst->wo;\r
+    NyLPC_TUInt16 ro=i_inst->ro;\r
+    NyLPC_TUInt16 wsize;//書込み可能サイズ\r
+    int l,i;\r
+    NyLPC_TUInt16 rw;\r
 \r
-       if(wo>=ro){\r
-               //書込み可能サイズの計算\r
-               wsize=i_inst->bl-(wo-ro)-1;\r
-               if(wsize<1){\r
-                       return 0;\r
-               }\r
-               //書込みサイズの調整\r
-               if(wsize>i_len){\r
-                       wsize=i_len;\r
-               }\r
-               //右側の書込みサイズの計算\r
-               rw=i_inst->bl-wo;\r
-               l=(wsize<rw)?wsize:rw;\r
-               //書込みポインタを設定\r
-               p=(s+wo);\r
-               for(i=l-1;i>=0;i--){\r
-                       *(p++)=*(i_data++);\r
-               }\r
-               //書込み位置の調整\r
-               wo=(wo+l)%i_inst->bl;\r
-               l=wsize-l;//lに左側の書込みサイズストア\r
-       }else{\r
-               wsize=ro-wo-1;\r
-               if(wsize>i_len){\r
-                       wsize=i_len;\r
-               }\r
-               l=wsize;\r
-       }\r
-       if(l>0){\r
-               //左側の書込み\r
-               p=(s+wo);\r
-               for(i=l-1;i>=0;i--){\r
-                       *(p++)=*(i_data++);\r
-               }\r
-               wo+=l;\r
-       }\r
-       i_inst->wo=wo;\r
-       return wsize;\r
+    if(wo>=ro){\r
+        //書込み可能サイズの計算\r
+        wsize=i_inst->bl-(wo-ro)-1;\r
+        if(wsize<1){\r
+            return 0;\r
+        }\r
+        //書込みサイズの調整\r
+        if(wsize>i_len){\r
+            wsize=i_len;\r
+        }\r
+        //右側の書込みサイズの計算\r
+        rw=i_inst->bl-wo;\r
+        l=(wsize<rw)?wsize:rw;\r
+        //書込みポインタを設定\r
+        p=(s+wo);\r
+        for(i=l-1;i>=0;i--){\r
+            *(p++)=*(i_data++);\r
+        }\r
+        //書込み位置の調整\r
+        wo=(wo+l)%i_inst->bl;\r
+        l=wsize-l;//lに左側の書込みサイズストア\r
+    }else{\r
+        wsize=ro-wo-1;\r
+        if(wsize>i_len){\r
+            wsize=i_len;\r
+        }\r
+        l=wsize;\r
+    }\r
+    if(l>0){\r
+        //左側の書込み\r
+        p=(s+wo);\r
+        for(i=l-1;i>=0;i--){\r
+            *(p++)=*(i_data++);\r
+        }\r
+        wo+=l;\r
+    }\r
+    i_inst->wo=wo;\r
+    return wsize;\r
 }\r
 //読出しポインタを得る。\r
 NyLPC_TUInt8* NyLPC_cRingBuffer_pread(NyLPC_TcRingBuffer_t* i_inst,NyLPC_TUInt16 *len)\r
 {\r
-       NyLPC_TUInt16 ro=i_inst->ro;\r
-       *len=NyLPC_cRingBuffer_getReadableSize(i_inst);\r
-       return ((NyLPC_TUInt8*)(i_inst->buf))+ro;\r
+    NyLPC_TUInt16 ro=i_inst->ro;\r
+    *len=NyLPC_cRingBuffer_getReadableSize(i_inst);\r
+    return ((NyLPC_TUInt8*)(i_inst->buf))+ro;\r
 }\r
 \r
 //前方シークする。\r
 void NyLPC_cRingBuffer_preadSeek(NyLPC_TcRingBuffer_t* i_inst,NyLPC_TUInt16 i_seek)\r
 {\r
-       NyLPC_Assert(NyLPC_cRingBuffer_getReadableSize(i_inst)>=i_seek);\r
-       i_inst->ro=(i_inst->ro+i_seek)%i_inst->bl;\r
+    NyLPC_Assert(NyLPC_cRingBuffer_getReadableSize(i_inst)>=i_seek);\r
+    i_inst->ro=(i_inst->ro+i_seek)%i_inst->bl;\r
 }\r
 \r
 #define TEST\r
 #ifndef TEST\r
 void main(void)\r
 {\r
-       NyLPC_TUInt16 l;\r
-       NyLPC_TUInt8* b;\r
-       int c;\r
-       char buf[sizeof(NyLPC_TcRingBuffer_t)+5];\r
-       NyLPC_TcRingBuffer_t* s;\r
-       s=NyLPC_cRingBuffer_initialize(buf,sizeof(buf));\r
-       for(;;){\r
-               b=NyLPC_cRingBuffer_getReadPtr(s,&l);\r
-               printf("readable:%d\n",l);\r
-               c=NyLPC_cRingBuffer_write(s,"0123456789",3);\r
-               NyLPC_cRingBuffer_dump(s);\r
-               b=NyLPC_cRingBuffer_getReadPtr(s,&l);\r
-               printf("readable:%d\n",l);\r
-               NyLPC_cRingBuffer_seekReadPtr(s,(l>1)?l-1:1);\r
-               printf("read:%d\n",(l>1)?l-1:1);\r
-               NyLPC_cRingBuffer_dump(s);\r
-       }\r
+    NyLPC_TUInt16 l;\r
+    NyLPC_TUInt8* b;\r
+    int c;\r
+    char buf[sizeof(NyLPC_TcRingBuffer_t)+5];\r
+    NyLPC_TcRingBuffer_t* s;\r
+    s=NyLPC_cRingBuffer_initialize(buf,sizeof(buf));\r
+    for(;;){\r
+        b=NyLPC_cRingBuffer_getReadPtr(s,&l);\r
+        printf("readable:%d\n",l);\r
+        c=NyLPC_cRingBuffer_write(s,"0123456789",3);\r
+        NyLPC_cRingBuffer_dump(s);\r
+        b=NyLPC_cRingBuffer_getReadPtr(s,&l);\r
+        printf("readable:%d\n",l);\r
+        NyLPC_cRingBuffer_seekReadPtr(s,(l>1)?l-1:1);\r
+        printf("read:%d\n",(l>1)?l-1:1);\r
+        NyLPC_cRingBuffer_dump(s);\r
+    }\r
 \r
 }\r
 #endif\r