OSDN Git Service

add i2c burst access
authorryuz <ryuz@users.sourceforge.jp>
Mon, 15 Nov 2010 14:08:24 +0000 (23:08 +0900)
committerryuz <ryuz@users.sourceforge.jp>
Mon, 15 Nov 2010 14:08:24 +0000 (23:08 +0900)
aplfw/build/win/win32/vc2010/hosaplfw.vcxproj
aplfw/build/win/win32/vc2010/hosaplfw.vcxproj.filters
aplfw/driver/i2c/i2c/i2cdrv.h
aplfw/driver/i2c/i2c/i2cdrv_burstread.c [new file with mode: 0644]
aplfw/driver/i2c/i2c/i2cdrv_burstwrite.c [new file with mode: 0644]
kernel/build/win/win32/vc2010/hosv4a.vcxproj
kernel/build/win/win32/vc2010/hosv4a.vcxproj.filters
kernel/source/object/cyc/ref_cyc.c

index 38444e4..47eca07 100755 (executable)
   </ItemGroup>\r
   <ItemGroup>\r
     <ClCompile Include="..\..\..\..\application\utility\i2ccmd\i2ccmd_main.c" />\r
+    <ClCompile Include="..\..\..\..\driver\i2c\i2c\i2cdrv_burstread.c" />\r
+    <ClCompile Include="..\..\..\..\driver\i2c\i2c\i2cdrv_burstwrite.c" />\r
     <ClCompile Include="..\..\..\..\driver\i2c\i2c\i2cdrv_byteread.c" />\r
     <ClCompile Include="..\..\..\..\driver\i2c\i2c\i2cdrv_bytewrite.c" />\r
     <ClCompile Include="..\..\..\..\driver\i2c\jelly\jellyi2cdrv_access.c" />\r
index 412d8d6..4a1f0d7 100644 (file)
     <ClCompile Include="..\..\..\..\application\utility\i2ccmd\i2ccmd_main.c">
       <Filter>application\utility\i2ccmd</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\..\..\driver\i2c\i2c\i2cdrv_burstwrite.c">
+      <Filter>driver\i2c\i2c</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\driver\i2c\i2c\i2cdrv_burstread.c">
+      <Filter>driver\i2c\i2c</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>
\ No newline at end of file
index d324f45..938e836 100644 (file)
@@ -39,6 +39,8 @@ extern "C" {
 
 FILE_ERR I2cDrv_ByteWrite(HANDLE hFile, unsigned char ubDev, unsigned char ubAddr, unsigned char ubData);
 int      I2cDrv_ByteRead(HANDLE hFile, unsigned char ubDev, unsigned char ubAddr);
+FILE_ERR I2cDrv_BurstWrite(HANDLE hFile, unsigned char ubDev, unsigned char ubAddr, const unsigned char *pubData, int iLength);
+FILE_ERR I2cDrv_BurstRead(HANDLE hFile, unsigned char ubDev, unsigned char ubAddr, unsigned char *pubBuf, int iLength);
 
 #ifdef __cplusplus
 }
diff --git a/aplfw/driver/i2c/i2c/i2cdrv_burstread.c b/aplfw/driver/i2c/i2c/i2cdrv_burstread.c
new file mode 100644 (file)
index 0000000..3ae0bc6
--- /dev/null
@@ -0,0 +1,42 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  i2cdrv_bytewrite.c
+ * @brief %jp{I2Cデバイスドライバ}
+ *
+ * Copyright (C) 2006-2007 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "i2cdrv_local.h"
+
+
+FILE_ERR I2cDrv_BurstRead(HANDLE hFile, unsigned char ubDev, unsigned char ubAddr, unsigned char *pubBuf, int iLength)
+{
+       T_I2CDRV_ACCESS Access;
+       unsigned char   ubWriteBuf[2];
+       unsigned char   ubReadBuf[1];
+       
+       Access.iFlag        = (I2CDRV_ACCESS_FLAG_START);
+       ubWriteBuf[0]       = (unsigned char)((ubDev << 1) | 0x00);
+       ubWriteBuf[1]       = ubAddr;
+       Access.pubWriteBuf  = ubWriteBuf;
+       Access.iWriteLength = 2;
+       Access.pubReadBuf   = ubReadBuf;
+       Access.iReadLength  = 0;
+       File_IoControl(hFile, I2CDRV_IOCTL_ACCESS, NULL, 0, &Access, sizeof(Access));
+       
+       Access.iFlag        = (I2CDRV_ACCESS_FLAG_START | I2CDRV_ACCESS_FLAG_STOP);
+       ubWriteBuf[0] = (unsigned char)((ubDev << 1) | 0x01);
+       Access.pubWriteBuf  = ubWriteBuf;
+       Access.iWriteLength = 1;
+       Access.pubReadBuf   = pubBuf;
+       Access.iReadLength  = iLength;
+       File_IoControl(hFile, I2CDRV_IOCTL_ACCESS, NULL, 0, &Access, sizeof(Access));
+       
+       return (int)ubReadBuf[0];
+}
+
+
+/* end of file */
diff --git a/aplfw/driver/i2c/i2c/i2cdrv_burstwrite.c b/aplfw/driver/i2c/i2c/i2cdrv_burstwrite.c
new file mode 100644 (file)
index 0000000..9dde0d8
--- /dev/null
@@ -0,0 +1,42 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  i2cdrv_bytewrite.c
+ * @brief %jp{I2Cデバイスドライバ}
+ *
+ * Copyright (C) 2006-2007 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include "i2cdrv_local.h"
+
+
+FILE_ERR I2cDrv_BurstWrite(HANDLE hFile, unsigned char ubDev, unsigned char ubAddr, const unsigned char *pubData, int iLength)
+{
+       T_I2CDRV_ACCESS Access;
+       unsigned char   ubWriteBuf[2];
+       
+       ubWriteBuf[0] = (unsigned char)((ubDev << 1) | 0x00);
+       ubWriteBuf[1] = ubAddr;
+       
+       Access.iFlag        = I2CDRV_ACCESS_FLAG_START;
+       Access.pubWriteBuf  = ubWriteBuf;
+       Access.iWriteLength = 2;
+       Access.pubReadBuf   = NULL;
+       Access.iReadLength  = 0;
+       File_IoControl(hFile, I2CDRV_IOCTL_ACCESS, NULL, 0, &Access, sizeof(Access));
+       
+       Access.iFlag        = I2CDRV_ACCESS_FLAG_STOP;
+       Access.pubWriteBuf  = pubData;
+       Access.iWriteLength = iLength;
+       Access.pubReadBuf   = NULL;
+       Access.iReadLength  = 0;
+       File_IoControl(hFile, I2CDRV_IOCTL_ACCESS, NULL, 0, &Access, sizeof(Access));
+       
+       return FILE_ERR_OK;
+}
+
+
+
+/* end of file */
index a89779f..3ce480a 100755 (executable)
   <ItemGroup>\r
     <ClCompile Include="..\..\..\..\source\object\cyc\acre_cyc.c" />\r
     <ClCompile Include="..\..\..\..\source\object\cyc\cre_cyc.c" />\r
+    <ClCompile Include="..\..\..\..\source\object\cyc\del_cyc.c" />\r
     <ClCompile Include="..\..\..\..\source\object\cyc\kcre_cyc.c" />\r
     <ClCompile Include="..\..\..\..\source\object\cyc\kcyc_hdr.c" />\r
+    <ClCompile Include="..\..\..\..\source\object\cyc\ref_cyc.c" />\r
     <ClCompile Include="..\..\..\..\source\object\cyc\sta_cyc.c" />\r
     <ClCompile Include="..\..\..\..\source\object\cyc\stp_cyc.c" />\r
     <ClCompile Include="..\..\..\..\source\object\dtq\acre_dtq.c" />\r
index a2ff34c..eefefba 100644 (file)
     <ClCompile Include="..\..\..\..\source\arch\irc\simple\get_imsk.c">
       <Filter>source\arch\irc\simple</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\..\..\source\object\cyc\del_cyc.c">
+      <Filter>source\object\cyc</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\source\object\cyc\ref_cyc.c">
+      <Filter>source\object\cyc</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>
\ No newline at end of file
index bd3aea0..99217c2 100755 (executable)
@@ -4,7 +4,7 @@
  * @file  ref_cyc.c
  * @brief %jp{周期ハンドラの状態参照}%en{Reference Cyclic Handler State}
  *
- * Copyright (C) 1998-2006 by Project HOS
+ * Copyright (C) 1998-2010 by Project HOS
  * http://sourceforge.jp/projects/hos/
  */
 
@@ -60,15 +60,18 @@ ER ref_cyc(ID cycid, T_RCYC *pk_rcyc)
        cyccb    = _KERNEL_CYC_ID2CYCCB(cycid);
        
        /* %jp{情報取得} */
-       if( _KERNEL_CYC_GET_TIMOBJ(cyccb)->next == NULL){
+       if( _KERNEL_CYC_GET_TIMOBJ(cyccb)->next == NULL)
+       {
                pk_rcyc->cycatr = TCYC_STP;
-       }else{
+       }
+       else
+       {
                pk_rcyc->cycatr = TCYC_STA;
        }
        pk_rcyc->lefttim = _KERNEL_TIMOBJ_GET_LEFTTIM( _KERNEL_CYC_GET_TIMOBJ(cyccb) );
        
 
-       _KERNEL_LEAVE_SVC();    /* %jp{ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88æ\9cªç\94\9fæ\88\90}%en{Non-existant object} */
+       _KERNEL_LEAVE_SVC();    /* %jp{ã\82µã\83¼ã\83\93ã\82¹ã\82³ã\83¼ã\83«çµ\82äº\86} */  
        
        return E_OK;
 }