OSDN Git Service

add I2C command
authorryuz <ryuz@users.sourceforge.jp>
Tue, 5 Oct 2010 14:17:09 +0000 (23:17 +0900)
committerryuz <ryuz@users.sourceforge.jp>
Tue, 5 Oct 2010 14:17:09 +0000 (23:17 +0900)
aplfw/application/utility/i2ccmd/i2ccmd.h [new file with mode: 0644]
aplfw/application/utility/i2ccmd/i2ccmd_main.c [new file with mode: 0644]
aplfw/build/common/gmake/aplfwdep.inc
aplfw/build/common/gmake/aplfwsrc.inc
aplfw/build/common/nmake/aplfwdep.inc
aplfw/build/common/nmake/aplfwsrc.inc
aplfw/build/common/tmp_mkinc/mk_inc.pl
aplfw/build/win/win32/vc2010/hosaplfw.vcxproj
aplfw/build/win/win32/vc2010/hosaplfw.vcxproj.filters
aplfw/driver/i2c/i2c/i2cdrv_byteread.c

diff --git a/aplfw/application/utility/i2ccmd/i2ccmd.h b/aplfw/application/utility/i2ccmd/i2ccmd.h
new file mode 100644 (file)
index 0000000..e82043b
--- /dev/null
@@ -0,0 +1,30 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  i2ccmd.h
+ * @brief %jp{I2Cコマンド}
+ *
+ * Copyright (C) 2010 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#ifndef __HOS__i2ccmd_h__
+#define __HOS__i2ccmd_h__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int I2cCmd_Main(int argc, char *argv[]);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __HOS__i2ccmd_h__ */
+
+
+/* end of file */
diff --git a/aplfw/application/utility/i2ccmd/i2ccmd_main.c b/aplfw/application/utility/i2ccmd/i2ccmd_main.c
new file mode 100644 (file)
index 0000000..dbc7cef
--- /dev/null
@@ -0,0 +1,104 @@
+/** 
+ *  Hyper Operating System  Application Framework
+ *
+ * @file  i2ccmd_main.c
+ * @brief %jp{I2Cコマンド}
+ *
+ * Copyright (C) 2010 by Project HOS
+ * http://sourceforge.jp/projects/hos/
+ */
+
+
+#include <stdlib.h>
+#include <string.h>
+#include "hosaplfw.h"
+#include "i2ccmd.h"
+#include "driver/i2c/i2c/i2cdrv.h"
+
+
+int I2cCmd_Main(int argc, char *argv[])
+{
+       unsigned char   ubDev;
+       unsigned char   ubAddr;
+       unsigned char   ubData;
+       const char              *pszRw   = NULL;
+       const char              *pszDev  = NULL;
+       const char              *pszAddr = NULL;
+       const char              *pszData = NULL;
+       const char              *pszDevName = "/dev/i2c0";
+       HANDLE                  hDev;
+       int                             i;
+
+       if ( argc < 4 )
+       {
+               StdIo_PrintFormat(
+                       "usage : %s [option] <r|w> <dev> <addr> [data]\n"
+                       "  option:\n"
+                       "      -dev devicename\n"
+                       , argv[0]);
+       }
+       
+       for ( i = 1; i < argc; i++ )
+       {
+               if ( argv[i][0] == '-' )
+               {
+                       if ( strcmp(&argv[i][1], "dev") == 0 && i+1 < argc )
+                       {
+                               pszDevName = argv[++i];
+                       }
+               }
+               else
+               {
+                       if ( pszRw == NULL )
+                       {
+                               pszRw = argv[i];
+                       }
+                       else if ( pszDev == NULL )
+                       {
+                               pszDev = argv[i];
+                       }
+                       else if ( pszAddr == NULL )
+                       {
+                               pszAddr = argv[i];
+                       }
+                       else if ( pszData == NULL )
+                       {
+                               pszData = argv[i];
+                       }
+               }
+       }
+
+       if ( pszAddr == NULL )
+       {
+               return 1;
+       }
+       ubDev  = (unsigned char)strtoul(pszDev, 0, 0);
+       ubAddr = (unsigned char)strtoul(pszAddr, 0, 0);
+
+
+       if ( (hDev = File_Open(pszDevName, FILE_OPEN_EXIST)) == HANDLE_NULL )
+       {
+               StdIo_PrintFormat("open error : %s\n", pszDevName);
+               return 1;
+       }
+
+       if ( strcmp(pszRw, "r") == 0 )
+       {
+               // read
+               ubData = I2cDrv_ByteRead(hDev, ubDev, ubAddr);
+               StdIo_PrintFormat("[I2C read] dev:%02x adr:%02x => %02x\n", ubDev, ubAddr, ubData);
+       }
+       else if ( strcmp(pszRw, "w") == 0 && pszData != NULL )
+       {
+               ubData = (unsigned char)strtoul(pszData, 0, 0);
+               I2cDrv_ByteWrite(hDev, ubDev, ubAddr, ubData);
+               StdIo_PrintFormat("[I2C write] dev:%02x adr:%02x <= %02x\n", ubDev, ubAddr, ubData);
+       }
+
+       File_Close(hDev);
+
+       return 0;
+}
+
+
+/* end of file */
index 5c60c53..dad5740 100755 (executable)
@@ -584,6 +584,7 @@ $(OBJS_DIR)/memload_main.$(EXT_OBJ):        $(MEMLOAD_DIR)/memload_main.c   $(COMMON_HEAD
 $(OBJS_DIR)/memtest_main.$(EXT_OBJ):   $(MEMTEST_DIR)/memtest_main.c   $(COMMON_HEADERS)
 $(OBJS_DIR)/keytest_main.$(EXT_OBJ):   $(KEYTEST_DIR)/keytest_main.c   $(COMMON_HEADERS)
 $(OBJS_DIR)/timecmd_main.$(EXT_OBJ):   $(TIMECMD_DIR)/timecmd_main.c   $(COMMON_HEADERS)
+$(OBJS_DIR)/i2ccmd_main.$(EXT_OBJ):    $(I2CCMD_DIR)/i2ccmd_main.c     $(COMMON_HEADERS)
 $(OBJS_DIR)/filelist_main.$(EXT_OBJ):  $(FILELIST_DIR)/filelist_main.c $(COMMON_HEADERS)
 $(OBJS_DIR)/filecat_main.$(EXT_OBJ):   $(FILECAT_DIR)/filecat_main.c   $(COMMON_HEADERS)
 $(OBJS_DIR)/filecopy_main.$(EXT_OBJ):  $(FILECOPY_DIR)/filecopy_main.c $(COMMON_HEADERS)
index 8a3b61d..df12605 100755 (executable)
@@ -74,6 +74,7 @@ LINK_MEMLOAD          ?= Yes
 LINK_MEMTEST          ?= Yes
 LINK_KEYTEST          ?= Yes
 LINK_TIMECMD          ?= Yes
+LINK_I2CCMD           ?= Yes
 LINK_FILELIST         ?= Yes
 LINK_FILECAT          ?= Yes
 LINK_FILECOPY         ?= Yes
@@ -1074,6 +1075,14 @@ CSRCS += $(TIMECMD_DIR)/timecmd_main.c
 endif
 
 
+# I2C Command
+ifeq ($(LINK_I2CCMD),Yes)
+I2CCMD_DIR = $(HOSAPLFW_DIR)/application/utility/i2ccmd
+SRC_DIRS += $(I2CCMD_DIR)
+CSRCS += $(I2CCMD_DIR)/i2ccmd_main.c
+endif
+
+
 # File List
 ifeq ($(LINK_FILELIST),Yes)
 FILELIST_DIR = $(HOSAPLFW_DIR)/application/filecmd/filelist
index 9f0769d..70a3fb9 100755 (executable)
@@ -2163,6 +2163,13 @@ $(OBJS_DIR)\timecmd_main.c : $(TIMECMD_DIR)\timecmd_main.c
        $(CMD_CP) $(TIMECMD_DIR)\timecmd_main.c $(OBJS_DIR)\
 
 
+$(OBJS_DIR)\i2ccmd.h : $(I2CCMD_DIR)\i2ccmd.h
+       $(CMD_CP) $(I2CCMD_DIR)\i2ccmd.h $(OBJS_DIR)\
+
+$(OBJS_DIR)\i2ccmd_main.c : $(I2CCMD_DIR)\i2ccmd_main.c
+       $(CMD_CP) $(I2CCMD_DIR)\i2ccmd_main.c $(OBJS_DIR)\
+
+
 $(OBJS_DIR)\filelist.h : $(FILELIST_DIR)\filelist.h
        $(CMD_CP) $(FILELIST_DIR)\filelist.h $(OBJS_DIR)\
 
@@ -2856,6 +2863,8 @@ $(OBJS_DIR)\keytest_main.$(EXT_OBJ):      $(OBJS_DIR)\keytest_main.c      $(COMMON_HEADERS
 
 $(OBJS_DIR)\timecmd_main.$(EXT_OBJ):   $(OBJS_DIR)\timecmd_main.c      $(COMMON_HEADERS)
 
+$(OBJS_DIR)\i2ccmd_main.$(EXT_OBJ):    $(OBJS_DIR)\i2ccmd_main.c       $(COMMON_HEADERS)
+
 $(OBJS_DIR)\filelist_main.$(EXT_OBJ):  $(OBJS_DIR)\filelist_main.c     $(COMMON_HEADERS)
 
 $(OBJS_DIR)\filecat_main.$(EXT_OBJ):   $(OBJS_DIR)\filecat_main.c      $(COMMON_HEADERS)
index 10be32c..ab51362 100755 (executable)
@@ -184,6 +184,9 @@ LINK_KEYTEST          = Yes
 !ifndef LINK_TIMECMD
 LINK_TIMECMD          = Yes
 !endif
+!ifndef LINK_I2CCMD
+LINK_I2CCMD           = Yes
+!endif
 !ifndef LINK_FILELIST
 LINK_FILELIST         = Yes
 !endif
@@ -1843,6 +1846,15 @@ OBJS  = $(OBJS)  $(OBJS_DIR)\timecmd_main.$(EXT_OBJ)
 !endif
 
 
+# I2C Command
+!if "$(LINK_I2CCMD)" == "Yes"
+I2CCMD_DIR = $(HOSAPLFW_DIR)\application\utility\i2ccmd
+HEADERS = $(HEADERS) $(OBJS_DIR)\i2ccmd.h
+CSRCS = $(CSRCS) $(I2CCMD_DIR)\i2ccmd_main.c
+OBJS  = $(OBJS)  $(OBJS_DIR)\i2ccmd_main.$(EXT_OBJ)
+!endif
+
+
 # File List
 !if "$(LINK_FILELIST)" == "Yes"
 FILELIST_DIR = $(HOSAPLFW_DIR)\application\filecmd\filelist
index 8190044..80eb333 100755 (executable)
                        ],
                ],
                [
+                       "I2C Command",
+                       "\$(COMMON_HEADERS)",
+                       "\$(HOSAPLFW_DIR)/application/utility/i2ccmd",
+                       "I2CCMD",
+                       "Yes",
+                       [
+                               "i2ccmd.h",
+                       ],
+                       [
+                               "i2ccmd_main.c",
+                       ],
+               ],
+               [
                        "File List",
                        "\$(COMMON_HEADERS)",
                        "\$(HOSAPLFW_DIR)/application/filecmd/filelist",
index 59bc874..bcae923 100755 (executable)
@@ -69,6 +69,7 @@
     </ClCompile>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\application\utility\i2ccmd\i2ccmd.h" />\r
     <ClInclude Include="..\..\..\..\driver\i2c\i2c\i2cdrv.h" />\r
     <ClInclude Include="..\..\..\..\driver\i2c\i2c\i2cdrv_local.h" />\r
     <ClInclude Include="..\..\..\..\driver\i2c\jelly\jellyi2cdrv.h" />\r
     <ClInclude Include="..\..\..\..\hosaplfw.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\application\utility\i2ccmd\i2ccmd_main.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
     <ClCompile Include="..\..\..\..\driver\i2c\jelly\jellyi2cdrv_close.c" />\r
index 1ba86a2..412d8d6 100644 (file)
     <Filter Include="driver\i2c\jelly">
       <UniqueIdentifier>{741e5caa-1346-47ec-a9e0-0fb9174070b9}</UniqueIdentifier>
     </Filter>
+    <Filter Include="application\utility\i2ccmd">
+      <UniqueIdentifier>{a944f2ed-8cd6-4c90-ba08-1ddd12037937}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\..\..\driver\volume\fat\fatfile.h">
     <ClInclude Include="..\..\..\..\driver\i2c\jelly\jellyi2cdrv_local.h">
       <Filter>driver\i2c\jelly</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\..\..\application\utility\i2ccmd\i2ccmd.h">
+      <Filter>application\utility\i2ccmd</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\..\..\driver\volume\fat\fatfile_constructor.c">
     <ClCompile Include="..\..\..\..\driver\i2c\i2c\i2cdrv_bytewrite.c">
       <Filter>driver\i2c\i2c</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\..\..\driver\i2c\i2c\i2cdrv_byteread.c">
+      <Filter>driver\i2c\i2c</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\..\application\utility\i2ccmd\i2ccmd_main.c">
+      <Filter>application\utility\i2ccmd</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>
\ No newline at end of file
index e839c21..e49392b 100644 (file)
@@ -18,7 +18,7 @@ int I2cDrv_ByteRead(HANDLE hFile, unsigned char ubDev, unsigned char ubAddr)
        unsigned char   ubWriteBuf[2];
        unsigned char   ubReadBuf[1];
 
-       ubWriteBuf[0] = (unsigned char)((ubDev << 1) & 0x00);
+       ubWriteBuf[0] = (unsigned char)((ubDev << 1) & 0x01);
        ubWriteBuf[1] = ubAddr;
        
        Access.pubWriteBuf  = ubWriteBuf;