--- /dev/null
+/**
+ * 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 */
--- /dev/null
+/**
+ * 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 */
$(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)
LINK_MEMTEST ?= Yes
LINK_KEYTEST ?= Yes
LINK_TIMECMD ?= Yes
+LINK_I2CCMD ?= Yes
LINK_FILELIST ?= Yes
LINK_FILECAT ?= Yes
LINK_FILECOPY ?= Yes
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
$(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)\
$(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)
!ifndef LINK_TIMECMD
LINK_TIMECMD = Yes
!endif
+!ifndef LINK_I2CCMD
+LINK_I2CCMD = Yes
+!endif
!ifndef LINK_FILELIST
LINK_FILELIST = Yes
!endif
!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
],
],
[
+ "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",
</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
<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
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;