Changeset 364 for asp3_tinet_ecnl_arm/trunk
- Timestamp:
- Feb 1, 2019, 9:57:09 PM (5 years ago)
- Location:
- asp3_tinet_ecnl_arm/trunk
- Files:
-
- 10 added
- 122 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_tinet_ecnl_arm/trunk/app1_usb_watt_meter/.cproject
r352 r364 22 22 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 23 23 <option id="toolchain.id" value="gcc-arm-embedded"/> 24 <option id="toolchain.version" value=" 5.4.1.20160919"/>24 <option id="toolchain.version" value="6.3.1.20170620"/> 25 25 </storageModule> 26 26 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 59 59 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.2041552637" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 60 60 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1106389026" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 61 <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1499740602" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>61 <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1499740602" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 62 62 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.473685659" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 63 63 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.600330630" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> … … 127 127 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 128 128 <option id="toolchain.id" value="gcc-arm-embedded"/> 129 <option id="toolchain.version" value=" 5.4.1.20160919"/>129 <option id="toolchain.version" value="6.3.1.20170620"/> 130 130 </storageModule> 131 131 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 164 164 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.504056262" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 165 165 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.211973441" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 166 <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.559752886" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>166 <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.559752886" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 167 167 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.541834310" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 168 168 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1603061550" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> … … 232 232 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 233 233 <option id="toolchain.id" value="gcc-arm-embedded"/> 234 <option id="toolchain.version" value=" 5.4.1.20160919"/>234 <option id="toolchain.version" value="6.3.1.20170620"/> 235 235 </storageModule> 236 236 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 269 269 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.1222794445" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 270 270 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1527919964" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 271 <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/DebugEnbt" id="com.renesas.cdt.managedbuild.gcc.rz.builder.896433184" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>271 <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/DebugEnbt" id="com.renesas.cdt.managedbuild.gcc.rz.builder.896433184" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 272 272 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.893283254" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 273 273 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1741240748" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> … … 341 341 </configuration> 342 342 </storageModule> 343 <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> 343 344 </cproject> -
asp3_tinet_ecnl_arm/trunk/app1_usb_watt_meter/Debug/Makefile
r352 r364 182 182 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 183 183 endif 184 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DHAVE_CONFIG_H -DWOLFSSL_USER_SETTINGS -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start184 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DHAVE_CONFIG_H -DWOLFSSL_USER_SETTINGS -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 185 185 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 186 186 -I$(SRCDIR)/../btstack/include \ … … 196 196 -I$(SRCDIR)/../curl-7.57.0 \ 197 197 $(INCLUDES) 198 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.198 LDFLAGS := $(LDFLAGS) -L. 199 199 LIBS := $(LIBS) $(CXXLIBS) 200 200 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 207 207 APPL_COBJS := $(APPL_COBJS) netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o 208 208 APPLDIRS := $(APPLDIRS) ../../ntshell/lcd 209 APPL_COBJS := $(APPL_COBJS) draw_font.o misaki_font.o 209 APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o 210 APPL_CFLAGS := $(APPL_CFLAGS) -DSHNM12_FONT 210 211 211 212 # … … 220 221 APPL_ASMOBJS := 221 222 ifdef USE_CXX 222 APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o 223 APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o jsonsl.o 223 224 APPL_COBJS := $(APPL_COBJS) 224 225 else 225 APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o 226 APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o jsonsl.o 226 227 endif 227 228 APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o … … 232 233 endif 233 234 234 235 # 236 # ネットワークサービスの定義 237 # 238 NO_USE_TINET_LIBRARY = true 239 240 # ネットワークインタフェースの選択、何れか一つ選択する。 241 NET_IF = ether 242 243 # イーサネット・ディバイスドライバの選択 244 NET_DEV = if_btusb 245 246 # ネットワーク層の選択 247 #SUPPORT_INET6 = true 248 SUPPORT_INET4 = true 249 250 # API に組込む機能の選択 251 #API_CFG_IP4MAPPED_ADDR = true 252 253 # トランスポート層の選択 254 SUPPORT_TCP = true 255 SUPPORT_UDP = true 256 257 # IGMPを有効に設定 258 SUPPORT_IGMP = true 259 260 # 261 # ネットワークサービスの Makefile のインクルード 262 # 263 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 235 ifdef TINETDIR 236 # 237 # ネットワークサービスの定義 238 # 239 NO_USE_TINET_LIBRARY = true 240 241 # ネットワークインタフェースの選択、何れか一つ選択する。 242 NET_IF = ether 243 244 # イーサネット・ディバイスドライバの選択 245 NET_DEV = if_btusb 246 247 # ネットワーク層の選択 248 #SUPPORT_INET6 = true 249 SUPPORT_INET4 = true 250 251 # API に組込む機能の選択 252 #API_CFG_IP4MAPPED_ADDR = true 253 254 # トランスポート層の選択 255 SUPPORT_TCP = true 256 SUPPORT_UDP = true 257 258 # IGMPを有効に設定 259 SUPPORT_IGMP = true 260 261 # 262 # ネットワークサービスの Makefile のインクルード 263 # 264 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 265 endif 264 266 265 267 # … … 294 296 # コンフィギュレータに関する定義 295 297 # 296 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 297 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 298 ifndef TINETDIR 299 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 300 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 301 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 302 else 303 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 304 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 298 305 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 299 306 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 301 308 --symval-table ../../ntshell/echonet/echonet_sym.def \ 302 309 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 310 endif 303 311 CFG_ASMOBJS := $(CFG_ASMOBJS) 304 312 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 446 454 447 455 # 456 # 並列makeのための依存関係の定義 457 # 458 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 459 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 460 | offset.timestamp 461 462 # 448 463 # 特別な依存関係の定義 449 464 # … … 454 469 # 455 470 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 456 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \471 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 457 472 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 458 473 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app1_usb_watt_meter/DebugEnbt/Makefile
r352 r364 182 182 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 183 183 endif 184 CDEFS := $(CDEFS) -DIF_ETHER_MULTI_NIC -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DHAVE_CONFIG_H -DWOLFSSL_USER_SETTINGS -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start184 CDEFS := $(CDEFS) -DIF_ETHER_MULTI_NIC -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DHAVE_CONFIG_H -DWOLFSSL_USER_SETTINGS -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 185 185 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 186 186 -I$(SRCDIR)/../btstack/include \ … … 196 196 -I$(SRCDIR)/../curl-7.57.0 \ 197 197 $(INCLUDES) 198 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.198 LDFLAGS := $(LDFLAGS) -L. 199 199 LIBS := $(LIBS) $(CXXLIBS) 200 200 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 207 207 APPL_COBJS := $(APPL_COBJS) netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o 208 208 APPLDIRS := $(APPLDIRS) ../../ntshell/lcd 209 APPL_COBJS := $(APPL_COBJS) draw_font.o misaki_font.o 209 APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o 210 APPL_CFLAGS := $(APPL_CFLAGS) -DSHNM12_FONT 210 211 211 212 # … … 220 221 APPL_ASMOBJS := 221 222 ifdef USE_CXX 222 APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o 223 APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o jsonsl.o 223 224 APPL_COBJS := $(APPL_COBJS) 224 225 else 225 APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o 226 APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o jsonsl.o 226 227 endif 227 228 APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o … … 232 233 endif 233 234 234 235 # 236 # ネットワークサービスの定義 237 # 238 NO_USE_TINET_LIBRARY = true 239 240 # ネットワークインタフェースの選択、何れか一つ選択する。 241 NET_IF = ether 242 243 # イーサネット・ディバイスドライバの選択 244 NET_DEV = if_enbt 245 246 # ネットワーク層の選択 247 #SUPPORT_INET6 = true 248 SUPPORT_INET4 = true 249 250 # API に組込む機能の選択 251 #API_CFG_IP4MAPPED_ADDR = true 252 253 # トランスポート層の選択 254 SUPPORT_TCP = true 255 SUPPORT_UDP = true 256 257 # IGMPを有効に設定 258 SUPPORT_IGMP = true 259 260 # 261 # ネットワークサービスの Makefile のインクルード 262 # 263 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 235 ifdef TINETDIR 236 # 237 # ネットワークサービスの定義 238 # 239 NO_USE_TINET_LIBRARY = true 240 241 # ネットワークインタフェースの選択、何れか一つ選択する。 242 NET_IF = ether 243 244 # イーサネット・ディバイスドライバの選択 245 NET_DEV = if_enbt 246 247 # ネットワーク層の選択 248 #SUPPORT_INET6 = true 249 SUPPORT_INET4 = true 250 251 # API に組込む機能の選択 252 #API_CFG_IP4MAPPED_ADDR = true 253 254 # トランスポート層の選択 255 SUPPORT_TCP = true 256 SUPPORT_UDP = true 257 258 # IGMPを有効に設定 259 SUPPORT_IGMP = true 260 261 # 262 # ネットワークサービスの Makefile のインクルード 263 # 264 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 265 endif 264 266 265 267 # … … 294 296 # コンフィギュレータに関する定義 295 297 # 296 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 297 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 298 ifndef TINETDIR 299 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 300 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 301 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 302 else 303 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 304 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 298 305 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 299 306 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 301 308 --symval-table ../../ntshell/echonet/echonet_sym.def \ 302 309 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 310 endif 303 311 CFG_ASMOBJS := $(CFG_ASMOBJS) 304 312 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 446 454 447 455 # 456 # 並列makeのための依存関係の定義 457 # 458 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 459 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 460 | offset.timestamp 461 462 # 448 463 # 特別な依存関係の定義 449 464 # … … 454 469 # 455 470 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 456 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \471 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 457 472 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 458 473 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app1_usb_watt_meter/DebugEther/Makefile
r352 r364 182 182 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 183 183 endif 184 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DHAVE_CONFIG_H -DWOLFSSL_USER_SETTINGS -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start184 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DHAVE_CONFIG_H -DWOLFSSL_USER_SETTINGS -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 185 185 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 186 186 -I$(SRCDIR)/../btstack/include \ … … 196 196 -I$(SRCDIR)/../curl-7.57.0 \ 197 197 $(INCLUDES) 198 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.198 LDFLAGS := $(LDFLAGS) -L. 199 199 LIBS := $(LIBS) $(CXXLIBS) 200 200 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 207 207 APPL_COBJS := $(APPL_COBJS) netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o 208 208 APPLDIRS := $(APPLDIRS) ../../ntshell/lcd 209 APPL_COBJS := $(APPL_COBJS) draw_font.o misaki_font.o 209 APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o 210 APPL_CFLAGS := $(APPL_CFLAGS) -DSHNM12_FONT 210 211 211 212 # … … 220 221 APPL_ASMOBJS := 221 222 ifdef USE_CXX 222 APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o 223 APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o jsonsl.o 223 224 APPL_COBJS := $(APPL_COBJS) 224 225 else 225 APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o 226 APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o jsonsl.o 226 227 endif 227 228 APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o … … 232 233 endif 233 234 234 235 #236 # ネットワークサービスの定義237 #238 NO_USE_TINET_LIBRARY = true239 240 # ネットワークインタフェースの選択、何れか一つ選択する。241 NET_IF = ether242 243 # イーサネット・ディバイスドライバの選択235 ifdef TINETDIR 236 # 237 # ネットワークサービスの定義 238 # 239 NO_USE_TINET_LIBRARY = true 240 241 # ネットワークインタフェースの選択、何れか一つ選択する。 242 NET_IF = ether 243 244 # イーサネット・ディバイスドライバの選択 244 245 NET_DEV = if_mbed 245 246 246 # ネットワーク層の選択 247 #SUPPORT_INET6 = true 248 SUPPORT_INET4 = true 249 250 # API に組込む機能の選択 251 #API_CFG_IP4MAPPED_ADDR = true 252 253 # トランスポート層の選択 254 SUPPORT_TCP = true 255 SUPPORT_UDP = true 256 257 # IGMPを有効に設定 258 SUPPORT_IGMP = true 259 260 # 261 # ネットワークサービスの Makefile のインクルード 262 # 263 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 247 # ネットワーク層の選択 248 #SUPPORT_INET6 = true 249 SUPPORT_INET4 = true 250 251 # API に組込む機能の選択 252 #API_CFG_IP4MAPPED_ADDR = true 253 254 # トランスポート層の選択 255 SUPPORT_TCP = true 256 SUPPORT_UDP = true 257 258 # IGMPを有効に設定 259 SUPPORT_IGMP = true 260 261 # 262 # ネットワークサービスの Makefile のインクルード 263 # 264 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 265 endif 264 266 265 267 # … … 294 296 # コンフィギュレータに関する定義 295 297 # 296 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 297 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 298 ifndef TINETDIR 299 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 300 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 301 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 302 else 303 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 304 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 298 305 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 299 306 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 301 308 --symval-table ../../ntshell/echonet/echonet_sym.def \ 302 309 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 310 endif 303 311 CFG_ASMOBJS := $(CFG_ASMOBJS) 304 312 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 446 454 447 455 # 456 # 並列makeのための依存関係の定義 457 # 458 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 459 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 460 | offset.timestamp 461 462 # 448 463 # 特別な依存関係の定義 449 464 # … … 454 469 # 455 470 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 456 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \471 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 457 472 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 458 473 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app1_usb_watt_meter/src/client.c
r352 r364 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2016 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ … … 48 48 #include "ff.h" 49 49 #include "util/ntstdio.h" 50 #include "client.h" 51 #include "jsonsl.h" 50 52 51 53 #define SKIP_PEER_VERIFICATION 52 54 //#define SKIP_HOSTNAME_VERIFICATION 55 56 const char SCOPE_DRIVE_FILE[] = "https://www.googleapis.com/auth/drive.file"; 57 const char GRANT_TYPE_DEVICE[] = "http://oauth.net/grant_type/device/1.0"; 58 53 59 char response[80]; 54 extern ntstdio_t ntstdio; 60 char errbuf[CURL_ERROR_SIZE]; 61 62 google_drive_t google_drive; 63 64 void curl_setopt_common(CURL *curl); 65 int google_drive_error_callback(jsonsl_t jsn, jsonsl_error_t err, 66 struct jsonsl_state_st *state, char *errat); 67 void google_drive_state_callback(jsonsl_t jsn, jsonsl_action_t action, 68 struct jsonsl_state_st *state, const char *buf); 55 69 56 70 void client_init(void) 57 71 { 72 google_drive_t *gd = &google_drive; 73 jsonsl_t jsn; 74 75 memset(gd, 0, sizeof(google_drive_t)); 76 memcpy(gd->fname, "1:/log/20160101000000.log", sizeof(gd->fname)); 77 78 jsn = gd->jsn = jsonsl_new(3); 79 jsn->data = gd; 80 jsn->error_callback = google_drive_error_callback; 81 jsn->action_callback = google_drive_state_callback; 82 jsonsl_enable_all_callbacks(jsn); 83 58 84 //uITRON4_minit(ITRON_POOL_SIZE); 59 85 … … 61 87 } 62 88 63 size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) 64 { 65 int rest = size * nmemb; 89 size_t write_callback(void *buffer, size_t size, size_t nmemb, void *arg) 90 { 91 google_drive_t *gd = (google_drive_t *)arg; 92 jsonsl_t jsn = gd->jsn; 93 size_t len = size * nmemb, pos; 94 jsonsl_char_t data; 95 96 for (pos = 0; pos < len; pos++) { 97 data = *((jsonsl_char_t *)&((uint8_t *)buffer)[pos]); 98 99 if ((gd->jsn_buf_pos >= 0) && (gd->jsn_buf_pos < sizeof(gd->jsn_buf))) 100 gd->jsn_buf[gd->jsn_buf_pos++] = data; 101 jsonsl_feed(jsn, &data, 1); 102 } 103 104 return len; 105 } 106 107 void get_device_id_state_start(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf) 108 { 109 switch (gd->state) { 110 case psRoot: 111 if (state->level != 2) { 112 break; 113 } 114 else if (strcmp(buf, "device_code") == 0) { 115 gd->state = psDeviceCode; 116 } 117 else if (strcmp(buf, "user_code") == 0) { 118 gd->state = psUserCode; 119 } 120 else if (strcmp(buf, "expires_in") == 0) { 121 gd->state = psExpiresIn; 122 } 123 else if (strcmp(buf, "interval") == 0) { 124 gd->state = psInterval; 125 } 126 else if (strcmp(buf, "verification_url") == 0) { 127 gd->state = psVerificationUrl; 128 } 129 else if (strcmp(buf, "error") == 0) { 130 gd->state = psError; 131 } 132 else if (strcmp(buf, "error_description") == 0) { 133 gd->state = psErrorDescription; 134 } 135 break; 136 case psDeviceCode: 137 if (state->type == JSONSL_T_STRING) { 138 strlcpy(gd->credential.device_code, buf, sizeof(gd->credential.device_code)); 139 gd->state = psRoot; 140 } 141 break; 142 case psUserCode: 143 if (state->type == JSONSL_T_STRING) { 144 strlcpy(gd->credential.user_code, buf, sizeof(gd->credential.user_code)); 145 gd->state = psRoot; 146 } 147 break; 148 case psExpiresIn: 149 if (state->type == JSONSL_T_SPECIAL) { 150 gd->credential.expires_in = atoi(buf); 151 gd->state = psRoot; 152 } 153 break; 154 case psInterval: 155 if (state->type == JSONSL_T_SPECIAL) { 156 gd->credential.interval = atoi(buf); 157 gd->state = psRoot; 158 } 159 break; 160 case psVerificationUrl: 161 if (state->type == JSONSL_T_STRING) { 162 strlcpy(gd->credential.verification_url, buf, sizeof(gd->credential.verification_url)); 163 gd->state = psRoot; 164 } 165 break; 166 case psError: 167 if (state->type == JSONSL_T_STRING) { 168 strlcpy(gd->error.error, buf, sizeof(gd->error.error)); 169 gd->state = psRoot; 170 } 171 break; 172 case psErrorDescription: 173 if (state->type == JSONSL_T_STRING) { 174 strlcpy(gd->error.error_description, buf, sizeof(gd->error.error_description)); 175 gd->state = psRoot; 176 } 177 break; 178 } 179 } 180 181 void get_device_id_state_end(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf) 182 { 183 } 184 185 int get_device_id(google_drive_t *gd, const char *scope) 186 { 187 client_info_t *client_info = &gd->client_info; 188 credential_t *credential = &gd->credential; 189 CURLcode ret; 190 CURL *curl; 191 struct curl_slist *slist1; 192 size_t len; 193 char *postdata; 194 jsonsl_t jsn = gd->jsn; 195 196 gd->jsn_buf_pos = -1; 197 198 jsonsl_reset(jsn); 199 gd->start = get_device_id_state_start; 200 gd->end = get_device_id_state_end; 201 202 slist1 = NULL; 203 slist1 = curl_slist_append(slist1, "Content-Type: application/x-www-form-urlencoded"); 204 205 curl = curl_easy_init(); 206 207 char *client_id = curl_easy_escape(curl, client_info->client_id, strnlen(client_info->client_id, sizeof(client_info->client_id))); 208 char *esc_scope = curl_easy_escape(curl, scope, strlen(scope)); 209 210 len = sizeof("client_id=") + strlen(client_id) + sizeof("scope=") + strlen(esc_scope); 211 postdata = malloc(len); 212 snprintf(postdata, len, "client_id=%s&scope=%s", client_id, esc_scope); 213 214 curl_free(client_id); 215 curl_free(esc_scope); 216 217 curl_easy_setopt(curl, CURLOPT_URL, "https://accounts.google.com/o/oauth2/device/code"); 218 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); 219 curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)strnlen(postdata, len)); 220 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist1); 221 curl_setopt_common(curl); 222 223 curl_easy_setopt(curl, CURLOPT_WRITEDATA, gd); 224 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); 225 226 ret = curl_easy_perform(curl); 227 228 free(postdata); 229 230 curl_easy_cleanup(curl); 231 curl = NULL; 232 curl_slist_free_all(slist1); 233 slist1 = NULL; 234 235 return (int)ret; 236 } 237 238 void get_access_token_state_start(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf) 239 { 240 switch (gd->state) { 241 case psRoot: 242 if (state->level != 2) { 243 break; 244 } 245 else if (strcmp(buf, "access_token") == 0) { 246 gd->state = psAccessToken; 247 } 248 else if (strcmp(buf, "expires_in") == 0) { 249 gd->state = psExpiresIn; 250 } 251 else if (strcmp(buf, "refresh_token") == 0) { 252 gd->state = psRefreshToken; 253 } 254 else if (strcmp(buf, "scope") == 0) { 255 gd->state = psScope; 256 } 257 else if (strcmp(buf, "token_type") == 0) { 258 gd->state = psTokenType; 259 } 260 else if (strcmp(buf, "error") == 0) { 261 gd->state = psError; 262 } 263 else if (strcmp(buf, "error_description") == 0) { 264 gd->state = psErrorDescription; 265 } 266 break; 267 case psAccessToken: 268 if (state->type == JSONSL_T_STRING) { 269 strlcpy(gd->credential.access_token, buf, sizeof(gd->credential.access_token)); 270 gd->state = psRoot; 271 } 272 break; 273 case psExpiresIn: 274 if (state->type == JSONSL_T_SPECIAL) { 275 gd->credential.expires_in = atoi(buf); 276 gd->state = psRoot; 277 } 278 break; 279 case psRefreshToken: 280 if (state->type == JSONSL_T_STRING) { 281 strlcpy(gd->credential.refresh_token, buf, sizeof(gd->credential.refresh_token)); 282 gd->state = psRoot; 283 } 284 break; 285 case psScope: 286 if (state->type == JSONSL_T_STRING) { 287 strlcpy(gd->credential.scope, buf, sizeof(gd->credential.scope)); 288 gd->state = psRoot; 289 } 290 break; 291 case psTokenType: 292 if (state->type == JSONSL_T_STRING) { 293 strlcpy(gd->credential.token_type, buf, sizeof(gd->credential.token_type)); 294 gd->state = psRoot; 295 } 296 break; 297 case psError: 298 if (state->type == JSONSL_T_STRING) { 299 strlcpy(gd->error.error, buf, sizeof(gd->error.error)); 300 gd->state = psRoot; 301 } 302 break; 303 case psErrorDescription: 304 if (state->type == JSONSL_T_STRING) { 305 strlcpy(gd->error.error_description, buf, sizeof(gd->error.error_description)); 306 gd->state = psRoot; 307 } 308 break; 309 } 310 } 311 312 void get_access_token_state_end(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf) 313 { 314 } 315 316 int get_access_token(google_drive_t *gd) 317 { 318 client_info_t *client_info = &gd->client_info; 319 credential_t *credential = &gd->credential; 320 CURLcode ret; 321 CURL *curl; 322 struct curl_slist *slist1; 323 size_t len; 324 char *postdata; 325 jsonsl_t jsn = gd->jsn; 326 327 gd->jsn_buf_pos = -1; 328 329 jsonsl_reset(jsn); 330 gd->start = get_access_token_state_start; 331 gd->end = get_access_token_state_end; 332 333 slist1 = NULL; 334 slist1 = curl_slist_append(slist1, "Content-Type: application/x-www-form-urlencoded"); 335 336 curl = curl_easy_init(); 337 338 char *client_id = curl_easy_escape(curl, client_info->client_id, strnlen(client_info->client_id, sizeof(client_info->client_id))); 339 char *client_secret = curl_easy_escape(curl, client_info->client_secret, strnlen(client_info->client_secret, sizeof(client_info->client_secret))); 340 char *grant_type = curl_easy_escape(curl, GRANT_TYPE_DEVICE, strnlen(GRANT_TYPE_DEVICE, sizeof(GRANT_TYPE_DEVICE))); 341 342 len = sizeof("client_id=") + strlen(client_id) + sizeof("client_secret=") + strlen(client_secret) 343 + sizeof("code=") + strlen(credential->device_code) + sizeof("grant_type=") + strlen(grant_type); 344 postdata = malloc(len); 345 snprintf(postdata, len, "client_id=%s&client_secret=%s&code=%s&grant_type=%s", 346 client_id, client_secret, credential->device_code, grant_type); 347 348 curl_free(client_id); 349 curl_free(client_secret); 350 curl_free(grant_type); 351 352 curl_easy_setopt(curl, CURLOPT_URL, "https://www.googleapis.com/oauth2/v4/token"); 353 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); 354 curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)strnlen(postdata, len)); 355 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist1); 356 curl_setopt_common(curl); 357 358 curl_easy_setopt(curl, CURLOPT_WRITEDATA, gd); 359 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); 360 361 ret = curl_easy_perform(curl); 362 363 free(postdata); 364 365 curl_easy_cleanup(curl); 366 curl = NULL; 367 curl_slist_free_all(slist1); 368 slist1 = NULL; 369 370 return (int)ret; 371 } 372 373 void update_access_token_state_start(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf) 374 { 375 switch (gd->state) { 376 case psRoot: 377 if (state->level != 2) { 378 break; 379 } 380 else if (strcmp(buf, "access_token") == 0) { 381 gd->state = psAccessToken; 382 } 383 else if (strcmp(buf, "expires_in") == 0) { 384 gd->state = psExpiresIn; 385 } 386 else if (strcmp(buf, "scope") == 0) { 387 gd->state = psScope; 388 } 389 else if (strcmp(buf, "token_type") == 0) { 390 gd->state = psTokenType; 391 } 392 else if (strcmp(buf, "error") == 0) { 393 gd->state = psError; 394 } 395 else if (strcmp(buf, "error_description") == 0) { 396 gd->state = psErrorDescription; 397 } 398 break; 399 case psAccessToken: 400 if (state->type == JSONSL_T_STRING) { 401 strlcpy(gd->credential.access_token, buf, sizeof(gd->credential.access_token)); 402 gd->state = psRoot; 403 } 404 break; 405 case psExpiresIn: 406 if (state->type == JSONSL_T_SPECIAL) { 407 gd->credential.expires_in = atoi(buf); 408 gd->state = psRoot; 409 } 410 break; 411 case psScope: 412 if (state->type == JSONSL_T_STRING) { 413 strlcpy(gd->credential.scope, buf, sizeof(gd->credential.scope)); 414 gd->state = psRoot; 415 } 416 break; 417 case psTokenType: 418 if (state->type == JSONSL_T_STRING) { 419 strlcpy(gd->credential.token_type, buf, sizeof(gd->credential.token_type)); 420 gd->state = psRoot; 421 } 422 break; 423 case psError: 424 if (state->type == JSONSL_T_STRING) { 425 strlcpy(gd->error.error, buf, sizeof(gd->error.error)); 426 gd->state = psRoot; 427 } 428 break; 429 case psErrorDescription: 430 if (state->type == JSONSL_T_STRING) { 431 strlcpy(gd->error.error_description, buf, sizeof(gd->error.error_description)); 432 gd->state = psRoot; 433 } 434 break; 435 } 436 } 437 438 void update_access_token_state_end(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf) 439 { 440 } 441 442 int update_access_token(google_drive_t *gd) 443 { 444 client_info_t *client_info = &gd->client_info; 445 credential_t *credential = &gd->credential; 446 CURLcode ret; 447 CURL *curl; 448 struct curl_slist *slist1; 449 size_t len; 450 char *postdata; 451 jsonsl_t jsn = gd->jsn; 452 453 gd->jsn_buf_pos = -1; 454 455 jsonsl_reset(jsn); 456 gd->start = update_access_token_state_start; 457 gd->end = update_access_token_state_end; 458 459 slist1 = NULL; 460 slist1 = curl_slist_append(slist1, "Content-Type: application/x-www-form-urlencoded"); 461 462 curl = curl_easy_init(); 463 464 char *client_id = curl_easy_escape(curl, client_info->client_id, strnlen(client_info->client_id, sizeof(client_info->client_id))); 465 char *client_secret = curl_easy_escape(curl, client_info->client_secret, strnlen(client_info->client_secret, sizeof(client_info->client_secret))); 466 467 len = sizeof("client_id=") + strlen(client_id) + sizeof("client_secret=") + strlen(client_secret) 468 + sizeof("refresh_token=") + strlen(credential->refresh_token); 469 postdata = malloc(len); 470 snprintf(postdata, len, "client_id=%s&client_secret=%s&code=%s&grant_type=refresh_token", 471 client_id, client_secret, credential->refresh_token); 472 473 curl_free(client_id); 474 curl_free(client_secret); 475 476 curl_easy_setopt(curl, CURLOPT_URL, "https://www.googleapis.com/oauth2/v4/token"); 477 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); 478 curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)strnlen(postdata, len)); 479 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist1); 480 curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST"); 481 curl_setopt_common(curl); 482 483 curl_easy_setopt(curl, CURLOPT_WRITEDATA, gd); 484 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); 485 486 ret = curl_easy_perform(curl); 487 488 free(postdata); 489 490 curl_easy_cleanup(curl); 491 curl = NULL; 492 curl_slist_free_all(slist1); 493 slist1 = NULL; 494 495 return (int)ret; 496 } 497 498 void revoke_device_state_start(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf) 499 { 500 } 501 502 void revoke_device_state_end(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf) 503 { 504 } 505 506 int revoke_device(google_drive_t *gd) 507 { 508 client_info_t *client_info = &gd->client_info; 509 credential_t *credential = &gd->credential; 510 CURLcode ret; 511 CURL *curl; 512 size_t len; 513 struct curl_slist *slist1; 514 char *postdata; 515 jsonsl_t jsn = gd->jsn; 516 517 gd->jsn_buf_pos = -1; 518 519 jsonsl_reset(jsn); 520 gd->start = revoke_device_state_start; 521 gd->end = revoke_device_state_end; 522 523 slist1 = NULL; 524 slist1 = curl_slist_append(slist1, "Content-Type: application/x-www-form-urlencoded"); 525 526 curl = curl_easy_init(); 527 528 len = sizeof("token=") + strlen(credential->access_token); 529 postdata = malloc(len); 530 snprintf(postdata, len, "token=%s", credential->access_token); 531 532 curl_easy_setopt(curl, CURLOPT_URL, "https://accounts.google.com/o/oauth2/revoke"); 533 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); 534 curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)strnlen(postdata, len)); 535 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist1); 536 curl_setopt_common(curl); 537 538 curl_easy_setopt(curl, CURLOPT_WRITEDATA, gd); 539 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); 540 541 ret = curl_easy_perform(curl); 542 543 free(postdata); 544 545 curl_easy_cleanup(curl); 546 curl = NULL; 547 curl_slist_free_all(slist1); 548 slist1 = NULL; 549 550 return (int)ret; 551 } 552 553 void upload_file_state_start(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf) 554 { 555 switch (gd->state) { 556 case psRoot: 557 if (state->level != 2) { 558 break; 559 } 560 else if (strcmp(buf, "kind") == 0) { 561 gd->state = psKind; 562 } 563 else if (strcmp(buf, "id") == 0) { 564 gd->state = psId; 565 } 566 else if (strcmp(buf, "name") == 0) { 567 gd->state = psName; 568 } 569 else if (strcmp(buf, "mimeType") == 0) { 570 gd->state = psMimeType; 571 } 572 else if (strcmp(buf, "error") == 0) { 573 gd->state = psError; 574 } 575 else if (strcmp(buf, "error_description") == 0) { 576 gd->state = psErrorDescription; 577 } 578 break; 579 case psKind: 580 if (state->type == JSONSL_T_STRING) { 581 strlcpy(gd->file.kind, buf, sizeof(gd->file.kind)); 582 gd->state = psRoot; 583 } 584 break; 585 case psId: 586 if (state->type == JSONSL_T_STRING) { 587 strlcpy(gd->file.id, buf, sizeof(gd->file.id)); 588 gd->state = psRoot; 589 } 590 break; 591 case psName: 592 if (state->type == JSONSL_T_STRING) { 593 strlcpy(gd->file.name, buf, sizeof(gd->file.name)); 594 gd->state = psRoot; 595 } 596 break; 597 case psMimeType: 598 if (state->type == JSONSL_T_STRING) { 599 strlcpy(gd->file.mimeType, buf, sizeof(gd->file.mimeType)); 600 gd->state = psRoot; 601 } 602 break; 603 case psError: 604 if (state->type == JSONSL_T_STRING) { 605 strlcpy(gd->error.error, buf, sizeof(gd->error.error)); 606 gd->state = psRoot; 607 } 608 break; 609 case psErrorDescription: 610 if (state->type == JSONSL_T_STRING) { 611 strlcpy(gd->error.error_description, buf, sizeof(gd->error.error_description)); 612 gd->state = psRoot; 613 } 614 break; 615 } 616 } 617 618 void upload_file_state_end(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf) 619 { 620 } 621 622 size_t read_callback(char *buffer, size_t size, size_t nitems, void *arg) 623 { 624 FIL *file = (FIL *)arg; 625 UINT ret = 0; 626 FRESULT res; 627 628 res = f_read(file, buffer, size * nitems, &ret); 629 if (res != FR_OK) 630 return 0; 631 632 int rest = ret; 66 633 int len; 67 634 … … 76 643 response[len] = '\0'; 77 644 78 ntstdio_printf(&ntstdio,response);79 80 dly_tsk(100 * 1000);645 printf(response); 646 647 dly_tsk(100); 81 648 82 649 rest -= len; … … 84 651 } 85 652 86 return size * nmemb;87 }88 89 size_t read_data(char *buffer, size_t size, size_t nitems, void *instream)90 {91 FIL *file = (FIL *)instream;92 UINT ret = 0;93 FRESULT res;94 95 res = f_read(file, buffer, size * nitems, &ret);96 if (res != FR_OK)97 return 0;98 99 int rest = ret;100 int len;101 102 while (rest > 0) {103 len = rest;104 if (len > (sizeof(response) - 1)) {105 len = sizeof(response) - 1;106 }107 108 memcpy(response, buffer, len);109 110 response[len] = '\0';111 112 ntstdio_printf(&ntstdio, response);113 114 dly_tsk(100);115 116 rest -= len;117 buffer = (char *)buffer + len;118 }119 120 653 return ret; 121 654 } 122 655 123 char errbuf[CURL_ERROR_SIZE]; 656 int seek_callback(void *arg, curl_off_t offset, int origin) 657 { 658 FIL *file = (FIL *)arg; 659 BYTE mode; 660 FRESULT ret; 661 662 switch (origin) { 663 case SEEK_SET: 664 mode = F_SEEK_SET; 665 break; 666 case SEEK_CUR: 667 mode = F_SEEK_CUR; 668 break; 669 case SEEK_END: 670 mode = F_SEEK_END; 671 break; 672 default: 673 return CURL_SEEKFUNC_FAIL; 674 } 675 676 ret = f_seek(file, offset, mode); 677 if (ret != F_OK) 678 return CURL_SEEKFUNC_FAIL; 679 680 return CURL_SEEKFUNC_OK; 681 } 682 683 int upload_file(google_drive_t *gd, const char *filename, const char *localfilepath) 684 { 685 CURLcode ret; 686 CURL *curl; 687 curl_mime *mime; 688 curl_mimepart *part; 689 struct curl_slist *slist1; 690 size_t len; 691 char *postdata, *authorization; 692 static const char buf[] = "Expect:"; 693 jsonsl_t jsn = gd->jsn; 694 FIL file; 695 FRESULT fret; 696 697 gd->jsn_buf_pos = -1; 698 699 jsonsl_reset(jsn); 700 gd->start = upload_file_state_start; 701 gd->end = upload_file_state_end; 702 703 fret = f_open(&file, localfilepath, FA_READ); 704 if (fret != FR_OK) { 705 printf("log file open error %d\n", fret); 706 return -1; 707 } 708 709 len = sizeof("{\"name\":\"\"}") + strlen(filename); 710 postdata = malloc(len); 711 snprintf(postdata, len, "{\"name\":\"%s\"}", filename); 712 713 curl = curl_easy_init(); 714 715 mime = curl_mime_init(curl); 716 part = curl_mime_addpart(mime); 717 curl_mime_name(part, "metadata"); 718 curl_mime_type(part, "application/json;charset=utf-8"); 719 curl_mime_data(part, postdata, CURL_ZERO_TERMINATED); 720 free(postdata); 721 722 part = curl_mime_addpart(mime); 723 curl_mime_name(part, "file"); 724 curl_mime_type(part, "application/json"); 725 curl_mime_data_cb(part, file.fsize, read_callback, seek_callback, NULL, &file); 726 727 len = sizeof("Authorization: Bearer ") + strnlen(gd->credential.access_token, sizeof(gd->credential.access_token)); 728 authorization = malloc(len); 729 snprintf(authorization, len, "Authorization: Bearer %s", gd->credential.access_token); 730 slist1 = NULL; 731 slist1 = curl_slist_append(slist1, authorization); 732 free(authorization); 733 734 slist1 = curl_slist_append(slist1, buf); 735 736 curl_easy_setopt(curl, CURLOPT_URL, "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"); 737 curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); 738 curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime); 739 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist1); 740 curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST"); 741 curl_setopt_common(curl); 742 743 curl_easy_setopt(curl, CURLOPT_WRITEDATA, gd); 744 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); 745 746 ret = curl_easy_perform(curl); 747 748 curl_easy_cleanup(curl); 749 curl = NULL; 750 curl_mime_free(mime); 751 mime = NULL; 752 curl_slist_free_all(slist1); 753 slist1 = NULL; 754 755 f_close(&file); 756 757 return (int)ret; 758 } 759 760 int google_drive_error_callback(jsonsl_t jsn, jsonsl_error_t err, 761 struct jsonsl_state_st *state, char *errat) 762 { 763 return 0; 764 } 765 766 void google_drive_state_callback(jsonsl_t jsn, jsonsl_action_t action, 767 struct jsonsl_state_st *state, const char *buf) 768 { 769 google_drive_t *gd = (google_drive_t *)jsn->data; 770 771 switch (action) { 772 case JSONSL_ACTION_PUSH: 773 switch (state->type) { 774 case JSONSL_T_SPECIAL: 775 gd->jsn_buf[0] = *buf; 776 gd->jsn_buf_pos = 1; 777 break; 778 case JSONSL_T_STRING: 779 case JSONSL_T_HKEY: 780 gd->jsn_buf_pos = 0; 781 break; 782 default: 783 gd->jsn_buf_pos = -1; 784 } 785 break; 786 case JSONSL_ACTION_POP: 787 switch (state->type) { 788 case JSONSL_T_SPECIAL: 789 case JSONSL_T_STRING: 790 case JSONSL_T_HKEY: 791 gd->jsn_buf_pos--; 792 if (gd->jsn_buf_pos < sizeof(gd->jsn_buf)) { 793 gd->jsn_buf[gd->jsn_buf_pos] = '\0'; 794 } 795 gd->start(gd, state, gd->jsn_buf); 796 break; 797 default: 798 gd->jsn_buf[0] = '\0'; 799 break; 800 } 801 gd->jsn_buf_pos = -1; 802 break; 803 default: 804 gd->jsn_buf_pos = -1; 805 break; 806 } 807 } 124 808 125 809 static void get_logfname(char *fname) … … 185 869 ret = f_open(&file, fname, FA_CREATE_ALWAYS | FA_WRITE); 186 870 if (ret != FR_OK) { 187 ntstdio_printf(&ntstdio,"not open a upload file %d\n", ret);871 printf("not open a upload file %d\n", ret); 188 872 return ret; 189 873 } … … 232 916 f_putc('}', &file); 233 917 234 file_close:235 918 f_close(&file); 236 919 … … 238 921 } 239 922 240 void client_task(intptr_t exinf) 241 { 242 CURL *curl; 923 void curl_setopt_common(CURL *curl) 924 { 243 925 CURLcode res; 244 int error = 0;245 //const char *data = "{\"value\":\"data post\"}";246 struct curl_slist *list = NULL;247 FIL file;248 FRESULT ret;249 char fname[] = {"1:/log/20160101000000.log"};250 251 get_logfname(fname);252 253 ret = write_log(fname);254 if (ret != FR_OK) {255 ntstdio_printf(&ntstdio, "log file write error %d\n", ret);256 return;257 }258 259 ret = f_open(&file, fname, FA_READ);260 if (ret != FR_OK) {261 ntstdio_printf(&ntstdio, "log file open error %d\n", ret);262 return;263 }264 265 ntstdio_printf(&ntstdio, "cURL start\n");266 267 curl = curl_easy_init();268 if (curl == NULL) {269 ntstdio_printf(&ntstdio, "curl_easy_init() failed\n");270 goto file_close;271 }272 926 273 927 /* ask libcurl to show us the verbose output */ 274 curl_easy_setopt(curl, CURLOPT_VERBOSE, true); 275 276 res = curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/"); 928 res = curl_easy_setopt(curl, CURLOPT_VERBOSE, true); 277 929 if (res != CURLE_OK) 278 ntstdio_printf(&ntstdio, "CURLOPT_URLfailed: %s\n",930 printf("CURLOPT_VERBOSE failed: %s\n", 279 931 curl_easy_strerror(res)); 280 932 … … 283 935 284 936 /* provide a buffer to store errors in */ 285 curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); 937 res = curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); 938 if (res != CURLE_OK) 939 printf("CURLOPT_ERRORBUFFER failed: %s\n", 940 curl_easy_strerror(res)); 286 941 287 942 #ifdef SKIP_PEER_VERIFICATION … … 298 953 res = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); 299 954 if (res != CURLE_OK) 300 ntstdio_printf(&ntstdio,"CURLOPT_SSL_VERIFYPEER failed: %s\n",955 printf("CURLOPT_SSL_VERIFYPEER failed: %s\n", 301 956 curl_easy_strerror(res)); 302 957 #else 303 958 res = curl_easy_setopt(curl, CURLOPT_CAINFO, "0:/certs/ca-cert.pem"); 304 959 if (res != CURLE_OK) 305 ntstdio_printf(&ntstdio,"CURLOPT_CAINFO failed: %s\n",960 printf("CURLOPT_CAINFO failed: %s\n", 306 961 curl_easy_strerror(res)); 307 962 308 963 res = curl_easy_setopt(curl, CURLOPT_SSLCERT, "0:/certs/client-cert.pem"); 309 964 if (res != CURLE_OK) 310 ntstdio_printf(&ntstdio,"CURLOPT_SSLCERT failed: %s\n",965 printf("CURLOPT_SSLCERT failed: %s\n", 311 966 curl_easy_strerror(res)); 312 967 313 968 res = curl_easy_setopt(curl, CURLOPT_SSLKEY, "0:/certs/client-key.pem"); 314 969 if (res != CURLE_OK) 315 ntstdio_printf(&ntstdio,"CURLOPT_SSLKEY failed: %s\n",970 printf("CURLOPT_SSLKEY failed: %s\n", 316 971 curl_easy_strerror(res)); 317 972 #endif … … 326 981 res = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); 327 982 if (res != CURLE_OK) 328 ntstdio_printf(&ntstdio,"CURLOPT_SSL_VERIFYHOST failed: %s\n",983 printf("CURLOPT_SSL_VERIFYHOST failed: %s\n", 329 984 curl_easy_strerror(res)); 330 985 #endif … … 332 987 /*res = curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy.example.com:8080"); 333 988 if (res != CURLE_OK) 334 ntstdio_printf(&ntstdio,"CURLOPT_PROXY failed: %s\n",989 printf("CURLOPT_PROXY failed: %s\n", 335 990 curl_easy_strerror(res));*/ 336 991 337 curl_easy_setopt(curl, CURLOPT_POST, 1); 338 339 /* size of the POST data */ 340 //curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(data)); 341 curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, file.fsize); 342 343 /* pass in a pointer to the data - libcurl will not copy */ 344 //curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); 345 346 list = curl_slist_append(list, "Content-Type: application/json"); 347 348 curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list); 349 350 curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&error); 351 352 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); 353 354 /* now specify which file to upload */ 355 curl_easy_setopt(curl, CURLOPT_READDATA, &file); 356 357 /* we want to use our own read function */ 358 curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_data); 359 360 ntstdio_printf(&ntstdio, "cURL perform the request\n"); 361 tslp_tsk(100 * 1000); 362 363 /* Perform the request, res will get the return code */ 364 res = curl_easy_perform(curl); 365 /* Check for errors */ 366 if (res != CURLE_OK) { 367 ntstdio_printf(&ntstdio, "curl_easy_perform() failed: %s\n", 992 res = curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L); 993 if (res != CURLE_OK) 994 printf("CURLOPT_NOPROGRESS failed: %s\n", 368 995 curl_easy_strerror(res)); 369 ntstdio_printf(&ntstdio, errbuf); 370 } 371 372 /* always cleanup */ 373 curl_easy_cleanup(curl); 374 375 ntstdio_printf(&ntstdio, "cURL end\n"); 376 377 file_close: 378 f_close(&file); 379 } 380 381 void client_fin(void) 382 { 996 997 res = curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 50L); 998 if (res != CURLE_OK) 999 printf("CURLOPT_MAXREDIRS failed: %s\n", 1000 curl_easy_strerror(res)); 1001 1002 res = curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L); 1003 if (res != CURLE_OK) 1004 printf("CURLOPT_TCP_KEEPALIVE failed: %s\n", 1005 curl_easy_strerror(res)); 1006 } 1007 1008 void client_set_client_id(const char *client_id) 1009 { 1010 google_drive_t *gd = &google_drive; 1011 1012 strlcpy(gd->client_info.client_id, client_id, sizeof(gd->client_info.client_id)); 1013 } 1014 1015 void client_set_client_secret(const char *client_secret) 1016 { 1017 google_drive_t *gd = &google_drive; 1018 1019 strlcpy(gd->client_info.client_secret, client_secret, sizeof(gd->client_info.client_secret)); 1020 } 1021 1022 int client_get_device_id(int argc, char **argv) 1023 { 1024 google_drive_t *gd = &google_drive; 1025 int ret; 1026 1027 ret = get_device_id(gd, SCOPE_DRIVE_FILE); 1028 if (ret == 0) { 1029 printf("Device was registered. Enter the code at the following URL\n"); 1030 printf("url: %s\n", gd->credential.verification_url); 1031 printf("code: %s\n", gd->credential.user_code); 1032 } 1033 else { 1034 printf("Device register failed! %d\n", ret); 1035 } 1036 1037 return ret; 1038 } 1039 1040 int client_get_access_token(int argc, char **argv) 1041 { 1042 google_drive_t *gd = &google_drive; 1043 int ret; 1044 1045 ret = get_access_token(gd); 1046 if (ret == 0) { 1047 printf("Access token was give\n"); 1048 printf("Refresh token: %s\n", gd->credential.refresh_token); 1049 printf("Access token: %s\n", gd->credential.access_token); 1050 } 1051 else { 1052 printf("Access token gain failed. %d\n", ret); 1053 } 1054 1055 return ret; 1056 } 1057 1058 int client_update_access_token(int argc, char **argv) 1059 { 1060 google_drive_t *gd = &google_drive; 1061 int ret; 1062 1063 ret = update_access_token(gd); 1064 if (ret == 0) { 1065 printf("Access token was update\n"); 1066 printf("Access token: %s\n", gd->credential.access_token); 1067 } 1068 else { 1069 printf("Access token update failed. %d\n", ret); 1070 } 1071 1072 return ret; 1073 } 1074 1075 int client_revoke(int argc, char **argv) 1076 { 1077 google_drive_t *gd = &google_drive; 1078 int ret; 1079 1080 ret = revoke_device(gd); 1081 if (ret == 0) { 1082 printf("Device was revoked.\n"); 1083 } 1084 else { 1085 printf("Device revoke failed. %d\n", ret); 1086 } 1087 1088 return ret; 1089 } 1090 1091 int client_upload_file(int argc, char **argv) 1092 { 1093 google_drive_t *gd = &google_drive; 1094 int ret; 1095 FRESULT fret; 1096 char fname[] = { "1:/log/20160101000000.log" }; 1097 1098 get_logfname(fname); 1099 1100 fret = write_log(fname); 1101 if (fret != FR_OK) { 1102 printf("log file write error %d\n", fret); 1103 return (int)fret; 1104 } 1105 1106 ret = upload_file(gd, &fname[7], fname); 1107 if (ret == 0) { 1108 printf("%s was uploaded.\n", &fname[7]); 1109 } 1110 else { 1111 printf("%s upload failed. %d\n", &fname[7], ret); 1112 } 1113 1114 return ret; 1115 } 1116 1117 void client_final(void) 1118 { 1119 google_drive_t *gd = &google_drive; 1120 jsonsl_t jsn = gd->jsn; 1121 383 1122 curl_global_cleanup(); 384 } 1123 jsonsl_destroy(jsn); 1124 } -
asp3_tinet_ecnl_arm/trunk/app1_usb_watt_meter/src/client.h
r352 r364 39 39 #define _CLIENT_H_ 40 40 41 #include <kernel.h> 42 #include "target_kernel_impl.h" 41 typedef struct client_info_t { 42 char client_id[80]; 43 char client_secret[32]; 44 } client_info_t; 43 45 44 #define CLIENT_PRIORITY 4 /* クライアントタスクの優先度 */ 46 typedef struct credential_t { 47 char device_code[100]; 48 char user_code[12]; 49 int expires_in; 50 int interval; 51 char verification_url[32]; 52 char access_token[132]; 53 char refresh_token[64]; 54 char scope[64]; 55 char token_type[16]; 56 } credential_t; 45 57 46 #define CLIENT_STACK_SIZE 6144 /* スタック領域のサイズ */ 58 typedef struct error_response_t { 59 char error[64]; 60 char error_description[64]; 61 } error_response_t; 47 62 48 extern void client_init(void); 49 extern void client_task(intptr_t exinf); 50 extern void client_fin(void); 63 typedef struct drive_file_t { 64 char kind[32]; 65 char id[36]; 66 char name[256]; 67 char mimeType[40]; 68 } drive_file_t; 69 70 typedef enum google_drive_parse_state_t { 71 psRoot, 72 psDeviceCode, 73 psUserCode, 74 psExpiresIn, 75 psInterval, 76 psVerificationUrl, 77 psAccessToken, 78 psRefreshToken, 79 psScope, 80 psTokenType, 81 psKind, 82 psId, 83 psName, 84 psMimeType, 85 psError, 86 psErrorDescription, 87 } google_drive_parse_state_t; 88 89 struct jsonsl_st; 90 typedef struct jsonsl_st *jsonsl_t; 91 92 typedef void (*parser_callback_t)(struct google_drive_t *gd, struct jsonsl_state_st *state, const char *buf); 93 94 typedef struct google_drive_t { 95 client_info_t client_info; 96 credential_t credential; 97 drive_file_t file; 98 error_response_t error; 99 jsonsl_t jsn; 100 google_drive_parse_state_t state; 101 char fname[sizeof("1:/log/20160101000000.log")]; 102 char jsn_buf[256]; 103 int jsn_buf_pos; 104 parser_callback_t start; 105 parser_callback_t end; 106 } google_drive_t; 107 108 extern google_drive_t google_drive; 109 110 void client_init(void); 111 void client_final(void); 112 113 void client_set_client_id(const char *client_id); 114 void client_set_client_secret(const char *client_secret); 115 int client_get_device_id(int argc, char **argv); 116 int client_get_access_token(int argc, char **argv); 117 int client_update_access_token(int argc, char **argv); 118 int client_revoke(int argc, char **argv); 119 int client_upload_file(int argc, char **argv); 51 120 52 121 #endif /* _CLIENT_H_ */ -
asp3_tinet_ecnl_arm/trunk/app1_usb_watt_meter/src/echonet_main.c
r352 r364 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2016-2018 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ 37 37 38 /* 38 /* 39 39 * サンプルプログラム(1)の本体 40 40 */ … … 164 164 { 165 165 /* サイズが1以外は受け付けない */ 166 if (size != 1)166 if (size != 1) 167 167 return 0; 168 168 169 169 *anno = *((uint8_t*)item->exinf) != *((uint8_t*)src); 170 170 171 switch (*(uint8_t *)src){171 switch (*(uint8_t *)src) { 172 172 /* ONの場合 */ 173 173 case 0x30: … … 196 196 { 197 197 /* サイズが1以外は受け付けない */ 198 if (size != 1)198 if (size != 1) 199 199 return 0; 200 200 201 201 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 202 202 203 switch (*(uint8_t *)src){203 switch (*(uint8_t *)src) { 204 204 /* 異常発生ありの場合 */ 205 205 case 0x41: … … 271 271 int date_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno) 272 272 { 273 uint8_t *p_src;273 const uint8_t *p_src; 274 274 time_t temp; 275 275 struct tm _tm; … … 283 283 /* 年月日設定 */ 284 284 p_src = (uint8_t *)src; 285 _tm.tm_year = (* (p_src++)* 100) + *p_src++;285 _tm.tm_year = (*p_src++ * 100) + *p_src++; 286 286 _tm.tm_mon = (*p_src++) - 1; 287 287 _tm.tm_mday = *p_src++; … … 325 325 326 326 /* サイズが4以外は受け付けない */ 327 if (size != 4)327 if (size != 4) 328 328 return 0; 329 329 … … 345 345 346 346 len = 48 - meter->current_pos; 347 if (len > 0)347 if (len > 0) 348 348 memcpy(dst, &meter->integral_electric_energy_measurement_log[meter->current_pos], sizeof(uint32_t) * len); 349 349 dst = &((uint8_t *)dst)[len]; … … 404 404 405 405 ret2 = get_tim(&now); 406 if (ret2 != E_OK) {406 if (ret2 != E_OK) { 407 407 syslog(LOG_ERROR, "get_tim"); 408 408 return; 409 409 } 410 410 411 for (;;){411 for (;;) { 412 412 prev = now; 413 413 … … 417 417 /* 応答電文待ち */ 418 418 ret = ecn_trcv_esv(&esv, timer); 419 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {419 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) { 420 420 syslog(LOG_ERROR, "ecn_trcv_esv"); 421 421 break; … … 423 423 424 424 ret2 = get_tim(&now); 425 if (ret2 != E_OK) {425 if (ret2 != E_OK) { 426 426 syslog(LOG_ERROR, "get_tim"); 427 427 break; … … 438 438 /* 領域解放 */ 439 439 ret = ecn_rel_esv(esv); 440 if (ret != E_OK) {440 if (ret != E_OK) { 441 441 syslog(LOG_ERROR, "ecn_rel_esv"); 442 442 break; … … 447 447 /* 応答電文待ちの割り込みデータ取得 */ 448 448 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 449 if (ret != E_OK) {449 if (ret != E_OK) { 450 450 syslog(LOG_ERROR, "ecn_get_brk_dat"); 451 451 break; … … 457 457 /* 領域解放 */ 458 458 ret = ecn_rel_esv(esv); 459 if (ret != E_OK) {459 if (ret != E_OK) { 460 460 syslog(LOG_ERROR, "ecn_rel_esv"); 461 461 break; … … 468 468 } 469 469 470 bool_t started = false;471 472 470 void echonet_change_netif_link(uint8_t link_up, uint8_t up) 473 471 { … … 477 475 return; 478 476 479 if (up && !started) { 480 started = true; 481 482 /* ECHONETミドルウェアを起動 */ 483 ret = ecn_sta_svc(); 484 if (ret != E_OK) 485 return; 486 487 /* ECHONETミドルウェアを起動するのを待つ */ 488 dly_tsk(100); 477 if (up) { 478 /* インスタンスリスト通知の送信 */ 479 ret = ecn_ntf_inl(); 480 if (ret != E_OK) { 481 syslog(LOG_ERROR, "ecn_ntf_inl"); 482 } 489 483 } 490 484 … … 500 494 } 501 495 502 enum main_state_t{ 496 enum main_state_t { 497 main_state_start, 503 498 main_state_idle, 504 499 }; 505 500 506 501 int main_timer = TMO_FEVR; 507 enum main_state_t main_state = main_state_ idle;502 enum main_state_t main_state = main_state_start; 508 503 int main_lcd_state = 0; 509 504 int main_lcd_timer = TMO_FEVR; … … 557 552 analogin_init(&joystick, P1_12); 558 553 559 /* 10ms後にボタン状態を確認*/560 main_ timer = 10 * 1000;561 562 /* ボタン状態読み込み */ 554 /* ECHONETミドルウェアを起動するのを待つ */ 555 main_state = main_state_start; 556 main_timer = 1000 * 1000; 557 563 558 btn = main_read_button(&joystick); 564 559 main_btn1_state = btn == BUTTON_LEFT; … … 568 563 spi_init(&lcd.hspi, P10_14, P10_15, P10_12, NC); 569 564 spi_format(&lcd.hspi, 8, 0, 0); 570 spi_frequency(&lcd.hspi, 1000000);565 spi_frequency(&lcd.hspi, 4000000); 571 566 572 567 gpio_init_out(&lcd.cs_pin, P10_13); … … 590 585 main_adv_timer = 1000 * 1000; 591 586 587 /* メインタスクを起動 */ 592 588 ER ret = act_tsk(MAIN_TASK); 593 589 if (ret != E_OK) { … … 603 599 int result = main_timer; 604 600 605 if ((result == TMO_FEVR)606 || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) {601 if ((result == TMO_FEVR) 602 || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) { 607 603 result = main_lcd_timer; 608 604 } … … 621 617 static void main_progress(int interval) 622 618 { 623 if (main_timer != TMO_FEVR){619 if (main_timer != TMO_FEVR) { 624 620 main_timer -= interval; 625 if (main_timer < 0){621 if (main_timer < 0) { 626 622 main_timer = 0; 627 623 } 628 624 } 629 625 630 if (main_lcd_timer != TMO_FEVR){626 if (main_lcd_timer != TMO_FEVR) { 631 627 main_lcd_timer -= interval; 632 if (main_lcd_timer < 0){628 if (main_lcd_timer < 0) { 633 629 main_lcd_timer = 0; 634 630 } … … 655 651 656 652 ret = ecn_itr_ini(&enm, esv); 657 if (ret != E_OK){653 if (ret != E_OK) { 658 654 syslog(LOG_ERROR, "ecn_itr_ini"); 659 655 return; 660 656 } 661 657 662 for (;;) {663 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {658 for (;;) { 659 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 664 660 switch (epc) { 665 661 case 0x80: … … 669 665 } 670 666 } 671 if (ret != E_BOVR){667 if (ret != E_BOVR) { 672 668 syslog(LOG_ERROR, "ecn_itr_nxt"); 673 669 break; 674 670 } 675 if (enm.is_eof)671 if (enm.is_eof) 676 672 break; 677 673 } … … 684 680 { 685 681 char mac_text[30] = "mac: "; 686 char ipaddr_text[30] = "ipad dr: ";687 T_IN4_ADDR *ip4_addr;682 char ipaddr_text[30] = "ipadr: "; 683 const T_IN4_ADDR *ip4_addr; 688 684 int pos; 689 685 690 switch (main_state){686 switch (main_state) { 691 687 case main_state_idle: 692 688 if (len == 0) … … 704 700 pos = str_macaddr(&mac_text[4], sizeof(mac_text) - 4, mac_addr, 0); 705 701 mac_text[pos + 4] = '\0'; 706 lcd_drawString(&lcd, mac_text, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 14) + 10, ST7735_BLACK, ST7735_WHITE);702 lcd_drawString(&lcd, mac_text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 11), ST7735_BLACK, ST7735_WHITE); 707 703 708 704 ip4_addr = in4_get_ifaddr(0); 709 pos = str_ipv4addr(&ipaddr_text[ 7], sizeof(ipaddr_text) - 7, ip4_addr, 0);710 ipaddr_text[pos + 7] = '\0';711 lcd_drawString(&lcd, ipaddr_text, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 15) + 10, ST7735_BLACK, ST7735_WHITE);705 pos = str_ipv4addr(&ipaddr_text[6], sizeof(ipaddr_text) - 6, ip4_addr, 0); 706 ipaddr_text[pos + 6] = '\0'; 707 lcd_drawString(&lcd, ipaddr_text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 12), ST7735_BLACK, ST7735_WHITE); 712 708 } 713 709 break; … … 724 720 static void main_timeout() 725 721 { 726 if (main_timer == 0){722 if (main_timer == 0) { 727 723 main_ontimer(); 728 724 } 729 725 730 if (main_lcd_timer == 0){726 if (main_lcd_timer == 0) { 731 727 main_lcd_ontimer(); 732 728 } … … 746 742 int port_no, btn; 747 743 748 switch (main_lcd_state) {744 switch (main_lcd_state) { 749 745 case 0: 750 746 case 1: … … 757 753 text[16] = '0' + main_7seg[port_no][2]; 758 754 text[17] = '0' + main_7seg[port_no][3]; 759 lcd_drawString(&lcd, &text[14], X_LINE_HALF_TO_PIX(&lcd, 11) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE);755 lcd_drawString(&lcd, &text[14], X_LINE_HALF_TO_PIX(&lcd, 11), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 760 756 main_lcd_state++; 761 757 break; 762 758 case 6: 763 759 btn = main_read_button(&joystick); 764 lcd_drawString(&lcd, btn_texts[btn], X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 10) + 10, ST7735_BLACK, ST7735_WHITE);760 lcd_drawString(&lcd, btn_texts[btn], X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 9), ST7735_BLACK, ST7735_WHITE); 765 761 main_lcd_state++; 766 762 break; … … 769 765 break; 770 766 case 10: 771 lcd_drawString(&lcd, "USB電力計", X_LINE_TO_PIX(&lcd, 10) + 10, Y_ROW_TO_PIX(&lcd, 0) + 10, ST7735_BLACK, ST7735_WHITE);767 lcd_drawString(&lcd, "USB電力計", X_LINE_TO_PIX(&lcd, 6), Y_ROW_TO_PIX(&lcd, 0), ST7735_BLACK, ST7735_WHITE); 772 768 for (port_no = 0; port_no < 6; port_no++) { 773 769 text[3] = '1' + port_no; 774 lcd_drawString(&lcd, text, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, port_no + 4) + 10, ST7735_BLACK, ST7735_WHITE);770 lcd_drawString(&lcd, text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, port_no + 2), ST7735_BLACK, ST7735_WHITE); 775 771 } 776 772 main_lcd_state = 0; … … 802 798 static void main_ontimer() 803 799 { 800 ER ret; 804 801 uint8_t btn; 805 802 uint16_t ad_value; 806 803 807 switch(main_state){ 804 switch (main_state) { 805 case main_state_start: 806 /* ECHONETミドルウェアを起動 */ 807 ret = ecn_sta_svc(); 808 if (ret != E_OK) { 809 syslog(LOG_ERROR, "ecn_sta_svc"); 810 } 811 812 /* 10ms後にボタン状態を確認 */ 813 main_state = main_state_idle; 814 main_timer = 10 * 1000; 815 break; 808 816 case main_state_idle: 809 817 /* 10ms後にボタン状態を確認 */ … … 845 853 846 854 /* ボタン1の処理 */ 847 if ((btn == BUTTON_LEFT) && !main_btn1_state){855 if ((btn == BUTTON_LEFT) && !main_btn1_state) { 848 856 main_btn1_count++; 849 if (main_btn1_count > 10){857 if (main_btn1_count > 10) { 850 858 main_btn1_count = 0; 851 859 main_btn1_state = true; … … 854 862 } 855 863 } 856 else if ((btn != BUTTON_LEFT) && main_btn1_state){864 else if ((btn != BUTTON_LEFT) && main_btn1_state) { 857 865 main_btn1_count++; 858 if (main_btn1_count > 10){866 if (main_btn1_count > 10) { 859 867 main_btn1_count = 0; 860 868 main_btn1_state = false; … … 865 873 866 874 /* ボタン2の処理 */ 867 if ((btn == BUTTON_RIGHT) && !main_btn2_state){875 if ((btn == BUTTON_RIGHT) && !main_btn2_state) { 868 876 main_btn2_count++; 869 if (main_btn2_count > 10){877 if (main_btn2_count > 10) { 870 878 main_btn2_count = 0; 871 879 main_btn2_state = true; … … 874 882 } 875 883 } 876 else if ((btn != BUTTON_RIGHT) && main_btn2_state){884 else if ((btn != BUTTON_RIGHT) && main_btn2_state) { 877 885 main_btn2_count++; 878 if (main_btn2_count > 10){886 if (main_btn2_count > 10) { 879 887 main_btn2_count = 0; 880 888 main_btn2_state = false; … … 897 905 static uint8_t main_read_button(analogin_t *obj) 898 906 { 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 907 float a = analogin_read(obj); 908 909 a *= 5.0; 910 911 //printf("Button read analog = %f\r\n",a); 912 if (a < 0.2) 913 return BUTTON_DOWN; 914 if (a < 1.0) 915 return BUTTON_RIGHT; 916 if (a < 1.7) 917 return BUTTON_SELECT; 918 if (a < 2.6) 919 return BUTTON_UP; 920 if (a < 4.6) 921 return BUTTON_LEFT; 922 else 923 return BUTTON_NONE; 916 924 } 917 925 … … 924 932 { 925 933 /* 押されて戻った時に処理する */ 926 if (push)934 if (push) 927 935 return; 928 936 929 937 /* 表示ポート番号 */ 930 if (!main_rev){938 if (!main_rev) { 931 939 main_port_no--; 932 if (main_port_no < 1){940 if (main_port_no < 1) { 933 941 main_port_no = 1; 934 942 main_rev = true; … … 936 944 } 937 945 } 938 else {946 else { 939 947 main_port_no++; 940 if (main_port_no > main_ad_count){948 if (main_port_no > main_ad_count) { 941 949 main_port_no = main_ad_count; 942 950 main_rev = false; … … 952 960 { 953 961 /* 押されて戻った時に処理する */ 954 if (push)962 if (push) 955 963 return; 956 964 … … 961 969 962 970 /* 表示ポート番号 */ 963 if (!main_rev){971 if (!main_rev) { 964 972 main_port_no++; 965 if (main_port_no > main_ad_count){973 if (main_port_no > main_ad_count) { 966 974 main_port_no = main_ad_count; 967 975 main_rev = false; … … 969 977 } 970 978 } 971 else {979 else { 972 980 main_port_no--; 973 if (main_port_no < 1){981 if (main_port_no < 1) { 974 982 main_port_no = 1; 975 983 main_rev = true; … … 988 996 989 997 main_port_no++; 990 if (main_port_no > main_ad_count)998 if (main_port_no > main_ad_count) 991 999 main_port_no = 1; 992 1000 -
asp3_tinet_ecnl_arm/trunk/app1_usb_watt_meter/src/main.c
r359 r364 45 45 #include <sil.h> 46 46 #include <setjmp.h> 47 #include <stdlib.h> 47 48 #include <string.h> 48 49 #include "syssvc/serial.h" … … 80 81 81 82 ID ws_api_mailboxid = MAIN_DATAQUEUE; 83 #ifndef NOUSE_MPF_NET_BUF 82 84 ID ws_mempoolid = MPF_NET_BUF_256; 85 #endif 83 86 84 87 #if defined(IF_ETHER_BTUSB) || defined(IF_ETHER_ENBT) … … 114 117 static void main_timeout(); 115 118 119 extern int ntshell_exit; 120 116 121 int uart_read(char *buf, int cnt, void *extobj) 117 122 { 118 return serial_rea_dat(SIO_PORTID, (char *)buf, cnt); 123 struct main_t *obj = (struct main_t *)extobj; 124 int result; 125 ER ret; 126 int timer; 127 128 obj->prev = obj->now; 129 130 /* タイマー取得 */ 131 timer = main_get_timer(); 132 133 /* 待ち */ 134 ret = serial_trea_dat(SIO_PORTID, buf, cnt, timer); 135 if ((ret < 0) && (ret != E_OK) && (ret != E_TMOUT)) { 136 syslog(LOG_NOTICE, "tslp_tsk ret: %s %d", itron_strerror(ret), timer); 137 ntshell_exit = 1; 138 return -1; 139 } 140 result = (int)ret; 141 142 ret = get_tim(&obj->now); 143 if (ret != E_OK) { 144 syslog(LOG_NOTICE, "get_tim ret: %s", itron_strerror(ret)); 145 ntshell_exit = 1; 146 return -1; 147 } 148 149 /* 時間経過 */ 150 int elapse = obj->now - obj->prev; 151 main_progress(elapse); 152 153 /* タイムアウト処理 */ 154 main_timeout(); 155 156 return result; 119 157 } 120 158 … … 122 160 { 123 161 return serial_wri_dat(SIO_PORTID, buf, cnt); 124 }125 126 unsigned char ntstdio_xi(struct ntstdio_t *handle)127 {128 char buf[1];129 if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)130 return -EIO;131 return buf[0];132 }133 134 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)135 {136 char buf[1];137 buf[0] = c;138 serial_wri_dat(SIO_PORTID, buf, 1);139 162 } 140 163 … … 156 179 main_initialize(); 157 180 158 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);181 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj); 159 182 ntshell_set_prompt(&ntshell, "NTShell>"); 160 183 ntshell_execute(&ntshell); … … 176 199 ER ret; 177 200 201 #ifdef TOPPERS_OMIT_TECS 202 serial_opn_por(SIO_PORTID); 203 #endif 204 serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV); 205 178 206 //wolfSSL_Debugging_ON(); 179 207 180 ntshell_task_init( );208 ntshell_task_init(uart_read, uart_write, &main_obj); 181 209 182 210 main_obj.timer = TMO_FEVR; … … 313 341 } 314 342 343 int cmd_creid(int argc, char **argv) 344 { 345 if (argc != 2) { 346 printf("creid {client_id}\n"); 347 return 0; 348 } 349 350 client_set_client_id(argv[1]); 351 352 return 0; 353 } 354 355 int cmd_secret(int argc, char **argv) 356 { 357 if (argc != 2) { 358 printf("secret {client_secret}\n"); 359 return 0; 360 } 361 362 client_set_client_secret(argv[1]); 363 364 return 0; 365 } 366 315 367 int cmd_logupload(int argc, char **argv) 316 368 { 317 client_task(0); 318 return 0; 369 return client_upload_file(argc, argv); 319 370 } 320 371 … … 335 386 {"dnsc", "DNS client", usrcmd_dnsc }, 336 387 {"ntpc", "NTP client", usrcmd_ntpc }, 388 {"creid", "Regster device", cmd_creid}, 389 {"secret", "Regster device", cmd_secret}, 390 {"gdi", "get_device_id", client_get_device_id}, 391 {"gat", "get_access_token", client_get_access_token}, 392 {"uat", "update_access_token", client_update_access_token}, 393 {"rd", "revoke device", client_revoke}, 394 {"uf", "upload_file", client_upload_file}, 337 395 {"logupload", "Upload log to server", cmd_logupload}, 338 396 {"info", "This is a description text string for info command.", usrcmd_info}, -
asp3_tinet_ecnl_arm/trunk/app1_usb_watt_meter/src/main.cfg
r352 r364 54 54 INCLUDE("tinet/tinet_asp.cfg"); 55 55 INCLUDE("tinet_main.cfg"); 56 INCLUDE("netinet/ip_igmp.cfg");57 56 58 57 /* DHCP クライアント */ -
asp3_tinet_ecnl_arm/trunk/app2_light/.cproject
r352 r364 22 22 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 23 23 <option id="toolchain.id" value="gcc-arm-embedded"/> 24 <option id="toolchain.version" value=" 5.4.1.20160919"/>24 <option id="toolchain.version" value="6.3.1.20170620"/> 25 25 </storageModule> 26 26 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 59 59 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.913962636" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 60 60 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.812015080" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 61 <builder buildPath="${workspace_loc:/app2_light}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1678746512" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>61 <builder buildPath="${workspace_loc:/app2_light}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1678746512" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 62 62 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1300910948" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 63 63 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.821934622" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> … … 127 127 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 128 128 <option id="toolchain.id" value="gcc-arm-embedded"/> 129 <option id="toolchain.version" value=" 5.4.1.20160919"/>129 <option id="toolchain.version" value="6.3.1.20170620"/> 130 130 </storageModule> 131 131 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 164 164 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.296419460" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 165 165 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1982161542" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 166 <builder buildPath="${workspace_loc:/app2_light}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.648260189" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>166 <builder buildPath="${workspace_loc:/app2_light}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.648260189" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 167 167 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1287580563" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 168 168 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1691990754" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> -
asp3_tinet_ecnl_arm/trunk/app2_light/Debug/Makefile
r352 r364 173 173 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 174 174 endif 175 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start175 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 176 176 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 177 177 -I$(SRCDIR)/../btstack/include \ … … 181 181 -I$(SRCDIR)/../usbhost/src \ 182 182 $(INCLUDES) 183 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.183 LDFLAGS := $(LDFLAGS) -L. 184 184 LIBS := $(LIBS) $(CXXLIBS) 185 185 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 215 215 endif 216 216 217 218 # 219 # ネットワークサービスの定義 220 # 221 NO_USE_TINET_LIBRARY = true 222 223 # ネットワークインタフェースの選択、何れか一つ選択する。 224 NET_IF = ether 225 226 # イーサネット・ディバイスドライバの選択 227 NET_DEV = if_btusb 228 229 # ネットワーク層の選択 230 #SUPPORT_INET6 = true 231 SUPPORT_INET4 = true 232 233 # API に組込む機能の選択 234 #API_CFG_IP4MAPPED_ADDR = true 235 236 # トランスポート層の選択 237 SUPPORT_TCP = true 238 SUPPORT_UDP = true 239 240 # IGMPを有効に設定 241 SUPPORT_IGMP = true 242 243 # 244 # ネットワークサービスの Makefile のインクルード 245 # 246 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 217 ifdef TINETDIR 218 # 219 # ネットワークサービスの定義 220 # 221 NO_USE_TINET_LIBRARY = true 222 223 # ネットワークインタフェースの選択、何れか一つ選択する。 224 NET_IF = ether 225 226 # イーサネット・ディバイスドライバの選択 227 NET_DEV = if_btusb 228 229 # ネットワーク層の選択 230 #SUPPORT_INET6 = true 231 SUPPORT_INET4 = true 232 233 # API に組込む機能の選択 234 #API_CFG_IP4MAPPED_ADDR = true 235 236 # トランスポート層の選択 237 SUPPORT_TCP = true 238 SUPPORT_UDP = true 239 240 # IGMPを有効に設定 241 SUPPORT_IGMP = true 242 243 # 244 # ネットワークサービスの Makefile のインクルード 245 # 246 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 247 endif 247 248 248 249 # … … 277 278 # コンフィギュレータに関する定義 278 279 # 279 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 280 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 280 ifndef TINETDIR 281 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 282 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 283 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 284 else 285 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 286 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 281 287 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 282 288 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 284 290 --symval-table ../../ntshell/echonet/echonet_sym.def \ 285 291 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 292 endif 286 293 CFG_ASMOBJS := $(CFG_ASMOBJS) 287 294 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 429 436 430 437 # 438 # 並列makeのための依存関係の定義 439 # 440 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 441 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 442 | offset.timestamp 443 444 # 431 445 # 特別な依存関係の定義 432 446 # … … 437 451 # 438 452 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 439 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \453 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 440 454 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 441 455 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app2_light/DebugEther/Makefile
r352 r364 171 171 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 172 172 endif 173 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start173 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 174 174 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 175 175 -I$(SRCDIR)/../btstack/include \ … … 179 179 -I$(SRCDIR)/../usbhost/src \ 180 180 $(INCLUDES) 181 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.181 LDFLAGS := $(LDFLAGS) -L. 182 182 LIBS := $(LIBS) $(CXXLIBS) 183 183 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 213 213 endif 214 214 215 216 #217 # ネットワークサービスの定義218 #219 NO_USE_TINET_LIBRARY = true220 221 # ネットワークインタフェースの選択、何れか一つ選択する。222 NET_IF = ether223 224 # イーサネット・ディバイスドライバの選択215 ifdef TINETDIR 216 # 217 # ネットワークサービスの定義 218 # 219 NO_USE_TINET_LIBRARY = true 220 221 # ネットワークインタフェースの選択、何れか一つ選択する。 222 NET_IF = ether 223 224 # イーサネット・ディバイスドライバの選択 225 225 NET_DEV = if_mbed 226 226 227 # ネットワーク層の選択 228 #SUPPORT_INET6 = true 229 SUPPORT_INET4 = true 230 231 # API に組込む機能の選択 232 #API_CFG_IP4MAPPED_ADDR = true 233 234 # トランスポート層の選択 235 SUPPORT_TCP = true 236 SUPPORT_UDP = true 237 238 # IGMPを有効に設定 239 SUPPORT_IGMP = true 240 241 # 242 # ネットワークサービスの Makefile のインクルード 243 # 244 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 227 # ネットワーク層の選択 228 #SUPPORT_INET6 = true 229 SUPPORT_INET4 = true 230 231 # API に組込む機能の選択 232 #API_CFG_IP4MAPPED_ADDR = true 233 234 # トランスポート層の選択 235 SUPPORT_TCP = true 236 SUPPORT_UDP = true 237 238 # IGMPを有効に設定 239 SUPPORT_IGMP = true 240 241 # 242 # ネットワークサービスの Makefile のインクルード 243 # 244 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 245 endif 245 246 246 247 # … … 275 276 # コンフィギュレータに関する定義 276 277 # 277 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 278 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 278 ifndef TINETDIR 279 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 280 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 281 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 282 else 283 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 284 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 279 285 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 280 286 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 282 288 --symval-table ../../ntshell/echonet/echonet_sym.def \ 283 289 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 290 endif 284 291 CFG_ASMOBJS := $(CFG_ASMOBJS) 285 292 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 427 434 428 435 # 436 # 並列makeのための依存関係の定義 437 # 438 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 439 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 440 | offset.timestamp 441 442 # 429 443 # 特別な依存関係の定義 430 444 # … … 435 449 # 436 450 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 437 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \451 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 438 452 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 439 453 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app2_light/src/echonet_main.c
r352 r364 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2014-2018 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ 37 37 38 /* 38 /* 39 39 * サンプルプログラム(1)の本体 40 40 */ … … 127 127 { 128 128 /* サイズが1以外は受け付けない */ 129 if (size != 1)129 if (size != 1) 130 130 return 0; 131 131 132 132 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 133 133 134 switch (*(uint8_t *)src){134 switch (*(uint8_t *)src) { 135 135 /* ONの場合 */ 136 136 case 0x30: … … 163 163 { 164 164 /* サイズが1以外は受け付けない */ 165 if (size != 1)165 if (size != 1) 166 166 return 0; 167 167 168 168 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 169 169 170 switch (*(uint8_t *)src){170 switch (*(uint8_t *)src) { 171 171 /* 異常発生ありの場合 */ 172 172 case 0x41: … … 189 189 { 190 190 /* サイズが1以外は受け付けない */ 191 if (size != 1)192 return 0; 193 194 switch (*(uint8_t *)src){191 if (size != 1) 192 return 0; 193 194 switch (*(uint8_t *)src) { 195 195 /* 自動の場合 */ 196 196 case 0x41: … … 241 241 uint8_t data[2]; 242 242 243 if (size != 1)244 return 0; 245 246 switch (*(uint8_t *)src){243 if (size != 1) 244 return 0; 245 246 switch (*(uint8_t *)src) { 247 247 /* 人体検出ありの場合 */ 248 248 case 0x41: … … 253 253 data[1] = *(uint8_t *)src; 254 254 ret = ecn_brk_wai(data, sizeof(data)); 255 if (ret != E_OK){255 if (ret != E_OK) { 256 256 syslog(LOG_ERROR, "ecn_brk_wai"); 257 257 return 1; … … 266 266 data[1] = *(uint8_t *)src; 267 267 ret = ecn_brk_wai(data, sizeof(data)); 268 if (ret != E_OK){268 if (ret != E_OK) { 269 269 syslog(LOG_ERROR, "ecn_brk_wai"); 270 270 return 1; … … 288 288 struct tm _tm; 289 289 290 if (size != 2)290 if (size != 2) 291 291 return 0; 292 292 … … 315 315 struct tm _tm; 316 316 317 if (size != 2)317 if (size != 2) 318 318 return 0; 319 319 … … 338 338 struct tm _tm; 339 339 340 if (size != 4)340 if (size != 4) 341 341 return 0; 342 342 … … 365 365 struct tm _tm; 366 366 367 if (size != 4)367 if (size != 4) 368 368 return 0; 369 369 … … 403 403 404 404 ret2 = get_tim(&now); 405 if (ret2 != E_OK) {405 if (ret2 != E_OK) { 406 406 syslog(LOG_ERROR, "get_tim"); 407 407 return; 408 408 } 409 409 410 for (;;){410 for (;;) { 411 411 prev = now; 412 412 … … 416 416 /* 応答電文待ち */ 417 417 ret = ecn_trcv_esv(&esv, timer); 418 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {418 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) { 419 419 syslog(LOG_ERROR, "ecn_trcv_esv"); 420 420 break; … … 422 422 423 423 ret2 = get_tim(&now); 424 if (ret2 != E_OK) {424 if (ret2 != E_OK) { 425 425 syslog(LOG_ERROR, "get_tim"); 426 426 break; … … 437 437 /* 領域解放 */ 438 438 ret = ecn_rel_esv(esv); 439 if (ret != E_OK) {439 if (ret != E_OK) { 440 440 syslog(LOG_ERROR, "ecn_rel_esv"); 441 441 break; … … 446 446 /* 応答電文待ちの割り込みデータ取得 */ 447 447 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 448 if (ret != E_OK) {448 if (ret != E_OK) { 449 449 syslog(LOG_ERROR, "ecn_get_brk_dat"); 450 450 break; … … 456 456 /* 領域解放 */ 457 457 ret = ecn_rel_esv(esv); 458 if (ret != E_OK) {458 if (ret != E_OK) { 459 459 syslog(LOG_ERROR, "ecn_rel_esv"); 460 460 break; … … 467 467 } 468 468 469 bool_t started = false;470 471 469 void echonet_change_netif_link(uint8_t link_up, uint8_t up) 472 470 { … … 476 474 return; 477 475 478 if (up && !started) { 479 started = true; 480 481 /* ECHONETミドルウェアを起動 */ 482 ret = ecn_sta_svc(); 483 if (ret != E_OK) 484 return; 485 486 /* ECHONETミドルウェアを起動するのを待つ */ 487 dly_tsk(100); 476 if (up) { 477 /* インスタンスリスト通知の送信 */ 478 ret = ecn_ntf_inl(); 479 if (ret != E_OK) { 480 syslog(LOG_ERROR, "ecn_ntf_inl"); 481 } 488 482 } 489 483 … … 499 493 } 500 494 501 enum main_state_t{ 495 enum main_state_t { 496 main_state_start, 502 497 main_state_idle, 503 498 main_state_search, … … 506 501 int main_timer = TMO_FEVR; 507 502 int main_btn_timer = TMO_FEVR; 508 enum main_state_t main_state = main_state_ idle;503 enum main_state_t main_state = main_state_start; 509 504 bool_t main_btn1_state; 510 505 int main_btn1_count = 0; … … 535 530 gpio_write(&led_red, 0); 536 531 537 /* 1秒後に人体検知センサを検索*/538 main_state = main_state_s earch;532 /* ECHONETミドルウェアを起動するのを待つ */ 533 main_state = main_state_start; 539 534 main_timer = 1000 * 1000; 540 535 … … 548 543 main_btn2_state = btn2 != 0; 549 544 545 /* メインタスクを起動 */ 550 546 ER ret = act_tsk(MAIN_TASK); 551 547 if (ret != E_OK) { … … 561 557 int result = main_timer; 562 558 563 if ((result == TMO_FEVR)564 || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))) {559 if ((result == TMO_FEVR) 560 || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))) { 565 561 result = main_btn_timer; 566 562 } … … 574 570 static void main_progress(int interval) 575 571 { 576 if (main_timer != TMO_FEVR){572 if (main_timer != TMO_FEVR) { 577 573 main_timer -= interval; 578 if (main_timer < 0){574 if (main_timer < 0) { 579 575 main_timer = 0; 580 576 } 581 577 } 582 578 583 if (main_btn_timer != TMO_FEVR){579 if (main_btn_timer != TMO_FEVR) { 584 580 main_btn_timer -= interval; 585 if (main_btn_timer < 0){581 if (main_btn_timer < 0) { 586 582 main_btn_timer = 0; 587 583 } … … 602 598 603 599 eobjid = ecn_get_eobj(esv); 604 if (eobjid == EOBJ_NULL){600 if (eobjid == EOBJ_NULL) { 605 601 syslog(LOG_ERROR, "ecn_get_eobj"); 606 602 } 607 603 608 604 ret = ecn_itr_ini(&enm, esv); 609 if (ret != E_OK){605 if (ret != E_OK) { 610 606 syslog(LOG_ERROR, "ecn_itr_ini"); 611 607 return; 612 608 } 613 609 614 for (;;) {615 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {610 for (;;) { 611 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 616 612 switch (epc) { 617 613 case 0xD6: 618 switch (main_state){614 switch (main_state) { 619 615 case main_state_search: 620 616 if (eobjid == HUMAN_DETECTION_SENSER_ENOD) { … … 628 624 } 629 625 } 630 if (ret != E_BOVR){626 if (ret != E_BOVR) { 631 627 syslog(LOG_ERROR, "ecn_itr_nxt"); 632 628 break; 633 629 } 634 if (enm.is_eof)630 if (enm.is_eof) 635 631 break; 636 632 } … … 646 642 ER ret; 647 643 648 switch (main_state){644 switch (main_state) { 649 645 case main_state_idle: 650 646 if (len < 2) … … 670 666 static void main_timeout() 671 667 { 672 if (main_timer == 0){668 if (main_timer == 0) { 673 669 main_ontimer(); 674 670 } 675 671 676 if (main_btn_timer == 0){672 if (main_btn_timer == 0) { 677 673 main_btn_ontimer(); 678 674 } … … 683 679 static void main_ontimer() 684 680 { 685 switch(main_state){ 681 ER ret; 682 683 switch (main_state) { 684 case main_state_start: 685 /* ECHONETミドルウェアを起動 */ 686 ret = ecn_sta_svc(); 687 if (ret != E_OK) { 688 syslog(LOG_ERROR, "ecn_sta_svc"); 689 } 690 691 /* 1秒後に人体検知センサを検索 */ 692 main_state = main_state_search; 693 main_timer = 1000 * 1000; 694 break; 686 695 case main_state_search: 687 696 /* 人体検知センサ再検索 */ … … 700 709 /* 人体検知センサ検索 */ 701 710 ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6); 702 if (ret != E_OK){711 if (ret != E_OK) { 703 712 syslog(LOG_ERROR, "ecn_esv_inf_req"); 704 713 return; … … 707 716 /* 電文送信 */ 708 717 ret = ecn_snd_esv(esv); 709 if (ret != E_OK){718 if (ret != E_OK) { 710 719 syslog(LOG_ERROR, "ecn_snd_esv"); 711 720 } … … 730 739 731 740 /* ボタン1の処理 */ 732 if ((btn1 != 0) && !main_btn1_state){741 if ((btn1 != 0) && !main_btn1_state) { 733 742 main_btn1_count++; 734 if (main_btn1_count > 10){743 if (main_btn1_count > 10) { 735 744 main_btn1_count = 0; 736 745 main_btn1_state = true; … … 739 748 } 740 749 } 741 else if ((btn1 == 0) && main_btn1_state){750 else if ((btn1 == 0) && main_btn1_state) { 742 751 main_btn1_count++; 743 if (main_btn1_count > 10){752 if (main_btn1_count > 10) { 744 753 main_btn1_count = 0; 745 754 main_btn1_state = false; … … 750 759 751 760 /* ボタン2の処理 */ 752 if ((btn2 != 0) && !main_btn2_state){761 if ((btn2 != 0) && !main_btn2_state) { 753 762 main_btn2_count++; 754 if (main_btn2_count > 10){763 if (main_btn2_count > 10) { 755 764 main_btn2_count = 0; 756 765 main_btn2_state = true; … … 759 768 } 760 769 } 761 else if ((btn2 == 0) && main_btn2_state){770 else if ((btn2 == 0) && main_btn2_state) { 762 771 main_btn2_count++; 763 if (main_btn2_count > 10){772 if (main_btn2_count > 10) { 764 773 main_btn2_count = 0; 765 774 main_btn2_state = false; … … 770 779 } 771 780 772 enum lighting_mode_t {781 enum lighting_mode_t { 773 782 lighting_mode_auto, /* 自動の場合 */ 774 783 lighting_mode_normal, /* 通常灯の場合 */ … … 789 798 790 799 /* 押されて戻った時に処理する */ 791 if (push)800 if (push) 792 801 return; 793 802 … … 798 807 /* プロパティ設定電文作成 */ 799 808 ret = ecn_esv_setc(&esv, GENERAL_LIGHTING_CLASS_EOBJ, 0x80, 1, p_edt); 800 if (ret != E_OK){809 if (ret != E_OK) { 801 810 syslog(LOG_ERROR, "ecn_esv_setc"); 802 811 return; … … 817 826 818 827 /* 押されて戻った時に処理する */ 819 if (push)828 if (push) 820 829 return; 821 830 822 831 /* 点灯モードの切り替え */ 823 switch (main_mode){832 switch (main_mode) { 824 833 /* 自動の場合 */ 825 834 case lighting_mode_auto: … … 851 860 /* プロパティ設定電文作成 */ 852 861 ret = ecn_esv_setc(&esv, GENERAL_LIGHTING_CLASS_EOBJ, 0xB6, 1, p_edt); 853 if (ret != E_OK){862 if (ret != E_OK) { 854 863 syslog(LOG_ERROR, "ecn_esv_setc"); 855 864 return; … … 867 876 868 877 /* 照明がOFFで人体検出ありの場合 */ 869 if (!main_on && state == 0x41){878 if (!main_on && state == 0x41) { 870 879 /* 照明をON */ 871 880 main_on = true; 872 881 } 873 882 /* 照明がOFFで人体検出ありの場合 */ 874 else if (main_on && state == 0x42){883 else if (main_on && state == 0x42) { 875 884 /* 照明をOFF */ 876 885 main_on = false; … … 883 892 /* プロパティ設定電文作成 */ 884 893 ret = ecn_esv_setc(&esv, GENERAL_LIGHTING_CLASS_EOBJ, 0x80, 1, p_edt); 885 if (ret != E_OK){894 if (ret != E_OK) { 886 895 syslog(LOG_ERROR, "ecn_esv_setc"); 887 896 return; -
asp3_tinet_ecnl_arm/trunk/app2_light/src/main.c
r359 r364 79 79 80 80 ID ws_api_mailboxid = MAIN_DATAQUEUE; 81 #ifndef NOUSE_MPF_NET_BUF 81 82 ID ws_mempoolid = MPF_NET_BUF_256; 83 #endif 82 84 83 85 #ifdef IF_ETHER_BTUSB … … 111 113 static void main_timeout(); 112 114 115 extern int ntshell_exit; 116 113 117 int uart_read(char *buf, int cnt, void *extobj) 114 118 { 115 return serial_rea_dat(SIO_PORTID, (char *)buf, cnt); 119 struct main_t *obj = (struct main_t *)extobj; 120 int result; 121 ER ret; 122 int timer; 123 124 obj->prev = obj->now; 125 126 /* タイマー取得 */ 127 timer = main_get_timer(); 128 129 /* 待ち */ 130 ret = serial_trea_dat(SIO_PORTID, buf, cnt, timer); 131 if ((ret < 0) && (ret != E_OK) && (ret != E_TMOUT)) { 132 syslog(LOG_NOTICE, "tslp_tsk ret: %s %d", itron_strerror(ret), timer); 133 ntshell_exit = 1; 134 return -1; 135 } 136 result = (int)ret; 137 138 ret = get_tim(&obj->now); 139 if (ret != E_OK) { 140 syslog(LOG_NOTICE, "get_tim ret: %s", itron_strerror(ret)); 141 ntshell_exit = 1; 142 return -1; 143 } 144 145 /* 時間経過 */ 146 int elapse = obj->now - obj->prev; 147 main_progress(elapse); 148 149 /* タイムアウト処理 */ 150 main_timeout(); 151 152 return result; 116 153 } 117 154 … … 119 156 { 120 157 return serial_wri_dat(SIO_PORTID, buf, cnt); 121 }122 123 unsigned char ntstdio_xi(struct ntstdio_t *handle)124 {125 char buf[1];126 if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)127 return -EIO;128 return buf[0];129 }130 131 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)132 {133 char buf[1];134 buf[0] = c;135 serial_wri_dat(SIO_PORTID, buf, 1);136 158 } 137 159 … … 150 172 main_initialize(); 151 173 152 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);174 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj); 153 175 ntshell_set_prompt(&ntshell, "NTShell>"); 154 176 ntshell_execute(&ntshell); … … 168 190 ER ret; 169 191 170 ntshell_task_init(); 192 #ifdef TOPPERS_OMIT_TECS 193 serial_opn_por(SIO_PORTID); 194 #endif 195 serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV); 196 197 ntshell_task_init(uart_read, uart_write, &main_obj); 171 198 172 199 main_obj.timer = TMO_FEVR; -
asp3_tinet_ecnl_arm/trunk/app2_light/src/main.cfg
r352 r364 54 54 INCLUDE("tinet/tinet_asp.cfg"); 55 55 INCLUDE("tinet_main.cfg"); 56 INCLUDE("netinet/ip_igmp.cfg");57 56 58 57 /* DHCP クライアント */ -
asp3_tinet_ecnl_arm/trunk/app3_human_detec/.cproject
r352 r364 22 22 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 23 23 <option id="toolchain.id" value="gcc-arm-embedded"/> 24 <option id="toolchain.version" value=" 5.4.1.20160919"/>24 <option id="toolchain.version" value="6.3.1.20170620"/> 25 25 </storageModule> 26 26 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 59 59 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.2061453524" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 60 60 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2110510466" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 61 <builder buildPath="${workspace_loc:/app3_human_detec}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.2014365971" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>61 <builder buildPath="${workspace_loc:/app3_human_detec}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.2014365971" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 62 62 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1586235718" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 63 63 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1315128639" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> … … 127 127 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 128 128 <option id="toolchain.id" value="gcc-arm-embedded"/> 129 <option id="toolchain.version" value=" 5.4.1.20160919"/>129 <option id="toolchain.version" value="6.3.1.20170620"/> 130 130 </storageModule> 131 131 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 164 164 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.1077866862" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 165 165 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.22147358" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 166 <builder buildPath="${workspace_loc:/app3_human_detec}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1165377046" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>166 <builder buildPath="${workspace_loc:/app3_human_detec}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1165377046" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 167 167 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.154532541" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 168 168 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1431457153" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> -
asp3_tinet_ecnl_arm/trunk/app3_human_detec/Debug/Makefile
r352 r364 173 173 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 174 174 endif 175 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start175 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 176 176 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 177 177 -I$(SRCDIR)/../btstack/include \ … … 181 181 -I$(SRCDIR)/../usbhost/src \ 182 182 $(INCLUDES) 183 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.183 LDFLAGS := $(LDFLAGS) -L. 184 184 LIBS := $(LIBS) $(CXXLIBS) 185 185 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 215 215 endif 216 216 217 218 # 219 # ネットワークサービスの定義 220 # 221 NO_USE_TINET_LIBRARY = true 222 223 # ネットワークインタフェースの選択、何れか一つ選択する。 224 NET_IF = ether 225 226 # イーサネット・ディバイスドライバの選択 227 NET_DEV = if_btusb 228 229 # ネットワーク層の選択 230 #SUPPORT_INET6 = true 231 SUPPORT_INET4 = true 232 233 # API に組込む機能の選択 234 #API_CFG_IP4MAPPED_ADDR = true 235 236 # トランスポート層の選択 237 SUPPORT_TCP = true 238 SUPPORT_UDP = true 239 240 # IGMPを有効に設定 241 SUPPORT_IGMP = true 242 243 # 244 # ネットワークサービスの Makefile のインクルード 245 # 246 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 217 ifdef TINETDIR 218 # 219 # ネットワークサービスの定義 220 # 221 NO_USE_TINET_LIBRARY = true 222 223 # ネットワークインタフェースの選択、何れか一つ選択する。 224 NET_IF = ether 225 226 # イーサネット・ディバイスドライバの選択 227 NET_DEV = if_btusb 228 229 # ネットワーク層の選択 230 #SUPPORT_INET6 = true 231 SUPPORT_INET4 = true 232 233 # API に組込む機能の選択 234 #API_CFG_IP4MAPPED_ADDR = true 235 236 # トランスポート層の選択 237 SUPPORT_TCP = true 238 SUPPORT_UDP = true 239 240 # IGMPを有効に設定 241 SUPPORT_IGMP = true 242 243 # 244 # ネットワークサービスの Makefile のインクルード 245 # 246 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 247 endif 247 248 248 249 # … … 277 278 # コンフィギュレータに関する定義 278 279 # 279 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 280 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 280 ifndef TINETDIR 281 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 282 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 283 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 284 else 285 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 286 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 281 287 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 282 288 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 284 290 --symval-table ../../ntshell/echonet/echonet_sym.def \ 285 291 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 292 endif 286 293 CFG_ASMOBJS := $(CFG_ASMOBJS) 287 294 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 429 436 430 437 # 438 # 並列makeのための依存関係の定義 439 # 440 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 441 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 442 | offset.timestamp 443 444 # 431 445 # 特別な依存関係の定義 432 446 # … … 437 451 # 438 452 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 439 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \453 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 440 454 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 441 455 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app3_human_detec/DebugEther/Makefile
r352 r364 171 171 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 172 172 endif 173 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start173 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 174 174 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 175 175 -I$(SRCDIR)/../btstack/include \ … … 179 179 -I$(SRCDIR)/../usbhost/src \ 180 180 $(INCLUDES) 181 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.181 LDFLAGS := $(LDFLAGS) -L. 182 182 LIBS := $(LIBS) $(CXXLIBS) 183 183 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 213 213 endif 214 214 215 216 #217 # ネットワークサービスの定義218 #219 NO_USE_TINET_LIBRARY = true220 221 # ネットワークインタフェースの選択、何れか一つ選択する。222 NET_IF = ether223 224 # イーサネット・ディバイスドライバの選択215 ifdef TINETDIR 216 # 217 # ネットワークサービスの定義 218 # 219 NO_USE_TINET_LIBRARY = true 220 221 # ネットワークインタフェースの選択、何れか一つ選択する。 222 NET_IF = ether 223 224 # イーサネット・ディバイスドライバの選択 225 225 NET_DEV = if_mbed 226 226 227 # ネットワーク層の選択 228 #SUPPORT_INET6 = true 229 SUPPORT_INET4 = true 230 231 # API に組込む機能の選択 232 #API_CFG_IP4MAPPED_ADDR = true 233 234 # トランスポート層の選択 235 SUPPORT_TCP = true 236 SUPPORT_UDP = true 237 238 # IGMPを有効に設定 239 SUPPORT_IGMP = true 240 241 # 242 # ネットワークサービスの Makefile のインクルード 243 # 244 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 227 # ネットワーク層の選択 228 #SUPPORT_INET6 = true 229 SUPPORT_INET4 = true 230 231 # API に組込む機能の選択 232 #API_CFG_IP4MAPPED_ADDR = true 233 234 # トランスポート層の選択 235 SUPPORT_TCP = true 236 SUPPORT_UDP = true 237 238 # IGMPを有効に設定 239 SUPPORT_IGMP = true 240 241 # 242 # ネットワークサービスの Makefile のインクルード 243 # 244 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 245 endif 245 246 246 247 # … … 275 276 # コンフィギュレータに関する定義 276 277 # 277 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 278 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 278 ifndef TINETDIR 279 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 280 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 281 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 282 else 283 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 284 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 279 285 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 280 286 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 282 288 --symval-table ../../ntshell/echonet/echonet_sym.def \ 283 289 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 290 endif 284 291 CFG_ASMOBJS := $(CFG_ASMOBJS) 285 292 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 427 434 428 435 # 436 # 並列makeのための依存関係の定義 437 # 438 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 439 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 440 | offset.timestamp 441 442 # 429 443 # 特別な依存関係の定義 430 444 # … … 435 449 # 436 450 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 437 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \451 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 438 452 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 439 453 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app3_human_detec/src/echonet_main.c
r352 r364 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2014-2018 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ 37 37 38 /* 38 /* 39 39 * サンプルプログラム(1)の本体 40 40 */ … … 94 94 { 95 95 /* サイズが1以外は受け付けない */ 96 if (size != 1)96 if (size != 1) 97 97 return 0; 98 98 99 99 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 100 100 101 switch (*(uint8_t *)src){101 switch (*(uint8_t *)src) { 102 102 /* ONの場合 */ 103 103 case 0x30: … … 126 126 { 127 127 /* サイズが1以外は受け付けない */ 128 if (size != 1)128 if (size != 1) 129 129 return 0; 130 130 131 131 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 132 132 133 switch (*(uint8_t *)src){133 switch (*(uint8_t *)src) { 134 134 /* 異常発生ありの場合 */ 135 135 case 0x41: … … 152 152 { 153 153 /* サイズが1以外は受け付けない */ 154 if (size != 1)155 return 0; 156 157 if ((*(uint8_t *)src >= 0x31) && (*(uint8_t *)src <= 0x38)){154 if (size != 1) 155 return 0; 156 157 if ((*(uint8_t *)src >= 0x31) && (*(uint8_t *)src <= 0x38)) { 158 158 *((uint8_t *)item->exinf) = *((uint8_t *)src); 159 159 } 160 160 /* 上記以外は受け付けない */ 161 else {161 else { 162 162 return 0; 163 163 } … … 180 180 181 181 /* サイズが1以外は受け付けない */ 182 if (size != 1)182 if (size != 1) 183 183 return 0; 184 184 185 185 *anno = false; 186 186 187 if ((*(uint8_t *)src >= 0x31) && (*(uint8_t *)src <= 0x38)){187 if ((*(uint8_t *)src >= 0x31) && (*(uint8_t *)src <= 0x38)) { 188 188 /* 以前の検知レベルを保存 */ 189 189 prev_state = eobj->state; … … 197 197 198 198 /* 人体検知状態に変化があった場合 */ 199 if((prev_state < eobj->threshold) != (eobj->state < eobj->threshold)) 200 { 199 if ((prev_state < eobj->threshold) != (eobj->state < eobj->threshold)) { 201 200 /* プロパティ通知 */ 202 201 *anno = true; … … 204 203 } 205 204 /* 上記以外は受け付けない */ 206 else {205 else { 207 206 return 0; 208 207 } … … 211 210 } 212 211 213 /* 212 /* 214 213 * 人体検知状態取得関数 215 214 */ … … 219 218 220 219 /* 閾値より検知レベルが低い場合 */ 221 if (eobj->state < eobj->threshold){220 if (eobj->state < eobj->threshold) { 222 221 /* 人体検知なし */ 223 222 ((uint8_t *)dst)[0] = 0x42; 224 223 } 225 224 /* 閾値より検知レベルが高い場合 */ 226 else {225 else { 227 226 /* 人体検知あり */ 228 227 ((uint8_t *)dst)[0] = 0x41; … … 255 254 256 255 ret2 = get_tim(&now); 257 if (ret2 != E_OK) {256 if (ret2 != E_OK) { 258 257 syslog(LOG_ERROR, "get_tim"); 259 258 return; 260 259 } 261 260 262 for (;;){261 for (;;) { 263 262 prev = now; 264 263 … … 268 267 /* 応答電文待ち */ 269 268 ret = ecn_trcv_esv(&esv, timer); 270 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {269 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) { 271 270 syslog(LOG_ERROR, "ecn_trcv_esv"); 272 271 break; … … 274 273 275 274 ret2 = get_tim(&now); 276 if (ret2 != E_OK) {275 if (ret2 != E_OK) { 277 276 syslog(LOG_ERROR, "get_tim"); 278 277 break; … … 289 288 /* 領域解放 */ 290 289 ret = ecn_rel_esv(esv); 291 if (ret != E_OK) {290 if (ret != E_OK) { 292 291 syslog(LOG_ERROR, "ecn_rel_esv"); 293 292 break; … … 298 297 /* 応答電文待ちの割り込みデータ取得 */ 299 298 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 300 if (ret != E_OK) {299 if (ret != E_OK) { 301 300 syslog(LOG_ERROR, "ecn_get_brk_dat"); 302 301 break; … … 308 307 /* 領域解放 */ 309 308 ret = ecn_rel_esv(esv); 310 if (ret != E_OK) {309 if (ret != E_OK) { 311 310 syslog(LOG_ERROR, "ecn_rel_esv"); 312 311 break; … … 319 318 } 320 319 321 bool_t started = false;322 323 320 void echonet_change_netif_link(uint8_t link_up, uint8_t up) 324 321 { … … 328 325 return; 329 326 330 if (up && !started) { 331 started = true; 332 333 /* ECHONETミドルウェアを起動 */ 334 ret = ecn_sta_svc(); 335 if (ret != E_OK) 336 return; 337 338 /* ECHONETミドルウェアを起動するのを待つ */ 339 dly_tsk(100); 327 if (up) { 328 /* インスタンスリスト通知の送信 */ 329 ret = ecn_ntf_inl(); 330 if (ret != E_OK) { 331 syslog(LOG_ERROR, "ecn_ntf_inl"); 332 } 340 333 } 341 334 … … 351 344 } 352 345 353 enum main_state_t{ 346 enum main_state_t { 347 main_state_start, 354 348 main_state_idle, 355 349 }; 356 350 357 351 int main_timer = TMO_FEVR; 358 enum main_state_t main_state = main_state_ idle;352 enum main_state_t main_state = main_state_start; 359 353 bool_t main_btn1_state; 360 354 int main_btn1_count = 0; … … 386 380 gpio_write(&led_red, 0); 387 381 388 /* 10ms後にボタン状態を確認 */ 389 main_timer = 10 * 1000; 382 /* ECHONETミドルウェアを起動するのを待つ */ 383 main_state = main_state_start; 384 main_timer = 1000 * 1000; 390 385 391 386 /* アナログ入力の初期化 */ … … 398 393 main_btn2_state = btn2 != 0; 399 394 395 /* メインタスクを起動 */ 400 396 ER ret = act_tsk(MAIN_TASK); 401 397 if (ret != E_OK) { … … 417 413 static void main_progress(int interval) 418 414 { 419 if (main_timer == TMO_FEVR)415 if (main_timer == TMO_FEVR) 420 416 return; 421 417 422 418 main_timer -= interval; 423 if (main_timer < 0){419 if (main_timer < 0) { 424 420 main_timer = 0; 425 421 } … … 438 434 439 435 ret = ecn_itr_ini(&enm, esv); 440 if (ret != E_OK){436 if (ret != E_OK) { 441 437 syslog(LOG_ERROR, "ecn_itr_ini"); 442 438 return; 443 439 } 444 440 445 for (;;) {446 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {441 for (;;) { 442 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 447 443 switch (epc) { 448 444 case 0x80: … … 452 448 } 453 449 } 454 if (ret != E_BOVR){450 if (ret != E_BOVR) { 455 451 syslog(LOG_ERROR, "ecn_itr_nxt"); 456 452 break; 457 453 } 458 if (enm.is_eof)454 if (enm.is_eof) 459 455 break; 460 456 } … … 466 462 static void main_break_wait(uint8_t *brkdat, int32_t len) 467 463 { 468 switch (main_state){464 switch (main_state) { 469 465 case main_state_idle: 470 466 break; … … 488 484 static void main_timeout() 489 485 { 486 ER ret; 490 487 uint8_t btn1, btn2; 491 488 uint16_t ad_value; 492 489 uint8_t ad_level; 493 490 494 if(main_timer != 0) 495 return; 496 497 switch(main_state){ 491 if (main_timer != 0) 492 return; 493 494 switch (main_state) { 495 case main_state_start: 496 /* ECHONETミドルウェアを起動 */ 497 ret = ecn_sta_svc(); 498 if (ret != E_OK) { 499 syslog(LOG_ERROR, "ecn_sta_svc"); 500 } 501 502 /* 10ms後にボタン状態を確認 */ 503 main_state = main_state_idle; 504 main_timer = 10 * 1000; 505 break; 498 506 case main_state_idle: 499 507 /* 10ms後にボタン状態を確認 */ … … 507 515 508 516 main_ad_pos++; 509 if (main_ad_pos >= main_ad_table_count){517 if (main_ad_pos >= main_ad_table_count) { 510 518 main_ad_pos = 0; 511 519 } 512 520 513 ad_level = (((main_ad_avelage / main_ad_table_count) >> 9) & 0x7) + 1;514 if (main_ad_level != ad_level){521 ad_level = 8 - (((main_ad_avelage / main_ad_table_count) >> 9) & 0x7); 522 if (main_ad_level != ad_level) { 515 523 /* 1秒変化が続いたら */ 516 if (main_count < 100){524 if (main_count < 100) { 517 525 main_count++; 518 526 } 519 else {527 else { 520 528 main_ad_level = ad_level; 521 529 … … 524 532 } 525 533 } 526 else {534 else { 527 535 main_count = 0; 528 536 } … … 533 541 534 542 /* ボタン1の処理 */ 535 if ((btn1 != 0) && !main_btn1_state){543 if ((btn1 != 0) && !main_btn1_state) { 536 544 main_btn1_count++; 537 if (main_btn1_count > 10){545 if (main_btn1_count > 10) { 538 546 main_btn1_count = 0; 539 547 main_btn1_state = true; … … 542 550 } 543 551 } 544 else if ((btn1 == 0) && main_btn1_state){552 else if ((btn1 == 0) && main_btn1_state) { 545 553 main_btn1_count++; 546 if (main_btn1_count > 10){554 if (main_btn1_count > 10) { 547 555 main_btn1_count = 0; 548 556 main_btn1_state = false; … … 553 561 554 562 /* ボタン2の処理 */ 555 if ((btn2 != 0) && !main_btn2_state){563 if ((btn2 != 0) && !main_btn2_state) { 556 564 main_btn2_count++; 557 if (main_btn2_count > 10){565 if (main_btn2_count > 10) { 558 566 main_btn2_count = 0; 559 567 main_btn2_state = true; … … 562 570 } 563 571 } 564 else if ((btn2 == 0) && main_btn2_state){572 else if ((btn2 == 0) && main_btn2_state) { 565 573 main_btn2_count++; 566 if (main_btn2_count > 10){574 if (main_btn2_count > 10) { 567 575 main_btn2_count = 0; 568 576 main_btn2_state = false; … … 588 596 /* プロパティ設定電文作成 */ 589 597 ret = ecn_esv_setc(&esv, HUMAN_DETECTION_SENSOR_EOBJ, 0xB1, 1, p_edt); 590 if (ret != E_OK){598 if (ret != E_OK) { 591 599 syslog(LOG_ERROR, "ecn_esv_setc"); 592 600 return; … … 610 618 611 619 /* 押されて戻った時に処理する */ 612 if (push)620 if (push) 613 621 return; 614 622 615 623 /* 人体検知状態 */ 616 if (!main_rev){624 if (!main_rev) { 617 625 main_level--; 618 if (main_level < 1){626 if (main_level < 1) { 619 627 main_level = 1; 620 628 main_rev = true; 621 629 } 622 630 } 623 else {631 else { 624 632 main_level++; 625 if (main_level > 8){633 if (main_level > 8) { 626 634 main_level = 8; 627 635 main_rev = false; … … 633 641 /* プロパティ設定電文作成 */ 634 642 ret = ecn_esv_setc(&esv, HUMAN_DETECTION_SENSOR_EOBJ, 0xB1, 1, p_edt); 635 if (ret != E_OK){643 if (ret != E_OK) { 636 644 syslog(LOG_ERROR, "ecn_esv_setc"); 637 645 return; … … 652 660 653 661 /* 押されて戻った時に処理する */ 654 if (push)662 if (push) 655 663 return; 656 664 657 665 /* 人体検知状態 */ 658 if (!main_rev){666 if (!main_rev) { 659 667 main_level++; 660 if (main_level > 8){668 if (main_level > 8) { 661 669 main_level = 8; 662 670 main_rev = false; 663 671 } 664 672 } 665 else {673 else { 666 674 main_level--; 667 if (main_level < 1){675 if (main_level < 1) { 668 676 main_level = 1; 669 677 main_rev = true; … … 675 683 /* プロパティ設定電文作成 */ 676 684 ret = ecn_esv_setc(&esv, HUMAN_DETECTION_SENSOR_EOBJ, 0xB1, 1, p_edt); 677 if (ret != E_OK){685 if (ret != E_OK) { 678 686 syslog(LOG_ERROR, "ecn_esv_setc"); 679 687 return; -
asp3_tinet_ecnl_arm/trunk/app3_human_detec/src/main.c
r359 r364 79 79 80 80 ID ws_api_mailboxid = MAIN_DATAQUEUE; 81 #ifndef NOUSE_MPF_NET_BUF 81 82 ID ws_mempoolid = MPF_NET_BUF_256; 83 #endif 82 84 83 85 #ifdef IF_ETHER_BTUSB … … 111 113 static void main_timeout(); 112 114 115 extern int ntshell_exit; 116 113 117 int uart_read(char *buf, int cnt, void *extobj) 114 118 { 115 return serial_rea_dat(SIO_PORTID, (char *)buf, cnt); 119 struct main_t *obj = (struct main_t *)extobj; 120 int result; 121 ER ret; 122 int timer; 123 124 obj->prev = obj->now; 125 126 /* タイマー取得 */ 127 timer = main_get_timer(); 128 129 /* 待ち */ 130 ret = serial_trea_dat(SIO_PORTID, buf, cnt, timer); 131 if ((ret < 0) && (ret != E_OK) && (ret != E_TMOUT)) { 132 syslog(LOG_NOTICE, "tslp_tsk ret: %s %d", itron_strerror(ret), timer); 133 ntshell_exit = 1; 134 return -1; 135 } 136 result = (int)ret; 137 138 ret = get_tim(&obj->now); 139 if (ret != E_OK) { 140 syslog(LOG_NOTICE, "get_tim ret: %s", itron_strerror(ret)); 141 ntshell_exit = 1; 142 return -1; 143 } 144 145 /* 時間経過 */ 146 int elapse = obj->now - obj->prev; 147 main_progress(elapse); 148 149 /* タイムアウト処理 */ 150 main_timeout(); 151 152 return result; 116 153 } 117 154 … … 119 156 { 120 157 return serial_wri_dat(SIO_PORTID, buf, cnt); 121 }122 123 unsigned char ntstdio_xi(struct ntstdio_t *handle)124 {125 char buf[1];126 if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)127 return -EIO;128 return buf[0];129 }130 131 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)132 {133 char buf[1];134 buf[0] = c;135 serial_wri_dat(SIO_PORTID, buf, 1);136 158 } 137 159 … … 150 172 main_initialize(); 151 173 152 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);174 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj); 153 175 ntshell_set_prompt(&ntshell, "NTShell>"); 154 176 ntshell_execute(&ntshell); … … 168 190 ER ret; 169 191 170 ntshell_task_init(); 192 #ifdef TOPPERS_OMIT_TECS 193 serial_opn_por(SIO_PORTID); 194 #endif 195 serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV); 196 197 ntshell_task_init(uart_read, uart_write, &main_obj); 171 198 172 199 main_obj.timer = TMO_FEVR; -
asp3_tinet_ecnl_arm/trunk/app3_human_detec/src/main.cfg
r352 r364 54 54 INCLUDE("tinet/tinet_asp.cfg"); 55 55 INCLUDE("tinet_main.cfg"); 56 INCLUDE("netinet/ip_igmp.cfg");57 56 58 57 /* DHCP クライアント */ -
asp3_tinet_ecnl_arm/trunk/app4_aircon/.cproject
r352 r364 22 22 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 23 23 <option id="toolchain.id" value="gcc-arm-embedded"/> 24 <option id="toolchain.version" value=" 5.4.1.20160919"/>24 <option id="toolchain.version" value="6.3.1.20170620"/> 25 25 </storageModule> 26 26 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 59 59 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.1501102219" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 60 60 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1085912920" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 61 <builder buildPath="${workspace_loc:/app4_aircon}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1132488688" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>61 <builder buildPath="${workspace_loc:/app4_aircon}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1132488688" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 62 62 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1278248884" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 63 63 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1219404387" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> … … 127 127 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 128 128 <option id="toolchain.id" value="gcc-arm-embedded"/> 129 <option id="toolchain.version" value=" 5.4.1.20160919"/>129 <option id="toolchain.version" value="6.3.1.20170620"/> 130 130 </storageModule> 131 131 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 164 164 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.956370110" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 165 165 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1652770796" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 166 <builder buildPath="${workspace_loc:/app4_aircon}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.994484673" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>166 <builder buildPath="${workspace_loc:/app4_aircon}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.994484673" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 167 167 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1242790859" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 168 168 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1960328126" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> -
asp3_tinet_ecnl_arm/trunk/app4_aircon/Debug/Makefile
r352 r364 179 179 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 180 180 endif 181 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start181 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 182 182 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 183 183 -I$(SRCDIR)/../btstack/include \ … … 187 187 -I$(SRCDIR)/../usbhost/src \ 188 188 $(INCLUDES) 189 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.189 LDFLAGS := $(LDFLAGS) -L. 190 190 LIBS := $(LIBS) $(CXXLIBS) 191 191 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 198 198 APPL_COBJS := $(APPL_COBJS) netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o 199 199 APPLDIRS := $(APPLDIRS) ../../ntshell/lcd 200 APPL_COBJS := $(APPL_COBJS) draw_font.o misaki_font.o 200 APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o 201 APPL_CFLAGS := $(APPL_CFLAGS) -DSHNM12_FONT 201 202 202 203 # … … 223 224 endif 224 225 225 226 # 227 # ネットワークサービスの定義 228 # 229 NO_USE_TINET_LIBRARY = true 230 231 # ネットワークインタフェースの選択、何れか一つ選択する。 232 NET_IF = ether 233 234 # イーサネット・ディバイスドライバの選択 235 NET_DEV = if_btusb 236 237 # ネットワーク層の選択 238 #SUPPORT_INET6 = true 239 SUPPORT_INET4 = true 240 241 # API に組込む機能の選択 242 #API_CFG_IP4MAPPED_ADDR = true 243 244 # トランスポート層の選択 245 SUPPORT_TCP = true 246 SUPPORT_UDP = true 247 248 # IGMPを有効に設定 249 SUPPORT_IGMP = true 250 251 # 252 # ネットワークサービスの Makefile のインクルード 253 # 254 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 226 ifdef TINETDIR 227 # 228 # ネットワークサービスの定義 229 # 230 NO_USE_TINET_LIBRARY = true 231 232 # ネットワークインタフェースの選択、何れか一つ選択する。 233 NET_IF = ether 234 235 # イーサネット・ディバイスドライバの選択 236 NET_DEV = if_btusb 237 238 # ネットワーク層の選択 239 #SUPPORT_INET6 = true 240 SUPPORT_INET4 = true 241 242 # API に組込む機能の選択 243 #API_CFG_IP4MAPPED_ADDR = true 244 245 # トランスポート層の選択 246 SUPPORT_TCP = true 247 SUPPORT_UDP = true 248 249 # IGMPを有効に設定 250 SUPPORT_IGMP = true 251 252 # 253 # ネットワークサービスの Makefile のインクルード 254 # 255 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 256 endif 255 257 256 258 # … … 285 287 # コンフィギュレータに関する定義 286 288 # 287 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 288 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 289 ifndef TINETDIR 290 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 291 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 292 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 293 else 294 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 295 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 289 296 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 290 297 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 292 299 --symval-table ../../ntshell/echonet/echonet_sym.def \ 293 300 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 301 endif 294 302 CFG_ASMOBJS := $(CFG_ASMOBJS) 295 303 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 437 445 438 446 # 447 # 並列makeのための依存関係の定義 448 # 449 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 450 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 451 | offset.timestamp 452 453 # 439 454 # 特別な依存関係の定義 440 455 # … … 445 460 # 446 461 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 447 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \462 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 448 463 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 449 464 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app4_aircon/DebugEther/Makefile
r352 r364 177 177 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 178 178 endif 179 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start179 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 180 180 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 181 181 -I$(SRCDIR)/../btstack/include \ … … 185 185 -I$(SRCDIR)/../usbhost/src \ 186 186 $(INCLUDES) 187 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.187 LDFLAGS := $(LDFLAGS) -L. 188 188 LIBS := $(LIBS) $(CXXLIBS) 189 189 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 196 196 APPL_COBJS := $(APPL_COBJS) netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o 197 197 APPLDIRS := $(APPLDIRS) ../../ntshell/lcd 198 APPL_COBJS := $(APPL_COBJS) draw_font.o misaki_font.o 198 APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o 199 APPL_CFLAGS := $(APPL_CFLAGS) -DSHNM12_FONT 199 200 200 201 # … … 221 222 endif 222 223 223 224 #225 # ネットワークサービスの定義226 #227 NO_USE_TINET_LIBRARY = true228 229 # ネットワークインタフェースの選択、何れか一つ選択する。230 NET_IF = ether231 232 # イーサネット・ディバイスドライバの選択224 ifdef TINETDIR 225 # 226 # ネットワークサービスの定義 227 # 228 NO_USE_TINET_LIBRARY = true 229 230 # ネットワークインタフェースの選択、何れか一つ選択する。 231 NET_IF = ether 232 233 # イーサネット・ディバイスドライバの選択 233 234 NET_DEV = if_mbed 234 235 235 # ネットワーク層の選択 236 #SUPPORT_INET6 = true 237 SUPPORT_INET4 = true 238 239 # API に組込む機能の選択 240 #API_CFG_IP4MAPPED_ADDR = true 241 242 # トランスポート層の選択 243 SUPPORT_TCP = true 244 SUPPORT_UDP = true 245 246 # IGMPを有効に設定 247 SUPPORT_IGMP = true 248 249 # 250 # ネットワークサービスの Makefile のインクルード 251 # 252 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 236 # ネットワーク層の選択 237 #SUPPORT_INET6 = true 238 SUPPORT_INET4 = true 239 240 # API に組込む機能の選択 241 #API_CFG_IP4MAPPED_ADDR = true 242 243 # トランスポート層の選択 244 SUPPORT_TCP = true 245 SUPPORT_UDP = true 246 247 # IGMPを有効に設定 248 SUPPORT_IGMP = true 249 250 # 251 # ネットワークサービスの Makefile のインクルード 252 # 253 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 254 endif 253 255 254 256 # … … 283 285 # コンフィギュレータに関する定義 284 286 # 285 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 286 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 287 ifndef TINETDIR 288 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 289 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 290 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 291 else 292 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 293 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 287 294 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 288 295 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 290 297 --symval-table ../../ntshell/echonet/echonet_sym.def \ 291 298 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 299 endif 292 300 CFG_ASMOBJS := $(CFG_ASMOBJS) 293 301 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 435 443 436 444 # 445 # 並列makeのための依存関係の定義 446 # 447 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 448 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 449 | offset.timestamp 450 451 # 437 452 # 特別な依存関係の定義 438 453 # … … 443 458 # 444 459 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 445 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \460 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 446 461 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 447 462 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app4_aircon/src/echonet_main.c
r352 r364 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2014 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ 37 37 38 /* 38 /* 39 39 * サンプルプログラム(1)の本体 40 40 */ … … 55 55 #include "adafruit_st7735.h" 56 56 #include "draw_font.h" 57 #include <tinet_defs.h> 58 #include <tinet_config.h> 59 #include <netinet/in.h> 60 #include <netinet/in_var.h> 61 #include <net/ethernet.h> 62 #include <net/if_var.h> 63 64 extern uint8_t mac_addr[6]; 57 65 58 66 /* TODO: メーカーコードを設定 */ … … 184 192 185 193 /* サイズが1以外は受け付けない */ 186 if (size != 1)194 if (size != 1) 187 195 return 0; 188 196 189 197 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 190 198 191 switch (*(uint8_t *)src){199 switch (*(uint8_t *)src) { 192 200 /* ONの場合 */ 193 201 case 0x30: … … 198 206 data[0] = 0x80; 199 207 ret = ecn_brk_wai(data, sizeof(data)); 200 if (ret != E_OK){208 if (ret != E_OK) { 201 209 syslog(LOG_ERROR, "ecn_brk_wai"); 202 210 return 2; … … 217 225 { 218 226 /* サイズが1以外は受け付けない */ 219 if (size != 1)227 if (size != 1) 220 228 return 0; 221 229 222 230 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 223 231 224 switch (*(uint8_t *)src){232 switch (*(uint8_t *)src) { 225 233 /* 異常発生ありの場合 */ 226 234 case 0x41: … … 246 254 247 255 /* サイズが1以外は受け付けない */ 248 if (size != 1)256 if (size != 1) 249 257 return 0; 250 258 251 switch (*(uint8_t *)src){259 switch (*(uint8_t *)src) { 252 260 /* 自動の場合 */ 253 261 case 0x41: … … 266 274 data[0] = 0xB0; 267 275 ret = ecn_brk_wai(data, sizeof(data)); 268 if (ret != E_OK){276 if (ret != E_OK) { 269 277 syslog(LOG_ERROR, "ecn_brk_wai"); 270 278 return 2; … … 288 296 289 297 /* サイズが1以外は受け付けない */ 290 if (size != 1)298 if (size != 1) 291 299 return 0; 292 300 293 301 /* 0℃~50℃ */ 294 if ((*(uint8_t *)src >= 0x00) && (*(uint8_t *)src <= 0x32)){302 if ((*(uint8_t *)src >= 0x00) && (*(uint8_t *)src <= 0x32)) { 295 303 *((uint8_t *)item->exinf) = *((uint8_t *)src); 296 304 /* メインタスクに通知 */ 297 305 data[0] = 0xB3; 298 306 ret = ecn_brk_wai(data, sizeof(data)); 299 if (ret != E_OK){307 if (ret != E_OK) { 300 308 syslog(LOG_ERROR, "ecn_brk_wai"); 301 309 return 2; … … 303 311 } 304 312 /* 上記以外は受け付けない */ 305 else {313 else { 306 314 return 0; 307 315 } … … 333 341 334 342 ret2 = get_tim(&now); 335 if (ret2 != E_OK) {343 if (ret2 != E_OK) { 336 344 syslog(LOG_ERROR, "get_tim"); 337 345 return; 338 346 } 339 347 340 for (;;){348 for (;;) { 341 349 prev = now; 342 350 … … 346 354 /* 応答電文待ち */ 347 355 ret = ecn_trcv_esv(&esv, timer); 348 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {356 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) { 349 357 syslog(LOG_ERROR, "ecn_trcv_esv"); 350 358 break; … … 352 360 353 361 ret2 = get_tim(&now); 354 if (ret2 != E_OK) {362 if (ret2 != E_OK) { 355 363 syslog(LOG_ERROR, "get_tim"); 356 364 break; … … 367 375 /* 領域解放 */ 368 376 ret = ecn_rel_esv(esv); 369 if (ret != E_OK) {377 if (ret != E_OK) { 370 378 syslog(LOG_ERROR, "ecn_rel_esv"); 371 379 break; … … 376 384 /* 応答電文待ちの割り込みデータ取得 */ 377 385 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 378 if (ret != E_OK) {386 if (ret != E_OK) { 379 387 syslog(LOG_ERROR, "ecn_get_brk_dat"); 380 388 break; … … 386 394 /* 領域解放 */ 387 395 ret = ecn_rel_esv(esv); 388 if (ret != E_OK) {396 if (ret != E_OK) { 389 397 syslog(LOG_ERROR, "ecn_rel_esv"); 390 398 break; … … 397 405 } 398 406 399 bool_t started = false;400 401 407 void echonet_change_netif_link(uint8_t link_up, uint8_t up) 402 408 { … … 406 412 return; 407 413 408 if (up && !started) { 409 started = true; 410 411 /* ECHONETミドルウェアを起動 */ 412 ret = ecn_sta_svc(); 413 if (ret != E_OK) 414 return; 415 416 /* ECHONETミドルウェアを起動するのを待つ */ 417 dly_tsk(100); 414 if (up) { 415 /* インスタンスリスト通知の送信 */ 416 ret = ecn_ntf_inl(); 417 if (ret != E_OK) { 418 syslog(LOG_ERROR, "ecn_ntf_inl"); 419 } 418 420 } 419 421 … … 421 423 uint8_t data[2]; 422 424 data[0] = 0x01; 423 data[1] = up ? 0x01 : 0x02;425 data[1] = (up ? 0x01 : 0x02) | (link_up ? 0x10 : 0x20); 424 426 ret = ecn_brk_wai(data, sizeof(data)); 425 427 if (ret != E_OK) { … … 429 431 } 430 432 431 enum main_state_t{ 433 enum main_state_t { 434 main_state_start, 432 435 main_state_idle, 433 436 main_state_search, … … 440 443 441 444 int main_timer = TMO_FEVR; 442 enum main_state_t main_state = main_state_ idle;445 enum main_state_t main_state = main_state_start; 443 446 int16_t main_ave_templ; 444 447 bool_t main_tmp_fan_on; … … 470 473 LCD_DrawProp_t drawProp; 471 474 472 enum main_rly_state_t {475 enum main_rly_state_t { 473 476 main_rly_state_off, 474 477 main_rly_state_on … … 486 489 uint8_t btn; 487 490 488 /* 1秒後に温度センサーを探す */ 491 /* ECHONETミドルウェアを起動するのを待つ */ 492 main_state = main_state_start; 489 493 main_timer = 1000 * 1000; 490 494 … … 505 509 spi_init(&lcd.hspi, P10_14, P10_15, P10_12, NC); 506 510 spi_format(&lcd.hspi, 8, 0, 0); 507 spi_frequency(&lcd.hspi, 1000000);511 spi_frequency(&lcd.hspi, 4000000); 508 512 509 513 gpio_init_out(&lcd.cs_pin, P10_13); … … 524 528 main_lcd_timer = 1000 * 1000; 525 529 530 /* メインタスクを起動 */ 526 531 ER ret = act_tsk(MAIN_TASK); 527 532 if (ret != E_OK) { … … 537 542 int result = main_timer; 538 543 539 if ((result == TMO_FEVR)540 || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))) {544 if ((result == TMO_FEVR) 545 || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))) { 541 546 result = main_btn_timer; 542 547 } 543 548 544 if ((result == TMO_FEVR)545 || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) {549 if ((result == TMO_FEVR) 550 || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) { 546 551 result = main_lcd_timer; 547 552 } 548 553 549 if ((result == TMO_FEVR)550 || ((main_rly_timer != TMO_FEVR) && (main_rly_timer < result))) {554 if ((result == TMO_FEVR) 555 || ((main_rly_timer != TMO_FEVR) && (main_rly_timer < result))) { 551 556 result = main_rly_timer; 552 557 } … … 560 565 static void main_progress(int interval) 561 566 { 562 if (main_timer != TMO_FEVR){567 if (main_timer != TMO_FEVR) { 563 568 main_timer -= interval; 564 if (main_timer < 0){569 if (main_timer < 0) { 565 570 main_timer = 0; 566 571 } 567 572 } 568 573 569 if (main_btn_timer != TMO_FEVR){574 if (main_btn_timer != TMO_FEVR) { 570 575 main_btn_timer -= interval; 571 if (main_btn_timer < 0){576 if (main_btn_timer < 0) { 572 577 main_btn_timer = 0; 573 578 } 574 579 } 575 580 576 if (main_lcd_timer != TMO_FEVR){581 if (main_lcd_timer != TMO_FEVR) { 577 582 main_lcd_timer -= interval; 578 if (main_lcd_timer < 0){583 if (main_lcd_timer < 0) { 579 584 main_lcd_timer = 0; 580 585 } 581 586 } 582 587 583 if (main_rly_timer != TMO_FEVR){588 if (main_rly_timer != TMO_FEVR) { 584 589 main_rly_timer -= interval; 585 if (main_rly_timer < 0){590 if (main_rly_timer < 0) { 586 591 main_rly_timer = 0; 587 592 } … … 605 610 606 611 eobjid = ecn_get_eobj(esv); 607 if (eobjid == EOBJ_NULL){612 if (eobjid == EOBJ_NULL) { 608 613 syslog(LOG_ERROR, "ecn_get_eobj"); 609 614 } 610 615 611 616 ret = ecn_itr_ini(&enm, esv); 612 if (ret != E_OK){617 if (ret != E_OK) { 613 618 syslog(LOG_ERROR, "ecn_itr_ini"); 614 619 return; 615 620 } 616 621 617 for (;;) {618 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {622 for (;;) { 623 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 619 624 switch (epc) { 620 625 case 0xD6: 621 switch (main_state){626 switch (main_state) { 622 627 case main_state_idle: 623 628 case main_state_search: … … 630 635 break; 631 636 case 0xE0: 632 switch (main_state){637 switch (main_state) { 633 638 case main_state_survey_01: 634 639 /* 温度センサー2温度監視 */ … … 660 665 } 661 666 } 662 if (ret != E_BOVR){667 if (ret != E_BOVR) { 663 668 syslog(LOG_ERROR, "ecn_itr_nxt"); 664 669 break; 665 670 } 666 if (enm.is_eof)671 if (enm.is_eof) 667 672 break; 668 673 } … … 685 690 /* 温度センサー動作状態取得電文作成 */ 686 691 ret = ecn_esv_get(&esv, senserids[no - 1], 0x80); 687 if (ret != E_OK){692 if (ret != E_OK) { 688 693 syslog(LOG_ERROR, "ecn_esv_get"); 689 694 return; … … 692 697 /* 温度計測値取得追加 */ 693 698 ret = ecn_add_epc(esv, 0xE0); 694 if (ret != E_OK){699 if (ret != E_OK) { 695 700 syslog(LOG_ERROR, "ecn_add_epc"); 696 701 697 702 ret = ecn_rel_esv(esv); 698 if (ret != E_OK){703 if (ret != E_OK) { 699 704 syslog(LOG_ERROR, "ecn_rel_esv"); 700 705 } … … 704 709 /* 電文送信 */ 705 710 ret = ecn_snd_esv(esv); 706 if (ret != E_OK){711 if (ret != E_OK) { 707 712 syslog(LOG_ERROR, "ecn_snd_esv"); 708 713 } … … 717 722 int templ = 0; 718 723 719 if (temp_sensor_01_data.property80 == 0x30){724 if (temp_sensor_01_data.property80 == 0x30) { 720 725 templ += ((((uint16_t)temp_sensor_01_data.propertyE0) & 0xFF) << 8) 721 726 | ((((uint16_t)temp_sensor_01_data.propertyE0) & 0xFF00) >> 8); 722 727 count++; 723 728 } 724 if (temp_sensor_02_data.property80 == 0x30){729 if (temp_sensor_02_data.property80 == 0x30) { 725 730 templ += ((((uint16_t)temp_sensor_02_data.propertyE0) & 0xFF) << 8) 726 731 | ((((uint16_t)temp_sensor_02_data.propertyE0) & 0xFF00) >> 8); 727 732 count++; 728 733 } 729 if (temp_sensor_03_data.property80 == 0x30){734 if (temp_sensor_03_data.property80 == 0x30) { 730 735 templ += ((((uint16_t)temp_sensor_03_data.propertyE0) & 0xFF) << 8) 731 736 | ((((uint16_t)temp_sensor_03_data.propertyE0) & 0xFF00) >> 8); 732 737 count++; 733 738 } 734 if (temp_sensor_04_data.property80 == 0x30){739 if (temp_sensor_04_data.property80 == 0x30) { 735 740 templ += ((((uint16_t)temp_sensor_04_data.propertyE0) & 0xFF) << 8) 736 741 | ((((uint16_t)temp_sensor_04_data.propertyE0) & 0xFF00) >> 8); … … 738 743 } 739 744 740 if (count > 0){745 if (count > 0) { 741 746 templ = templ / count; 742 if (templ < -2732)747 if (templ < -2732) 743 748 main_ave_templ = 0x8000; 744 else if (templ > 32766)749 else if (templ > 32766) 745 750 main_ave_templ = 0x7FFF; 746 751 else … … 748 753 749 754 /* FANが停止中の場合 */ 750 if (!main_tmp_fan_on){751 if (main_ave_templ > (10 * home_air_conditioner_data.propertyB3 + 5)){755 if (!main_tmp_fan_on) { 756 if (main_ave_templ > (10 * home_air_conditioner_data.propertyB3 + 5)) { 752 757 main_tmp_fan_on = true; 753 758 … … 758 763 } 759 764 /* FANが稼働中の場合 */ 760 else {761 if (main_ave_templ < (10 * home_air_conditioner_data.propertyB3 - 5)){765 else { 766 if (main_ave_templ < (10 * home_air_conditioner_data.propertyB3 - 5)) { 762 767 main_tmp_fan_on = false; 763 768 … … 777 782 static void main_break_wait(uint8_t *brkdat, int32_t len) 778 783 { 784 char mac_text[30] = "mac: "; 785 char ipaddr_text[30] = "ipadr: "; 786 const T_IN4_ADDR *ip4_addr; 787 int pos; 788 bool_t prev; 789 779 790 switch (brkdat[0]) { 780 791 case 0x01: 781 // Link up/down 792 switch (brkdat[1] >> 4) { 793 case 1: 794 break; 795 case 2: 796 break; 797 } 798 799 pos = str_macaddr(&mac_text[4], sizeof(mac_text) - 4, mac_addr, 0); 800 mac_text[pos + 4] = '\0'; 801 lcd_drawString(&lcd, mac_text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 11), ST7735_BLACK, ST7735_WHITE); 802 803 ip4_addr = in4_get_ifaddr(0); 804 pos = str_ipv4addr(&ipaddr_text[6], sizeof(ipaddr_text) - 6, ip4_addr, 0); 805 ipaddr_text[pos + 6] = '\0'; 806 lcd_drawString(&lcd, ipaddr_text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 12), ST7735_BLACK, ST7735_WHITE); 782 807 break; 783 808 } 784 809 785 810 /* 運転モードが送風の場合、温度によらずFANをON */ 786 if (*brkdat == 0xB0) { 787 bool_t prev = main_ctl_fan_on; 811 switch (*brkdat) { 812 case 0x80: 813 if (main_ctl_fan_on) { 814 /* リレー出力をON/OFF */ 815 main_rly_onoff(home_air_conditioner_data.property80 == 0x30); 816 } 817 break; 818 case 0xB0: 819 prev = main_ctl_fan_on; 788 820 main_ctl_fan_on = home_air_conditioner_data.propertyB0 == 0x45; 789 821 790 822 if (prev != main_ctl_fan_on) { 791 823 if (main_ctl_fan_on) { 792 /* リレー出力をON */ 793 if (!main_tmp_fan_on) 794 main_rly_onoff(true); 824 /* リレー出力をON/OFF */ 825 main_rly_onoff(home_air_conditioner_data.property80 == 0x30); 795 826 } 796 827 else { 797 /* リレー出力をOFF */ 798 if (!main_tmp_fan_on) 799 main_rly_onoff(false); 828 /* リレー出力をON/OFF */ 829 main_rly_onoff(main_tmp_fan_on); 800 830 } 801 831 } … … 813 843 static void main_timeout() 814 844 { 815 if (main_timer == 0){845 if (main_timer == 0) { 816 846 main_ontimer(); 817 847 } 818 848 819 if (main_btn_timer == 0){849 if (main_btn_timer == 0) { 820 850 main_btn_ontimer(); 821 851 } 822 852 823 if (main_lcd_timer == 0){853 if (main_lcd_timer == 0) { 824 854 main_lcd_ontimer(); 825 855 } 826 856 827 if (main_rly_timer == 0){857 if (main_rly_timer == 0) { 828 858 main_rly_ontimer(); 829 859 } … … 834 864 static void main_ontimer() 835 865 { 836 switch(main_state){ 866 ER ret; 867 868 switch (main_state) { 869 case main_state_start: 870 /* ECHONETミドルウェアを起動 */ 871 ret = ecn_sta_svc(); 872 if (ret != E_OK) { 873 syslog(LOG_ERROR, "ecn_sta_svc"); 874 } 875 876 /* 1秒後に温度センサーを探す */ 877 main_state = main_state_idle; 878 main_timer = 1000 * 1000; 879 break; 837 880 case main_state_idle: 838 881 case main_state_search: … … 891 934 /* 温度センサー検索 */ 892 935 ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6); 893 if (ret != E_OK){936 if (ret != E_OK) { 894 937 syslog(LOG_ERROR, "ecn_esv_inf_req"); 895 938 return; … … 898 941 /* 電文送信 */ 899 942 ret = ecn_snd_esv(esv); 900 if (ret != E_OK){943 if (ret != E_OK) { 901 944 syslog(LOG_ERROR, "ecn_snd_esv"); 902 945 } … … 919 962 if ((btn == BUTTON_LEFT) && !main_btn1_state) { 920 963 main_btn1_count++; 921 if (main_btn1_count > 10){964 if (main_btn1_count > 10) { 922 965 main_btn1_count = 0; 923 966 main_btn1_state = true; … … 928 971 else if ((btn != BUTTON_LEFT) && main_btn1_state) { 929 972 main_btn1_count++; 930 if (main_btn1_count > 10){973 if (main_btn1_count > 10) { 931 974 main_btn1_count = 0; 932 975 main_btn1_state = false; … … 939 982 if ((btn == BUTTON_RIGHT) && !main_btn2_state) { 940 983 main_btn2_count++; 941 if (main_btn2_count > 10){984 if (main_btn2_count > 10) { 942 985 main_btn2_count = 0; 943 986 main_btn2_state = true; … … 948 991 else if ((btn != BUTTON_RIGHT) && main_btn2_state) { 949 992 main_btn2_count++; 950 if (main_btn2_count > 10){993 if (main_btn2_count > 10) { 951 994 main_btn2_count = 0; 952 995 main_btn2_state = false; … … 963 1006 char temp2[] = "測定温度:+00.0℃"; 964 1007 char mode[] = "運転モード:自動 "; 965 char *mode_texts[] = { " 自動 ", "冷房 ", "暖房 ", "除湿 ", "送風 ", "その他" };1008 char *mode_texts[] = { "その他", "自動 ", "冷房 ", "暖房 ", "除湿 ", "送風 " }; 966 1009 char *btn_texts[] = { "none ", "down ", "left ", "select", "up ", "right " }; 967 1010 int temp, btn; … … 979 1022 power[11] = 'f'; 980 1023 } 981 lcd_drawString(&lcd, &power[9], X_LINE_HALF_TO_PIX(&lcd, 6) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE);1024 lcd_drawString(&lcd, &power[9], X_LINE_HALF_TO_PIX(&lcd, 6), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 982 1025 main_lcd_state++; 983 1026 break; … … 992 1035 temp = -temp; 993 1036 temp1[17] = '0' + temp; 994 lcd_drawString(&lcd, &temp1[15], X_LINE_HALF_TO_PIX(&lcd, 10) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE);1037 lcd_drawString(&lcd, &temp1[15], X_LINE_HALF_TO_PIX(&lcd, 10), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 995 1038 main_lcd_state++; 996 1039 break; … … 1009 1052 temp = -temp; 1010 1053 temp2[19] = '0' + temp; 1011 lcd_drawString(&lcd, &temp2[15], X_LINE_HALF_TO_PIX(&lcd, 10) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE);1054 lcd_drawString(&lcd, &temp2[15], X_LINE_HALF_TO_PIX(&lcd, 10), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 1012 1055 main_lcd_state++; 1013 1056 break; 1014 1057 case 3: 1015 1058 temp = home_air_conditioner_data.propertyB0 - 0x40; 1016 lcd_drawString(&lcd, mode_texts[temp], X_LINE_HALF_TO_PIX(&lcd, 12) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE);1059 lcd_drawString(&lcd, mode_texts[temp], X_LINE_HALF_TO_PIX(&lcd, 12), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 1017 1060 main_lcd_state++; 1018 1061 break; … … 1023 1066 case 6: 1024 1067 btn = main_read_button(&joystick); 1025 lcd_drawString(&lcd, btn_texts[btn], X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 10) + 10, ST7735_BLACK, ST7735_WHITE);1068 lcd_drawString(&lcd, btn_texts[btn], X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 9), ST7735_BLACK, ST7735_WHITE); 1026 1069 main_lcd_state++; 1027 1070 break; … … 1030 1073 break; 1031 1074 case 10: 1032 lcd_drawString(&lcd, "エアコン", X_LINE_TO_PIX(&lcd, 9) + 10, Y_ROW_TO_PIX(&lcd, 0) + 10, ST7735_BLACK, ST7735_WHITE);1033 lcd_drawString(&lcd, power, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 0 + 4) + 10, ST7735_BLACK, ST7735_WHITE);1034 lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 1 + 4) + 10, ST7735_BLACK, ST7735_WHITE);1035 lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 2 + 4) + 10, ST7735_BLACK, ST7735_WHITE);1036 lcd_drawString(&lcd, mode, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 3 + 4) + 10, ST7735_BLACK, ST7735_WHITE);1075 lcd_drawString(&lcd, "エアコン", X_LINE_TO_PIX(&lcd, 6), Y_ROW_TO_PIX(&lcd, 0), ST7735_BLACK, ST7735_WHITE); 1076 lcd_drawString(&lcd, power, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 0 + 2), ST7735_BLACK, ST7735_WHITE); 1077 lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 1 + 2), ST7735_BLACK, ST7735_WHITE); 1078 lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 2 + 2), ST7735_BLACK, ST7735_WHITE); 1079 lcd_drawString(&lcd, mode, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 3 + 2), ST7735_BLACK, ST7735_WHITE); 1037 1080 main_lcd_state = 0; 1038 1081 break; … … 1079 1122 1080 1123 /* 押されて戻った時に処理する */ 1081 if (push)1124 if (push) 1082 1125 return; 1083 1126 1084 1127 /* 設定温度 */ 1085 if (main_templ > 0)1128 if (main_templ > 0) 1086 1129 main_templ--; /* - 1℃ */ 1087 1130 … … 1090 1133 /* プロパティ設定電文作成 */ 1091 1134 ret = ecn_esv_seti(&esv, HOME_AIR_CONDITIONER_EOBJ, 0xB3, 1, p_edt); 1092 if (ret != E_OK){1135 if (ret != E_OK) { 1093 1136 syslog(LOG_ERROR, "ecn_esv_seti"); 1094 1137 return; … … 1096 1139 1097 1140 /* 電文送信 */ 1098 ecn_snd_esv(esv);1099 if (ret != E_OK){1141 ret = ecn_snd_esv(esv); 1142 if (ret != E_OK) { 1100 1143 syslog(LOG_ERROR, "ecn_snd_esv"); 1101 1144 } … … 1112 1155 1113 1156 /* 押されて戻った時に処理する */ 1114 if (push)1157 if (push) 1115 1158 return; 1116 1159 1117 1160 /* 設定温度 */ 1118 if (main_templ < 50)1161 if (main_templ < 50) 1119 1162 main_templ++; /* + 1.0℃ */ 1120 1163 … … 1123 1166 /* プロパティ設定電文作成 */ 1124 1167 ret = ecn_esv_seti(&esv, HOME_AIR_CONDITIONER_EOBJ, 0xB3, 1, p_edt); 1125 if (ret != E_OK){1168 if (ret != E_OK) { 1126 1169 syslog(LOG_ERROR, "ecn_esv_seti"); 1127 1170 return; … … 1129 1172 1130 1173 /* 電文送信 */ 1131 ecn_snd_esv(esv);1132 if (ret != E_OK){1174 ret = ecn_snd_esv(esv); 1175 if (ret != E_OK) { 1133 1176 syslog(LOG_ERROR, "ecn_snd_esv"); 1134 1177 } … … 1137 1180 static void main_rly_onoff(bool_t onoff) 1138 1181 { 1139 if (onoff){1182 if (onoff) { 1140 1183 /* リレー出力をON */ 1141 1184 gpio_write(&relay_sw, 1); 1142 1185 } 1143 else {1186 else { 1144 1187 /* リレー出力をOFF */ 1145 1188 gpio_write(&relay_sw, 0); … … 1159 1202 /* 500msパルス出力 */ 1160 1203 main_rly_state = main_rly_state_on; 1161 main_rly_timer = 500 ;1204 main_rly_timer = 500 * 1000; 1162 1205 } 1163 1206 … … 1167 1210 static void main_rly_ontimer() 1168 1211 { 1169 switch(main_rly_state) 1170 { 1212 switch (main_rly_state) { 1171 1213 case main_rly_state_off: 1172 1214 main_rly_timer = TMO_FEVR; -
asp3_tinet_ecnl_arm/trunk/app4_aircon/src/main.c
r359 r364 79 79 80 80 ID ws_api_mailboxid = MAIN_DATAQUEUE; 81 #ifndef NOUSE_MPF_NET_BUF 81 82 ID ws_mempoolid = MPF_NET_BUF_256; 83 #endif 82 84 83 85 #ifdef IF_ETHER_BTUSB … … 111 113 static void main_timeout(); 112 114 115 extern int ntshell_exit; 116 113 117 int uart_read(char *buf, int cnt, void *extobj) 114 118 { 115 return serial_rea_dat(SIO_PORTID, (char *)buf, cnt); 119 struct main_t *obj = (struct main_t *)extobj; 120 int result; 121 ER ret; 122 int timer; 123 124 obj->prev = obj->now; 125 126 /* タイマー取得 */ 127 timer = main_get_timer(); 128 129 /* 待ち */ 130 ret = serial_trea_dat(SIO_PORTID, buf, cnt, timer); 131 if ((ret < 0) && (ret != E_OK) && (ret != E_TMOUT)) { 132 syslog(LOG_NOTICE, "tslp_tsk ret: %s %d", itron_strerror(ret), timer); 133 ntshell_exit = 1; 134 return -1; 135 } 136 result = (int)ret; 137 138 ret = get_tim(&obj->now); 139 if (ret != E_OK) { 140 syslog(LOG_NOTICE, "get_tim ret: %s", itron_strerror(ret)); 141 ntshell_exit = 1; 142 return -1; 143 } 144 145 /* 時間経過 */ 146 int elapse = obj->now - obj->prev; 147 main_progress(elapse); 148 149 /* タイムアウト処理 */ 150 main_timeout(); 151 152 return result; 116 153 } 117 154 … … 119 156 { 120 157 return serial_wri_dat(SIO_PORTID, buf, cnt); 121 }122 123 unsigned char ntstdio_xi(struct ntstdio_t *handle)124 {125 char buf[1];126 if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)127 return -EIO;128 return buf[0];129 }130 131 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)132 {133 char buf[1];134 buf[0] = c;135 serial_wri_dat(SIO_PORTID, buf, 1);136 158 } 137 159 … … 150 172 main_initialize(); 151 173 152 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);174 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj); 153 175 ntshell_set_prompt(&ntshell, "NTShell>"); 154 176 ntshell_execute(&ntshell); … … 168 190 ER ret; 169 191 170 ntshell_task_init(); 192 #ifdef TOPPERS_OMIT_TECS 193 serial_opn_por(SIO_PORTID); 194 #endif 195 serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV); 196 197 ntshell_task_init(uart_read, uart_write, &main_obj); 171 198 172 199 main_obj.timer = TMO_FEVR; -
asp3_tinet_ecnl_arm/trunk/app4_aircon/src/main.cfg
r352 r364 54 54 INCLUDE("tinet/tinet_asp.cfg"); 55 55 INCLUDE("tinet_main.cfg"); 56 INCLUDE("netinet/ip_igmp.cfg");57 56 58 57 /* DHCP クライアント */ -
asp3_tinet_ecnl_arm/trunk/app5_temp_sensor/.cproject
r352 r364 22 22 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 23 23 <option id="toolchain.id" value="gcc-arm-embedded"/> 24 <option id="toolchain.version" value=" 5.4.1.20160919"/>24 <option id="toolchain.version" value="6.3.1.20170620"/> 25 25 </storageModule> 26 26 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 59 59 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.1852970779" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 60 60 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.852559143" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 61 <builder buildPath="${workspace_loc:/app5_temp_sensor}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.394642308" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>61 <builder buildPath="${workspace_loc:/app5_temp_sensor}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.394642308" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 62 62 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.589273516" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 63 63 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.462582981" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> … … 127 127 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 128 128 <option id="toolchain.id" value="gcc-arm-embedded"/> 129 <option id="toolchain.version" value=" 5.4.1.20160919"/>129 <option id="toolchain.version" value="6.3.1.20170620"/> 130 130 </storageModule> 131 131 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 164 164 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.512694190" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 165 165 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1203540506" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 166 <builder buildPath="${workspace_loc:/app5_temp_sensor}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.730173267" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>166 <builder buildPath="${workspace_loc:/app5_temp_sensor}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.730173267" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 167 167 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1443620921" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 168 168 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1975708208" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> -
asp3_tinet_ecnl_arm/trunk/app5_temp_sensor/Debug/Makefile
r352 r364 179 179 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 180 180 endif 181 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start181 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 182 182 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 183 183 -I$(SRCDIR)/../btstack/include \ … … 187 187 -I$(SRCDIR)/../usbhost/src \ 188 188 $(INCLUDES) 189 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.189 LDFLAGS := $(LDFLAGS) -L. 190 190 LIBS := $(LIBS) $(CXXLIBS) 191 191 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 198 198 APPL_COBJS := $(APPL_COBJS) netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o 199 199 APPLDIRS := $(APPLDIRS) ../../ntshell/lcd 200 APPL_COBJS := $(APPL_COBJS) draw_font.o misaki_font.o 200 APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o 201 APPL_CFLAGS := $(APPL_CFLAGS) -DSHNM12_FONT 201 202 202 203 # … … 223 224 endif 224 225 225 226 # 227 # ネットワークサービスの定義 228 # 229 NO_USE_TINET_LIBRARY = true 230 231 # ネットワークインタフェースの選択、何れか一つ選択する。 232 NET_IF = ether 233 234 # イーサネット・ディバイスドライバの選択 235 NET_DEV = if_btusb 236 237 # ネットワーク層の選択 238 #SUPPORT_INET6 = true 239 SUPPORT_INET4 = true 240 241 # API に組込む機能の選択 242 #API_CFG_IP4MAPPED_ADDR = true 243 244 # トランスポート層の選択 245 SUPPORT_TCP = true 246 SUPPORT_UDP = true 247 248 # IGMPを有効に設定 249 SUPPORT_IGMP = true 250 251 # 252 # ネットワークサービスの Makefile のインクルード 253 # 254 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 226 ifdef TINETDIR 227 # 228 # ネットワークサービスの定義 229 # 230 NO_USE_TINET_LIBRARY = true 231 232 # ネットワークインタフェースの選択、何れか一つ選択する。 233 NET_IF = ether 234 235 # イーサネット・ディバイスドライバの選択 236 NET_DEV = if_btusb 237 238 # ネットワーク層の選択 239 #SUPPORT_INET6 = true 240 SUPPORT_INET4 = true 241 242 # API に組込む機能の選択 243 #API_CFG_IP4MAPPED_ADDR = true 244 245 # トランスポート層の選択 246 SUPPORT_TCP = true 247 SUPPORT_UDP = true 248 249 # IGMPを有効に設定 250 SUPPORT_IGMP = true 251 252 # 253 # ネットワークサービスの Makefile のインクルード 254 # 255 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 256 endif 255 257 256 258 # … … 285 287 # コンフィギュレータに関する定義 286 288 # 287 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 288 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 289 ifndef TINETDIR 290 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 291 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 292 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 293 else 294 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 295 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 289 296 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 290 297 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 292 299 --symval-table ../../ntshell/echonet/echonet_sym.def \ 293 300 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 301 endif 294 302 CFG_ASMOBJS := $(CFG_ASMOBJS) 295 303 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 437 445 438 446 # 447 # 並列makeのための依存関係の定義 448 # 449 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 450 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 451 | offset.timestamp 452 453 # 439 454 # 特別な依存関係の定義 440 455 # … … 445 460 # 446 461 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 447 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \462 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 448 463 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 449 464 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app5_temp_sensor/DebugEther/Makefile
r352 r364 177 177 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 178 178 endif 179 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start179 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 180 180 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 181 181 -I$(SRCDIR)/../btstack/include \ … … 185 185 -I$(SRCDIR)/../usbhost/src \ 186 186 $(INCLUDES) 187 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.187 LDFLAGS := $(LDFLAGS) -L. 188 188 LIBS := $(LIBS) $(CXXLIBS) 189 189 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 196 196 APPL_COBJS := $(APPL_COBJS) netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o 197 197 APPLDIRS := $(APPLDIRS) ../../ntshell/lcd 198 APPL_COBJS := $(APPL_COBJS) draw_font.o misaki_font.o 198 APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o 199 APPL_CFLAGS := $(APPL_CFLAGS) -DSHNM12_FONT 199 200 200 201 # … … 221 222 endif 222 223 223 224 #225 # ネットワークサービスの定義226 #227 NO_USE_TINET_LIBRARY = true228 229 # ネットワークインタフェースの選択、何れか一つ選択する。230 NET_IF = ether231 232 # イーサネット・ディバイスドライバの選択224 ifdef TINETDIR 225 # 226 # ネットワークサービスの定義 227 # 228 NO_USE_TINET_LIBRARY = true 229 230 # ネットワークインタフェースの選択、何れか一つ選択する。 231 NET_IF = ether 232 233 # イーサネット・ディバイスドライバの選択 233 234 NET_DEV = if_mbed 234 235 235 # ネットワーク層の選択 236 #SUPPORT_INET6 = true 237 SUPPORT_INET4 = true 238 239 # API に組込む機能の選択 240 #API_CFG_IP4MAPPED_ADDR = true 241 242 # トランスポート層の選択 243 SUPPORT_TCP = true 244 SUPPORT_UDP = true 245 246 # IGMPを有効に設定 247 SUPPORT_IGMP = true 248 249 # 250 # ネットワークサービスの Makefile のインクルード 251 # 252 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 236 # ネットワーク層の選択 237 #SUPPORT_INET6 = true 238 SUPPORT_INET4 = true 239 240 # API に組込む機能の選択 241 #API_CFG_IP4MAPPED_ADDR = true 242 243 # トランスポート層の選択 244 SUPPORT_TCP = true 245 SUPPORT_UDP = true 246 247 # IGMPを有効に設定 248 SUPPORT_IGMP = true 249 250 # 251 # ネットワークサービスの Makefile のインクルード 252 # 253 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 254 endif 253 255 254 256 # … … 283 285 # コンフィギュレータに関する定義 284 286 # 285 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 286 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 287 ifndef TINETDIR 288 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 289 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 290 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 291 else 292 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 293 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 287 294 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 288 295 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 290 297 --symval-table ../../ntshell/echonet/echonet_sym.def \ 291 298 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 299 endif 292 300 CFG_ASMOBJS := $(CFG_ASMOBJS) 293 301 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 435 443 436 444 # 445 # 並列makeのための依存関係の定義 446 # 447 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 448 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 449 | offset.timestamp 450 451 # 437 452 # 特別な依存関係の定義 438 453 # … … 443 458 # 444 459 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 445 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \460 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 446 461 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 447 462 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app5_temp_sensor/src/echonet_main.c
r352 r364 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2014-2018 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ 37 37 38 /* 38 /* 39 39 * サンプルプログラム(1)の本体 40 40 */ … … 55 55 #include "adafruit_st7735.h" 56 56 #include "draw_font.h" 57 #include <tinet_defs.h> 58 #include <tinet_config.h> 59 #include <netinet/in.h> 60 #include <netinet/in_var.h> 61 #include <net/ethernet.h> 62 #include <net/if_var.h> 63 64 extern uint8_t mac_addr[6]; 57 65 58 66 /* TODO: メーカーコードを設定 */ … … 111 119 112 120 /* サイズが1以外は受け付けない */ 113 if (size != 1)121 if (size != 1) 114 122 return 0; 115 123 116 124 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 117 125 118 switch (*(uint8_t *)src){126 switch (*(uint8_t *)src) { 119 127 /* ONの場合 */ 120 128 case 0x30: … … 126 134 data[1] = *(uint8_t *)src; 127 135 ret = ecn_brk_wai(data, sizeof(data)); 128 if (ret != E_OK){136 if (ret != E_OK) { 129 137 syslog(LOG_ERROR, "ecn_brk_wai"); 130 138 return 1; … … 145 153 { 146 154 /* サイズが1以外は受け付けない */ 147 if (size != 1)155 if (size != 1) 148 156 return 0; 149 157 150 158 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 151 159 152 switch (*(uint8_t *)src){160 switch (*(uint8_t *)src) { 153 161 /* 異常発生ありの場合 */ 154 162 case 0x41: … … 176 184 177 185 /* サイズが2以外は受け付けない */ 178 if (size != 2)186 if (size != 2) 179 187 return 0; 180 188 181 189 value = (((uint8_t *)src)[0] << 8) | (((uint8_t *)src)[1] & 0xFF); 182 190 183 if ((value >= -2732) && (value <= 32766)){191 if ((value >= -2732) && (value <= 32766)) { 184 192 eobj->propertyE0 = value; 185 193 /* メインタスクに通知 */ 186 194 data[0] = 0xE0; 187 195 ret = ecn_brk_wai(data, sizeof(data)); 188 if (ret != E_OK){196 if (ret != E_OK) { 189 197 syslog(LOG_ERROR, "ecn_brk_wai"); 190 198 return 2; … … 192 200 } 193 201 /* 上記以外は受け付けない */ 194 else {202 else { 195 203 return 0; 196 204 } … … 199 207 } 200 208 201 /* 209 /* 202 210 * 温度計測値取得関数 203 211 */ … … 208 216 209 217 /* サイズが2以外は受け付けない */ 210 if (size != 2)218 if (size != 2) 211 219 return 0; 212 220 … … 240 248 241 249 ret2 = get_tim(&now); 242 if (ret2 != E_OK) {250 if (ret2 != E_OK) { 243 251 syslog(LOG_ERROR, "get_tim"); 244 252 return; 245 253 } 246 254 247 for (;;){255 for (;;) { 248 256 prev = now; 249 257 … … 253 261 /* 応答電文待ち */ 254 262 ret = ecn_trcv_esv(&esv, timer); 255 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {263 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) { 256 264 syslog(LOG_ERROR, "ecn_trcv_esv"); 257 265 break; … … 259 267 260 268 ret2 = get_tim(&now); 261 if (ret2 != E_OK) {269 if (ret2 != E_OK) { 262 270 syslog(LOG_ERROR, "get_tim"); 263 271 break; … … 274 282 /* 領域解放 */ 275 283 ret = ecn_rel_esv(esv); 276 if (ret != E_OK) {284 if (ret != E_OK) { 277 285 syslog(LOG_ERROR, "ecn_rel_esv"); 278 286 break; … … 283 291 /* 応答電文待ちの割り込みデータ取得 */ 284 292 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 285 if (ret != E_OK) {293 if (ret != E_OK) { 286 294 syslog(LOG_ERROR, "ecn_get_brk_dat"); 287 295 break; … … 293 301 /* 領域解放 */ 294 302 ret = ecn_rel_esv(esv); 295 if (ret != E_OK) {303 if (ret != E_OK) { 296 304 syslog(LOG_ERROR, "ecn_rel_esv"); 297 305 break; … … 304 312 } 305 313 306 bool_t started = false;307 308 314 void echonet_change_netif_link(uint8_t link_up, uint8_t up) 309 315 { … … 313 319 return; 314 320 315 if (up && !started) { 316 started = true; 317 318 /* ECHONETミドルウェアを起動 */ 319 ret = ecn_sta_svc(); 320 if (ret != E_OK) 321 return; 322 323 /* ECHONETミドルウェアを起動するのを待つ */ 324 dly_tsk(100); 321 if (up) { 322 /* インスタンスリスト通知の送信 */ 323 ret = ecn_ntf_inl(); 324 if (ret != E_OK) { 325 syslog(LOG_ERROR, "ecn_ntf_inl"); 326 } 325 327 } 326 328 … … 328 330 uint8_t data[2]; 329 331 data[0] = 0x01; 330 data[1] = up ? 0x01 : 0x02;332 data[1] = (up ? 0x01 : 0x02) | (link_up ? 0x10 : 0x20); 331 333 ret = ecn_brk_wai(data, sizeof(data)); 332 334 if (ret != E_OK) { … … 336 338 } 337 339 338 enum main_state_t{ 340 enum main_state_t { 341 main_state_start, 339 342 main_state_idle, 340 343 }; 341 344 342 345 int main_timer = TMO_FEVR; 343 enum main_state_t main_state = main_state_ idle;346 enum main_state_t main_state = main_state_start; 344 347 345 348 int main_lcd_timer = TMO_FEVR; … … 386 389 analogin_init(&joystick, P1_12); 387 390 388 /* 10ms後にボタン状態を確認 */ 389 main_timer = 10 * 1000; 391 /* ECHONETミドルウェアを起動するのを待つ */ 392 main_state = main_state_start; 393 main_timer = 1000 * 1000; 390 394 391 395 /* ボタン状態読み込み */ … … 397 401 spi_init(&lcd.hspi, P10_14, P10_15, P10_12, NC); 398 402 spi_format(&lcd.hspi, 8, 0, 0); 399 spi_frequency(&lcd.hspi, 1000000);403 spi_frequency(&lcd.hspi, 4000000); 400 404 401 405 gpio_init_out(&lcd.cs_pin, P10_13); … … 416 420 main_lcd_timer = 1000 * 1000; 417 421 422 /* メインタスクを起動 */ 418 423 ER ret = act_tsk(MAIN_TASK); 419 424 if (ret != E_OK) { … … 429 434 int result = main_timer; 430 435 431 if ((result == TMO_FEVR)432 || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) {436 if ((result == TMO_FEVR) 437 || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) { 433 438 result = main_lcd_timer; 434 439 } … … 442 447 static void main_progress(int interval) 443 448 { 444 if (main_timer != TMO_FEVR){449 if (main_timer != TMO_FEVR) { 445 450 main_timer -= interval; 446 if (main_timer < 0){451 if (main_timer < 0) { 447 452 main_timer = 0; 448 453 } 449 454 } 450 455 451 if (main_lcd_timer != TMO_FEVR){456 if (main_lcd_timer != TMO_FEVR) { 452 457 main_lcd_timer -= interval; 453 if (main_lcd_timer < 0){458 if (main_lcd_timer < 0) { 454 459 main_lcd_timer = 0; 455 460 } … … 472 477 473 478 ret = ecn_itr_ini(&enm, esv); 474 if (ret != E_OK){479 if (ret != E_OK) { 475 480 syslog(LOG_ERROR, "ecn_itr_ini"); 476 481 return; 477 482 } 478 483 479 for (;;) {480 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {484 for (;;) { 485 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 481 486 switch (epc) { 482 487 case 0xE0: 483 if (in_get && (esv->hdr.edata.esv == ESV_SET_GET_RES)){488 if (in_get && (esv->hdr.edata.esv == ESV_SET_GET_RES)) { 484 489 check_response(pdc, p_edt); 485 490 } … … 487 492 } 488 493 } 489 if (ret != E_BOVR){494 if (ret != E_BOVR) { 490 495 syslog(LOG_ERROR, "ecn_itr_nxt"); 491 496 break; 492 497 } 493 if (enm.is_eof)498 if (enm.is_eof) 494 499 break; 495 500 … … 504 509 static void main_break_wait(uint8_t *brkdat, int32_t len) 505 510 { 511 char mac_text[30] = "mac: "; 512 char ipaddr_text[30] = "ipadr: "; 513 const T_IN4_ADDR *ip4_addr; 514 int pos; 515 506 516 if (brkdat[0] == 0x01) { 507 // Link up/down 517 pos = str_macaddr(&mac_text[4], sizeof(mac_text) - 4, mac_addr, 0); 518 mac_text[pos + 4] = '\0'; 519 lcd_drawString(&lcd, mac_text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 11), ST7735_BLACK, ST7735_WHITE); 520 521 ip4_addr = in4_get_ifaddr(0); 522 pos = str_ipv4addr(&ipaddr_text[6], sizeof(ipaddr_text) - 6, ip4_addr, 0); 523 ipaddr_text[pos + 6] = '\0'; 524 lcd_drawString(&lcd, ipaddr_text, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 12), ST7735_BLACK, ST7735_WHITE); 508 525 return; 509 526 } 510 527 511 528 if ((len == 2) && (brkdat[0] == 0x80)) { 512 switch (brkdat[1]){529 switch (brkdat[1]) { 513 530 /* ONの場合 */ 514 531 case 0x30: … … 533 550 static void main_timeout() 534 551 { 535 if (main_timer == 0){552 if (main_timer == 0) { 536 553 main_ontimer(); 537 554 } 538 555 539 if (main_lcd_timer == 0){556 if (main_lcd_timer == 0) { 540 557 main_lcd_ontimer(); 541 558 } … … 543 560 544 561 #define main_ad_count 3 562 #define main_ad_table_count 64 545 563 static int16_t main_ad_tempr[main_ad_count] = { 200, 200, 200 }; 546 static uint16_t main_ad_table[64]; 547 #define main_ad_table_count (sizeof(main_ad_table) / sizeof(main_ad_table[0])) 564 static uint16_t main_ad_table[main_ad_count][main_ad_table_count]; 548 565 static int main_ad_pos = 0; 549 566 static uint32_t main_ad_avelage[main_ad_count]; … … 556 573 static void main_ontimer() 557 574 { 575 ER ret; 558 576 uint8_t btn; 559 577 uint16_t ad_value; 560 578 int16_t ad_tempr; 561 579 562 switch(main_state){ 580 switch (main_state) { 581 case main_state_start: 582 /* ECHONETミドルウェアを起動 */ 583 ret = ecn_sta_svc(); 584 if (ret != E_OK) { 585 syslog(LOG_ERROR, "ecn_sta_svc"); 586 } 587 588 /* 10ms後にボタン状態を確認 */ 589 main_state = main_state_idle; 590 main_timer = 10 * 1000; 591 break; 563 592 case main_state_idle: 564 593 /* 10ms後にボタン状態を確認 */ … … 567 596 /* ADCの変換結果取得 */ 568 597 for (int i = 0; i < main_ad_count; i++) { 569 main_ad_avelage[i] -= main_ad_table[ main_ad_pos];598 main_ad_avelage[i] -= main_ad_table[i][main_ad_pos]; 570 599 ad_value = analogin_read_u16(&analogin[i]) >> 4; // 16bit値取得->12bit 571 main_ad_table[ main_ad_pos] = ad_value;600 main_ad_table[i][main_ad_pos] = ad_value; 572 601 main_ad_avelage[i] += ad_value; 573 602 } 574 603 575 604 main_ad_pos++; 576 if (main_ad_pos >= main_ad_table_count){605 if (main_ad_pos >= main_ad_table_count) { 577 606 main_ad_pos = 0; 578 607 } … … 586 615 } 587 616 else { 617 main_count[i] = 0; 588 618 main_ad_tempr[i] = ad_tempr; 589 619 … … 601 631 602 632 /* ボタン1の処理 */ 603 if ((btn == BUTTON_LEFT) && !main_btn1_state){633 if ((btn == BUTTON_LEFT) && !main_btn1_state) { 604 634 main_btn1_count++; 605 if (main_btn1_count > 10){635 if (main_btn1_count > 10) { 606 636 main_btn1_count = 0; 607 637 main_btn1_state = true; … … 610 640 } 611 641 } 612 else if ((btn != BUTTON_LEFT) && main_btn1_state){642 else if ((btn != BUTTON_LEFT) && main_btn1_state) { 613 643 main_btn1_count++; 614 if (main_btn1_count > 10){644 if (main_btn1_count > 10) { 615 645 main_btn1_count = 0; 616 646 main_btn1_state = false; … … 621 651 622 652 /* ボタン2の処理 */ 623 if ((btn == BUTTON_RIGHT) && !main_btn2_state){653 if ((btn == BUTTON_RIGHT) && !main_btn2_state) { 624 654 main_btn2_count++; 625 if (main_btn2_count > 10){655 if (main_btn2_count > 10) { 626 656 main_btn2_count = 0; 627 657 main_btn2_state = true; … … 630 660 } 631 661 } 632 else if ((btn != BUTTON_RIGHT) && main_btn2_state){662 else if ((btn != BUTTON_RIGHT) && main_btn2_state) { 633 663 main_btn2_count++; 634 if (main_btn2_count > 10){664 if (main_btn2_count > 10) { 635 665 main_btn2_count = 0; 636 666 main_btn2_state = false; … … 645 675 static void main_lcd_ontimer() 646 676 { 647 char temp1[] = "温度1:+00 .0℃";648 char temp2[] = "温度2:+00 .0℃";649 char humid[] = "湿度 :+00 .0%";677 char temp1[] = "温度1:+000.0℃"; 678 char temp2[] = "温度2:+000.0℃"; 679 char humid[] = "湿度 :+000.0%"; 650 680 char *btn_texts[] = { "none ", "down ", "left ", "select", "up ", "right " }; 651 681 int temp, btn; … … 653 683 switch (main_lcd_state) { 654 684 case 0: 655 temp1[ 9] = (temperature_sensor1_data.propertyE0 >= 0) ? ' ' : '-';685 temp1[10] = (temperature_sensor1_data.propertyE0 >= 0) ? ' ' : '-'; 656 686 temp = (temperature_sensor1_data.propertyE0 / 1000) % 10; 657 687 if (temp < 0) 658 688 temp = -temp; 659 temp1[1 0] = '0' + temp;689 temp1[11] = '0' + temp; 660 690 temp = (temperature_sensor1_data.propertyE0 / 100) % 10; 661 691 if (temp < 0) 662 692 temp = -temp; 663 temp1[1 1] = '0' + temp;693 temp1[12] = '0' + temp; 664 694 temp = (temperature_sensor1_data.propertyE0 / 10) % 10; 665 695 if (temp < 0) 666 696 temp = -temp; 667 697 temp1[13] = '0' + temp; 668 lcd_drawString(&lcd, &temp1[9], X_LINE_HALF_TO_PIX(&lcd, 8) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE); 698 temp = (temperature_sensor1_data.propertyE0 / 1) % 10; 699 if (temp < 0) 700 temp = -temp; 701 temp1[15] = '0' + temp; 702 lcd_drawString(&lcd, &temp1[10], X_LINE_HALF_TO_PIX(&lcd, 7), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 669 703 main_lcd_state++; 670 704 break; 671 705 case 1: 672 temp2[ 9] = (temperature_sensor2_data.propertyE0 >= 0) ? ' ' : '-';706 temp2[10] = (temperature_sensor2_data.propertyE0 >= 0) ? ' ' : '-'; 673 707 temp = (temperature_sensor2_data.propertyE0 / 1000) % 10; 674 708 if (temp < 0) 675 709 temp = -temp; 676 temp2[1 0] = '0' + temp;710 temp2[11] = '0' + temp; 677 711 temp = (temperature_sensor2_data.propertyE0 / 100) % 10; 678 712 if (temp < 0) 679 713 temp = -temp; 680 temp2[1 1] = '0' + temp;714 temp2[12] = '0' + temp; 681 715 temp = (temperature_sensor2_data.propertyE0 / 10) % 10; 682 716 if (temp < 0) 683 717 temp = -temp; 684 718 temp2[13] = '0' + temp; 685 lcd_drawString(&lcd, &temp2[9], X_LINE_HALF_TO_PIX(&lcd, 8) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE); 719 temp = (temperature_sensor2_data.propertyE0 / 1) % 10; 720 if (temp < 0) 721 temp = -temp; 722 temp2[15] = '0' + temp; 723 lcd_drawString(&lcd, &temp2[10], X_LINE_HALF_TO_PIX(&lcd, 7), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 686 724 main_lcd_state++; 687 725 break; 688 726 case 2: 689 humid[9] = ' '; 690 temp = (humidity_sensor_data.propertyE0 / 1000) % 10; 691 humid[10] = '0' + temp; 727 humid[10] = ' '; 728 humid[11] = ' '; 692 729 temp = (humidity_sensor_data.propertyE0 / 100) % 10; 693 humid[1 1] = '0' + temp;730 humid[12] = '0' + temp; 694 731 temp = (humidity_sensor_data.propertyE0 / 10) % 10; 695 732 humid[13] = '0' + temp; 696 lcd_drawString(&lcd, &humid[9], X_LINE_HALF_TO_PIX(&lcd, 8) + 10, Y_ROW_TO_PIX(&lcd, main_lcd_state + 4) + 10, ST7735_BLACK, ST7735_WHITE); 733 temp = (humidity_sensor_data.propertyE0 / 1) % 10; 734 humid[15] = '0' + temp; 735 lcd_drawString(&lcd, &humid[10], X_LINE_HALF_TO_PIX(&lcd, 7), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), ST7735_BLACK, ST7735_WHITE); 697 736 main_lcd_state++; 698 737 break; … … 704 743 case 6: 705 744 btn = main_read_button(&joystick); 706 lcd_drawString(&lcd, btn_texts[btn], X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 10) + 10, ST7735_BLACK, ST7735_WHITE);745 lcd_drawString(&lcd, btn_texts[btn], X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 9), ST7735_BLACK, ST7735_WHITE); 707 746 main_lcd_state++; 708 747 break; … … 711 750 break; 712 751 case 10: 713 lcd_drawString(&lcd, "温度湿度計", X_LINE_TO_PIX(&lcd, 9) + 10, Y_ROW_TO_PIX(&lcd, 0) + 10, ST7735_BLACK, ST7735_WHITE);714 lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 0 + 4) + 10, ST7735_BLACK, ST7735_WHITE);715 lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 1 + 4) + 10, ST7735_BLACK, ST7735_WHITE);716 lcd_drawString(&lcd, humid, X_LINE_TO_PIX(&lcd, 0) + 10, Y_ROW_TO_PIX(&lcd, 2 + 4) + 10, ST7735_BLACK, ST7735_WHITE);752 lcd_drawString(&lcd, "温度湿度計", X_LINE_TO_PIX(&lcd, 5), Y_ROW_TO_PIX(&lcd, 0), ST7735_BLACK, ST7735_WHITE); 753 lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 0 + 2), ST7735_BLACK, ST7735_WHITE); 754 lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 1 + 2), ST7735_BLACK, ST7735_WHITE); 755 lcd_drawString(&lcd, humid, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 2 + 2), ST7735_BLACK, ST7735_WHITE); 717 756 main_lcd_state = 0; 718 757 break; … … 755 794 /* プロパティ設定電文作成 */ 756 795 ret = ecn_esv_setc(&esv, eobj, 0xE0, 2, p_edt); 757 if (ret != E_OK){796 if (ret != E_OK) { 758 797 syslog(LOG_ERROR, "ecn_esv_setc"); 759 798 return; … … 761 800 762 801 /* 電文送信 */ 763 ecn_snd_esv(esv); 802 ret = ecn_snd_esv(esv); 803 if (ret != E_OK) { 804 syslog(LOG_ERROR, "ecn_snd_esv"); 805 } 764 806 } 765 807 … … 798 840 799 841 /* 押されて戻った時に処理する */ 800 if (push)842 if (push) 801 843 return; 802 844 803 845 /* 温度計測値 */ 804 846 main_tmpr -= 10; /* - 1.0℃ */ 805 if (main_tmpr < -100) /* -10.0℃までとする */847 if (main_tmpr < -100) /* -10.0℃までとする */ 806 848 main_tmpr = -100; 807 849 … … 811 853 /* プロパティ値書き込み・読み出し要求電文作成 */ 812 854 ret = ecn_esv_set_get(&esv, TEMP_SENSOR_02_EOBJ, 0xE0, 2, p_edt); 813 if (ret != E_OK){855 if (ret != E_OK) { 814 856 syslog(LOG_ERROR, "ecn_esv_setc"); 815 857 return; … … 820 862 /* 書き込みプロパティ追加 */ 821 863 ret = ecn_add_edt(esv, 0x80, 1, p_edt); 822 if (ret) {864 if (ret) { 823 865 syslog(LOG_ERROR, "ecn_add_edt"); 824 866 goto error; … … 827 869 /* プロパティ値書き込み・読み出し要求電文作成:折り返し指定 */ 828 870 ret = ecn_trn_set_get(esv, &trn_pos); 829 if (ret) {871 if (ret) { 830 872 syslog(LOG_ERROR, "ecn_trn_set_get"); 831 873 goto error; … … 834 876 /* 読み出しプロパティ追加 */ 835 877 ret = ecn_add_epc(esv, 0xE0); 836 if (ret) {878 if (ret) { 837 879 syslog(LOG_ERROR, "ecn_add_epc"); 838 880 goto error; … … 841 883 /* プロパティ値書き込み・読み出し要求電文作成:終了指定 */ 842 884 ret = ecn_end_set_get(esv, trn_pos); 843 if (ret) {885 if (ret) { 844 886 syslog(LOG_ERROR, "ecn_end_set_get"); 845 887 goto error; … … 848 890 /* 電文送信 */ 849 891 ret = ecn_snd_esv(esv); 850 if (ret != E_OK){892 if (ret != E_OK) { 851 893 syslog(LOG_ERROR, "ecn_snd_esv"); 852 894 } … … 855 897 /* 領域解放 */ 856 898 ret = ecn_rel_esv(esv); 857 if (ret != E_OK) {899 if (ret != E_OK) { 858 900 syslog(LOG_ERROR, "ecn_rel_esv"); 859 901 } … … 871 913 872 914 /* 押されて戻った時に処理する */ 873 if (push)915 if (push) 874 916 return; 875 917 876 918 /* 温度計測値 */ 877 919 main_tmpr += 10; /* + 1.0℃ */ 878 if (main_tmpr > 400) /* +40.0℃までとする */920 if (main_tmpr > 400) /* +40.0℃までとする */ 879 921 main_tmpr = 400; 880 922 … … 884 926 /* プロパティ値書き込み・読み出し要求電文作成 */ 885 927 ret = ecn_esv_set_get(&esv, TEMP_SENSOR_02_EOBJ, 0xE0, 2, p_edt); 886 if (ret != E_OK){928 if (ret != E_OK) { 887 929 syslog(LOG_ERROR, "ecn_esv_setc"); 888 930 return; … … 893 935 /* 書き込みプロパティ追加 */ 894 936 ret = ecn_add_edt(esv, 0x80, 1, p_edt); 895 if (ret) {937 if (ret) { 896 938 syslog(LOG_ERROR, "ecn_add_edt"); 897 939 goto error; … … 900 942 /* プロパティ値書き込み・読み出し要求電文作成:折り返し指定 */ 901 943 ret = ecn_trn_set_get(esv, &trn_pos); 902 if (ret) {944 if (ret) { 903 945 syslog(LOG_ERROR, "ecn_trn_set_get"); 904 946 goto error; … … 907 949 /* 読み出しプロパティ追加 */ 908 950 ret = ecn_add_epc(esv, 0xE0); 909 if (ret) {951 if (ret) { 910 952 syslog(LOG_ERROR, "ecn_add_epc"); 911 953 goto error; … … 914 956 /* プロパティ値書き込み・読み出し要求電文作成:終了指定 */ 915 957 ret = ecn_end_set_get(esv, trn_pos); 916 if (ret) {958 if (ret) { 917 959 syslog(LOG_ERROR, "ecn_end_set_get"); 918 960 goto error; … … 921 963 /* 電文送信 */ 922 964 ret = ecn_snd_esv(esv); 923 if (ret != E_OK){965 if (ret != E_OK) { 924 966 syslog(LOG_ERROR, "ecn_snd_esv"); 925 967 } … … 928 970 /* 領域解放 */ 929 971 ret = ecn_rel_esv(esv); 930 if (ret != E_OK) {972 if (ret != E_OK) { 931 973 syslog(LOG_ERROR, "ecn_rel_esv"); 932 974 } … … 938 980 static bool_t check_response(uint8_t pdc, uint8_t *p_edt) 939 981 { 940 if ((pdc != 2)982 if ((pdc != 2) 941 983 || (p_edt[0] != ((uint16_t)main_tmpr) >> 8) 942 || (p_edt[1] != ((uint16_t)main_tmpr) & 0xFF)) 943 { 984 || (p_edt[1] != ((uint16_t)main_tmpr) & 0xFF)) { 944 985 syslog(LOG_WARNING, "epc_set_get response NG"); 945 986 return false; -
asp3_tinet_ecnl_arm/trunk/app5_temp_sensor/src/main.c
r359 r364 79 79 80 80 ID ws_api_mailboxid = MAIN_DATAQUEUE; 81 #ifndef NOUSE_MPF_NET_BUF 81 82 ID ws_mempoolid = MPF_NET_BUF_256; 83 #endif 82 84 83 85 #ifdef IF_ETHER_BTUSB … … 111 113 static void main_timeout(); 112 114 115 extern int ntshell_exit; 116 113 117 int uart_read(char *buf, int cnt, void *extobj) 114 118 { 115 return serial_rea_dat(SIO_PORTID, (char *)buf, cnt); 119 struct main_t *obj = (struct main_t *)extobj; 120 int result; 121 ER ret; 122 int timer; 123 124 obj->prev = obj->now; 125 126 /* タイマー取得 */ 127 timer = main_get_timer(); 128 129 /* 待ち */ 130 ret = serial_trea_dat(SIO_PORTID, buf, cnt, timer); 131 if ((ret < 0) && (ret != E_OK) && (ret != E_TMOUT)) { 132 syslog(LOG_NOTICE, "tslp_tsk ret: %s %d", itron_strerror(ret), timer); 133 ntshell_exit = 1; 134 return -1; 135 } 136 result = (int)ret; 137 138 ret = get_tim(&obj->now); 139 if (ret != E_OK) { 140 syslog(LOG_NOTICE, "get_tim ret: %s", itron_strerror(ret)); 141 ntshell_exit = 1; 142 return -1; 143 } 144 145 /* 時間経過 */ 146 int elapse = obj->now - obj->prev; 147 main_progress(elapse); 148 149 /* タイムアウト処理 */ 150 main_timeout(); 151 152 return result; 116 153 } 117 154 … … 119 156 { 120 157 return serial_wri_dat(SIO_PORTID, buf, cnt); 121 }122 123 unsigned char ntstdio_xi(struct ntstdio_t *handle)124 {125 char buf[1];126 if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)127 return -EIO;128 return buf[0];129 }130 131 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)132 {133 char buf[1];134 buf[0] = c;135 serial_wri_dat(SIO_PORTID, buf, 1);136 158 } 137 159 … … 150 172 main_initialize(); 151 173 152 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);174 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj); 153 175 ntshell_set_prompt(&ntshell, "NTShell>"); 154 176 ntshell_execute(&ntshell); … … 168 190 ER ret; 169 191 170 ntshell_task_init(); 192 #ifdef TOPPERS_OMIT_TECS 193 serial_opn_por(SIO_PORTID); 194 #endif 195 serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV); 196 197 ntshell_task_init(uart_read, uart_write, &main_obj); 171 198 172 199 main_obj.timer = TMO_FEVR; -
asp3_tinet_ecnl_arm/trunk/app5_temp_sensor/src/main.cfg
r352 r364 54 54 INCLUDE("tinet/tinet_asp.cfg"); 55 55 INCLUDE("tinet_main.cfg"); 56 INCLUDE("netinet/ip_igmp.cfg");57 56 58 57 /* DHCP クライアント */ -
asp3_tinet_ecnl_arm/trunk/app6_hot_water_pot/.cproject
r352 r364 22 22 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 23 23 <option id="toolchain.id" value="gcc-arm-embedded"/> 24 <option id="toolchain.version" value=" 5.4.1.20160919"/>24 <option id="toolchain.version" value="6.3.1.20170620"/> 25 25 </storageModule> 26 26 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 127 127 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 128 128 <option id="toolchain.id" value="gcc-arm-embedded"/> 129 <option id="toolchain.version" value=" 5.4.1.20160919"/>129 <option id="toolchain.version" value="6.3.1.20170620"/> 130 130 </storageModule> 131 131 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> -
asp3_tinet_ecnl_arm/trunk/app6_hot_water_pot/Debug/Makefile
r352 r364 173 173 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 174 174 endif 175 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start175 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 176 176 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 177 177 -I$(SRCDIR)/../btstack/include \ … … 181 181 -I$(SRCDIR)/../usbhost/src \ 182 182 $(INCLUDES) 183 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.183 LDFLAGS := $(LDFLAGS) -L. 184 184 LIBS := $(LIBS) $(CXXLIBS) 185 185 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 215 215 endif 216 216 217 218 # 219 # ネットワークサービスの定義 220 # 221 NO_USE_TINET_LIBRARY = true 222 223 # ネットワークインタフェースの選択、何れか一つ選択する。 224 NET_IF = ether 225 226 # イーサネット・ディバイスドライバの選択 227 NET_DEV = if_btusb 228 229 # ネットワーク層の選択 230 #SUPPORT_INET6 = true 231 SUPPORT_INET4 = true 232 233 # API に組込む機能の選択 234 #API_CFG_IP4MAPPED_ADDR = true 235 236 # トランスポート層の選択 237 SUPPORT_TCP = true 238 SUPPORT_UDP = true 239 240 # IGMPを有効に設定 241 SUPPORT_IGMP = true 242 243 # 244 # ネットワークサービスの Makefile のインクルード 245 # 246 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 217 ifdef TINETDIR 218 # 219 # ネットワークサービスの定義 220 # 221 NO_USE_TINET_LIBRARY = true 222 223 # ネットワークインタフェースの選択、何れか一つ選択する。 224 NET_IF = ether 225 226 # イーサネット・ディバイスドライバの選択 227 NET_DEV = if_btusb 228 229 # ネットワーク層の選択 230 #SUPPORT_INET6 = true 231 SUPPORT_INET4 = true 232 233 # API に組込む機能の選択 234 #API_CFG_IP4MAPPED_ADDR = true 235 236 # トランスポート層の選択 237 SUPPORT_TCP = true 238 SUPPORT_UDP = true 239 240 # IGMPを有効に設定 241 SUPPORT_IGMP = true 242 243 # 244 # ネットワークサービスの Makefile のインクルード 245 # 246 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 247 endif 247 248 248 249 # … … 277 278 # コンフィギュレータに関する定義 278 279 # 279 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 280 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 280 ifndef TINETDIR 281 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 282 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 283 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 284 else 285 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 286 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 281 287 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 282 288 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 284 290 --symval-table ../../ntshell/echonet/echonet_sym.def \ 285 291 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 292 endif 286 293 CFG_ASMOBJS := $(CFG_ASMOBJS) 287 294 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 429 436 430 437 # 438 # 並列makeのための依存関係の定義 439 # 440 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 441 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 442 | offset.timestamp 443 444 # 431 445 # 特別な依存関係の定義 432 446 # … … 437 451 # 438 452 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 439 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \453 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 440 454 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 441 455 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app6_hot_water_pot/DebugEther/Makefile
r352 r364 171 171 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 172 172 endif 173 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start173 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 174 174 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 175 175 -I$(SRCDIR)/../btstack/include \ … … 179 179 -I$(SRCDIR)/../usbhost/src \ 180 180 $(INCLUDES) 181 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.181 LDFLAGS := $(LDFLAGS) -L. 182 182 LIBS := $(LIBS) $(CXXLIBS) 183 183 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 213 213 endif 214 214 215 216 #217 # ネットワークサービスの定義218 #219 NO_USE_TINET_LIBRARY = true220 221 # ネットワークインタフェースの選択、何れか一つ選択する。222 NET_IF = ether223 224 # イーサネット・ディバイスドライバの選択215 ifdef TINETDIR 216 # 217 # ネットワークサービスの定義 218 # 219 NO_USE_TINET_LIBRARY = true 220 221 # ネットワークインタフェースの選択、何れか一つ選択する。 222 NET_IF = ether 223 224 # イーサネット・ディバイスドライバの選択 225 225 NET_DEV = if_mbed 226 226 227 # ネットワーク層の選択 228 #SUPPORT_INET6 = true 229 SUPPORT_INET4 = true 230 231 # API に組込む機能の選択 232 #API_CFG_IP4MAPPED_ADDR = true 233 234 # トランスポート層の選択 235 SUPPORT_TCP = true 236 SUPPORT_UDP = true 237 238 # IGMPを有効に設定 239 SUPPORT_IGMP = true 240 241 # 242 # ネットワークサービスの Makefile のインクルード 243 # 244 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 227 # ネットワーク層の選択 228 #SUPPORT_INET6 = true 229 SUPPORT_INET4 = true 230 231 # API に組込む機能の選択 232 #API_CFG_IP4MAPPED_ADDR = true 233 234 # トランスポート層の選択 235 SUPPORT_TCP = true 236 SUPPORT_UDP = true 237 238 # IGMPを有効に設定 239 SUPPORT_IGMP = true 240 241 # 242 # ネットワークサービスの Makefile のインクルード 243 # 244 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 245 endif 245 246 246 247 # … … 275 276 # コンフィギュレータに関する定義 276 277 # 277 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 278 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 278 ifndef TINETDIR 279 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 280 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 281 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 282 else 283 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 284 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 279 285 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 280 286 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 282 288 --symval-table ../../ntshell/echonet/echonet_sym.def \ 283 289 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 290 endif 284 291 CFG_ASMOBJS := $(CFG_ASMOBJS) 285 292 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 427 434 428 435 # 436 # 並列makeのための依存関係の定義 437 # 438 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 439 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 440 | offset.timestamp 441 442 # 429 443 # 特別な依存関係の定義 430 444 # … … 435 449 # 436 450 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 437 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \451 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 438 452 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 439 453 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app6_hot_water_pot/src/echonet_main.c
r352 r364 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2014-2018 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ 37 37 38 /* 38 /* 39 39 * サンプルプログラム(1)の本体 40 40 */ … … 113 113 { 114 114 /* サイズが1以外は受け付けない */ 115 if (size != 1)115 if (size != 1) 116 116 return 0; 117 117 118 118 *anno = *((uint8_t*)item->exinf) != *((uint8_t*)src); 119 119 120 switch (*(uint8_t *)src){120 switch (*(uint8_t *)src) { 121 121 /* ONの場合 */ 122 122 case 0x30: … … 145 145 { 146 146 /* サイズが1以外は受け付けない */ 147 if (size != 1)147 if (size != 1) 148 148 return 0; 149 149 150 150 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 151 151 152 switch (*(uint8_t *)src){152 switch (*(uint8_t *)src) { 153 153 /* 異常発生ありの場合 */ 154 154 case 0x41: … … 174 174 175 175 /* サイズが1以外は受け付けない */ 176 if (size != 1)176 if (size != 1) 177 177 return 0; 178 178 179 179 *anno = *((uint8_t*)item->exinf) != *((uint8_t*)src); 180 180 181 switch (*(uint8_t *)src){181 switch (*(uint8_t *)src) { 182 182 /* 湯切れ無しの場合 */ 183 183 case 0x40: … … 200 200 data[0] = 0xB1; 201 201 ret = ecn_brk_wai(data, sizeof(data)); 202 if (ret != E_OK){202 if (ret != E_OK) { 203 203 syslog(LOG_ERROR, "ecn_brk_wai"); 204 204 } … … 213 213 { 214 214 /* サイズが1以外は受け付けない */ 215 if (size != 1)215 if (size != 1) 216 216 return 0; 217 217 218 218 *anno = *((uint8_t*)item->exinf) != *((uint8_t*)src); 219 219 220 switch (*(uint8_t *)src){220 switch (*(uint8_t *)src) { 221 221 /* 出湯有の場合 */ 222 222 case 0x41: … … 262 262 263 263 ret2 = get_tim(&now); 264 if (ret2 != E_OK) {264 if (ret2 != E_OK) { 265 265 syslog(LOG_ERROR, "get_tim"); 266 266 return; 267 267 } 268 268 269 for (;;){269 for (;;) { 270 270 prev = now; 271 271 … … 275 275 /* 応答電文待ち */ 276 276 ret = ecn_trcv_esv(&esv, timer); 277 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {277 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) { 278 278 syslog(LOG_ERROR, "ecn_trcv_esv"); 279 279 break; … … 281 281 282 282 ret2 = get_tim(&now); 283 if (ret2 != E_OK) {283 if (ret2 != E_OK) { 284 284 syslog(LOG_ERROR, "get_tim"); 285 285 break; … … 296 296 /* 領域解放 */ 297 297 ret = ecn_rel_esv(esv); 298 if (ret != E_OK) {298 if (ret != E_OK) { 299 299 syslog(LOG_ERROR, "ecn_rel_esv"); 300 300 break; … … 305 305 /* 応答電文待ちの割り込みデータ取得 */ 306 306 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 307 if (ret != E_OK) {307 if (ret != E_OK) { 308 308 syslog(LOG_ERROR, "ecn_get_brk_dat"); 309 309 break; … … 315 315 /* 領域解放 */ 316 316 ret = ecn_rel_esv(esv); 317 if (ret != E_OK) {317 if (ret != E_OK) { 318 318 syslog(LOG_ERROR, "ecn_rel_esv"); 319 319 break; … … 326 326 } 327 327 328 bool_t started = false;329 330 328 void echonet_change_netif_link(uint8_t link_up, uint8_t up) 331 329 { … … 335 333 return; 336 334 337 if (up && !started) { 338 started = true; 339 340 /* ECHONETミドルウェアを起動 */ 341 ret = ecn_sta_svc(); 342 if (ret != E_OK) 343 return; 344 345 /* ECHONETミドルウェアを起動するのを待つ */ 346 dly_tsk(100); 335 if (up) { 336 /* インスタンスリスト通知の送信 */ 337 ret = ecn_ntf_inl(); 338 if (ret != E_OK) { 339 syslog(LOG_ERROR, "ecn_ntf_inl"); 340 } 347 341 } 348 342 … … 358 352 } 359 353 360 enum main_state_t{ 354 enum main_state_t { 355 main_state_start, 361 356 main_state_idle, 362 357 main_state_search, … … 365 360 366 361 int main_timer = TMO_FEVR; 367 enum main_state_t main_state = main_state_ idle;362 enum main_state_t main_state = main_state_start; 368 363 int main_retry; 369 364 … … 397 392 gpio_write(&led_red, 0); 398 393 399 /* 1秒後にブザーを検索 */ 400 main_state = main_state_search; 394 395 /* ECHONETミドルウェアを起動するのを待つ */ 396 main_state = main_state_start; 401 397 main_timer = 1000 * 1000; 402 398 … … 410 406 main_btn2_state = btn2 != 0; 411 407 408 /* メインタスクを起動 */ 412 409 ER ret = act_tsk(MAIN_TASK); 413 410 if (ret != E_OK) { … … 423 420 int result = main_timer; 424 421 425 if ((result == TMO_FEVR)426 || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))) {422 if ((result == TMO_FEVR) 423 || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))) { 427 424 result = main_btn_timer; 428 425 } … … 436 433 static void main_progress(int interval) 437 434 { 438 if (main_timer != TMO_FEVR){435 if (main_timer != TMO_FEVR) { 439 436 main_timer -= interval; 440 if (main_timer < 0){437 if (main_timer < 0) { 441 438 main_timer = 0; 442 439 } 443 440 } 444 441 445 if (main_btn_timer != TMO_FEVR){442 if (main_btn_timer != TMO_FEVR) { 446 443 main_btn_timer -= interval; 447 if (main_btn_timer < 0){444 if (main_btn_timer < 0) { 448 445 main_btn_timer = 0; 449 446 } … … 464 461 465 462 eobjid = ecn_get_eobj(esv); 466 if (eobjid == EOBJ_NULL){463 if (eobjid == EOBJ_NULL) { 467 464 syslog(LOG_ERROR, "ecn_get_eobj"); 468 465 return; … … 470 467 471 468 ret = ecn_itr_ini(&enm, esv); 472 if (ret != E_OK){469 if (ret != E_OK) { 473 470 syslog(LOG_ERROR, "ecn_itr_ini"); 474 471 return; 475 472 } 476 473 477 for (;;) {478 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {474 for (;;) { 475 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 479 476 switch (epc) { 480 477 case 0xB1: 481 switch (main_state){478 switch (main_state) { 482 479 /* プロパティ通知応答待ちの場合 */ 483 480 case main_state_wait_res: 484 481 /* プロパティ通知応答のみ処理 */ 485 if ((esv->hdr.edata.esv == ESV_INFC_RES) && (eobjid == BUZZER_NODE_EOBJ)){482 if ((esv->hdr.edata.esv == ESV_INFC_RES) && (eobjid == BUZZER_NODE_EOBJ)) { 486 483 /* 応答受信 */ 487 484 main_state = main_state_idle; … … 492 489 break; 493 490 case 0xD6: 494 switch (main_state){491 switch (main_state) { 495 492 case main_state_search: 496 493 if (eobjid == BUZZER_NODE_EOBJ) { … … 504 501 } 505 502 } 506 if (ret != E_BOVR){503 if (ret != E_BOVR) { 507 504 syslog(LOG_ERROR, "ecn_itr_nxt"); 508 505 break; 509 506 } 510 if (enm.is_eof)507 if (enm.is_eof) 511 508 break; 512 509 } … … 526 523 } 527 524 528 switch (main_state){525 switch (main_state) { 529 526 case main_state_idle: 530 527 case main_state_wait_res: 531 if ((len >= 1) && (*brkdat == 0xB1)){528 if ((len >= 1) && (*brkdat == 0xB1)) { 532 529 /* ブザーに湯切れ警告状態通知 */ 533 530 ret = ecn_esv_infc(&esv, BUZZER_NODE_EOBJ, ELECTRIC_HOT_WATER_POT_EOBJ, 0xB1); 534 if (ret != E_OK){531 if (ret != E_OK) { 535 532 syslog(LOG_ERROR, "ecn_esv_infc"); 536 533 return; … … 539 536 /* 電文送信 */ 540 537 ret = ecn_snd_esv(esv); 541 if (ret != E_OK){538 if (ret != E_OK) { 542 539 syslog(LOG_ERROR, "ecn_snd_esv"); 543 540 } … … 560 557 static void main_timeout() 561 558 { 562 if (main_timer == 0){559 if (main_timer == 0) { 563 560 main_ontimer(); 564 561 } 565 562 566 if (main_btn_timer == 0){563 if (main_btn_timer == 0) { 567 564 main_btn_ontimer(); 568 565 } … … 576 573 T_EDATA *esv; 577 574 578 switch(main_state){ 575 switch (main_state) { 576 case main_state_start: 577 /* ECHONETミドルウェアを起動 */ 578 ret = ecn_sta_svc(); 579 if (ret != E_OK) { 580 syslog(LOG_ERROR, "ecn_sta_svc"); 581 } 582 583 /* 1秒後にブザーを検索 */ 584 main_state = main_state_search; 585 main_timer = 1000 * 1000; 586 break; 579 587 case main_state_idle: 580 588 syslog(LOG_ERROR, "timeout faild on main_state_idle"); … … 589 597 case main_state_wait_res: 590 598 /* リトライアウトの場合 */ 591 if (main_retry == 0){599 if (main_retry == 0) { 592 600 /* あきらめる */ 593 601 main_state = main_state_idle; … … 598 606 /* ブザーに湯切れ警告状態通知を再送 */ 599 607 ret = ecn_esv_infc(&esv, BUZZER_NODE_EOBJ, ELECTRIC_HOT_WATER_POT_EOBJ, 0xB1); 600 if (ret != E_OK){608 if (ret != E_OK) { 601 609 syslog(LOG_ERROR, "ecn_esv_infc"); 602 610 main_state = main_state_idle; … … 607 615 /* 電文送信 */ 608 616 ret = ecn_snd_esv(esv); 609 if (ret != E_OK){617 if (ret != E_OK) { 610 618 syslog(LOG_ERROR, "ecn_snd_esv"); 611 619 main_state = main_state_idle; … … 629 637 /* ブザー検索 */ 630 638 ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6); 631 if (ret != E_OK){639 if (ret != E_OK) { 632 640 syslog(LOG_ERROR, "ecn_esv_inf_req"); 633 641 return; … … 636 644 /* 電文送信 */ 637 645 ret = ecn_snd_esv(esv); 638 if (ret != E_OK){646 if (ret != E_OK) { 639 647 syslog(LOG_ERROR, "ecn_snd_esv"); 640 648 } … … 656 664 657 665 /* ボタン1の処理 */ 658 if ((btn1 != 0) && !main_btn1_state){666 if ((btn1 != 0) && !main_btn1_state) { 659 667 main_btn1_count++; 660 if (main_btn1_count > 10){668 if (main_btn1_count > 10) { 661 669 main_btn1_count = 0; 662 670 main_btn1_state = true; … … 665 673 } 666 674 } 667 else if ((btn1 == 0) && main_btn1_state){675 else if ((btn1 == 0) && main_btn1_state) { 668 676 main_btn1_count++; 669 if (main_btn1_count > 10){677 if (main_btn1_count > 10) { 670 678 main_btn1_count = 0; 671 679 main_btn1_state = false; … … 676 684 677 685 /* ボタン2の処理 */ 678 if ((btn2 != 0) && !main_btn2_state){686 if ((btn2 != 0) && !main_btn2_state) { 679 687 main_btn2_count++; 680 if (main_btn2_count > 10){688 if (main_btn2_count > 10) { 681 689 main_btn2_count = 0; 682 690 main_btn2_state = true; … … 685 693 } 686 694 } 687 else if ((btn2 == 0) && main_btn2_state){695 else if ((btn2 == 0) && main_btn2_state) { 688 696 main_btn2_count++; 689 if (main_btn2_count > 10){697 if (main_btn2_count > 10) { 690 698 main_btn2_count = 0; 691 699 main_btn2_state = false; … … 708 716 709 717 /* 押されて戻った時に処理する */ 710 if (push)718 if (push) 711 719 return; 712 720 … … 718 726 /* プロパティ設定電文作成 */ 719 727 ret = ecn_esv_seti(&esv, ELECTRIC_HOT_WATER_POT_EOBJ, 0xB1, 1, p_edt); 720 if (ret != E_OK){728 if (ret != E_OK) { 721 729 syslog(LOG_ERROR, "ecn_esv_seti"); 722 730 return; … … 725 733 /* 電文送信 */ 726 734 ecn_snd_esv(esv); 727 if (ret != E_OK){735 if (ret != E_OK) { 728 736 syslog(LOG_ERROR, "ecn_snd_esv"); 729 737 } … … 744 752 /* プロパティ設定電文作成 */ 745 753 ret = ecn_esv_seti(&esv, ELECTRIC_HOT_WATER_POT_EOBJ, 0xE2, 1, p_edt); 746 if (ret != E_OK){754 if (ret != E_OK) { 747 755 syslog(LOG_ERROR, "ecn_esv_seti"); 748 756 return; … … 751 759 /* 電文送信 */ 752 760 ecn_snd_esv(esv); 753 if (ret != E_OK){761 if (ret != E_OK) { 754 762 syslog(LOG_ERROR, "ecn_snd_esv"); 755 763 } -
asp3_tinet_ecnl_arm/trunk/app6_hot_water_pot/src/main.c
r359 r364 79 79 80 80 ID ws_api_mailboxid = MAIN_DATAQUEUE; 81 #ifndef NOUSE_MPF_NET_BUF 81 82 ID ws_mempoolid = MPF_NET_BUF_256; 83 #endif 82 84 83 85 #ifdef IF_ETHER_BTUSB … … 111 113 static void main_timeout(); 112 114 115 extern int ntshell_exit; 116 113 117 int uart_read(char *buf, int cnt, void *extobj) 114 118 { 115 return serial_rea_dat(SIO_PORTID, (char *)buf, cnt); 119 struct main_t *obj = (struct main_t *)extobj; 120 int result; 121 ER ret; 122 int timer; 123 124 obj->prev = obj->now; 125 126 /* タイマー取得 */ 127 timer = main_get_timer(); 128 129 /* 待ち */ 130 ret = serial_trea_dat(SIO_PORTID, buf, cnt, timer); 131 if ((ret < 0) && (ret != E_OK) && (ret != E_TMOUT)) { 132 syslog(LOG_NOTICE, "tslp_tsk ret: %s %d", itron_strerror(ret), timer); 133 ntshell_exit = 1; 134 return -1; 135 } 136 result = (int)ret; 137 138 ret = get_tim(&obj->now); 139 if (ret != E_OK) { 140 syslog(LOG_NOTICE, "get_tim ret: %s", itron_strerror(ret)); 141 ntshell_exit = 1; 142 return -1; 143 } 144 145 /* 時間経過 */ 146 int elapse = obj->now - obj->prev; 147 main_progress(elapse); 148 149 /* タイムアウト処理 */ 150 main_timeout(); 151 152 return result; 116 153 } 117 154 … … 119 156 { 120 157 return serial_wri_dat(SIO_PORTID, buf, cnt); 121 }122 123 unsigned char ntstdio_xi(struct ntstdio_t *handle)124 {125 char buf[1];126 if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)127 return -EIO;128 return buf[0];129 }130 131 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)132 {133 char buf[1];134 buf[0] = c;135 serial_wri_dat(SIO_PORTID, buf, 1);136 158 } 137 159 … … 150 172 main_initialize(); 151 173 152 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);174 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj); 153 175 ntshell_set_prompt(&ntshell, "NTShell>"); 154 176 ntshell_execute(&ntshell); … … 168 190 ER ret; 169 191 170 ntshell_task_init(); 192 #ifdef TOPPERS_OMIT_TECS 193 serial_opn_por(SIO_PORTID); 194 #endif 195 serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV); 196 197 ntshell_task_init(uart_read, uart_write, &main_obj); 171 198 172 199 main_obj.timer = TMO_FEVR; -
asp3_tinet_ecnl_arm/trunk/app6_hot_water_pot/src/main.cfg
r352 r364 54 54 INCLUDE("tinet/tinet_asp.cfg"); 55 55 INCLUDE("tinet_main.cfg"); 56 INCLUDE("netinet/ip_igmp.cfg");57 56 58 57 /* DHCP クライアント */ -
asp3_tinet_ecnl_arm/trunk/app7_buzzer/.cproject
r352 r364 22 22 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 23 23 <option id="toolchain.id" value="gcc-arm-embedded"/> 24 <option id="toolchain.version" value=" 5.4.1.20160919"/>24 <option id="toolchain.version" value="6.3.1.20170620"/> 25 25 </storageModule> 26 26 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 59 59 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.157741361" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 60 60 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1697219582" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 61 <builder buildPath="${workspace_loc:/app7_buzzer}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.314753602" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>61 <builder buildPath="${workspace_loc:/app7_buzzer}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.314753602" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 62 62 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1983465188" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 63 63 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1082331522" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> … … 127 127 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 128 128 <option id="toolchain.id" value="gcc-arm-embedded"/> 129 <option id="toolchain.version" value=" 5.4.1.20160919"/>129 <option id="toolchain.version" value="6.3.1.20170620"/> 130 130 </storageModule> 131 131 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 164 164 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.1092918155" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 165 165 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1370006715" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 166 <builder buildPath="${workspace_loc:/app7_buzzer}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.2100247045" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>166 <builder buildPath="${workspace_loc:/app7_buzzer}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.rz.builder.2100247045" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 167 167 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1932491155" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 168 168 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.158555834" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> -
asp3_tinet_ecnl_arm/trunk/app7_buzzer/Debug/Makefile
r352 r364 173 173 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 174 174 endif 175 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start175 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 176 176 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 177 177 -I$(SRCDIR)/../btstack/include \ … … 181 181 -I$(SRCDIR)/../usbhost/src \ 182 182 $(INCLUDES) 183 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.183 LDFLAGS := $(LDFLAGS) -L. 184 184 LIBS := $(LIBS) $(CXXLIBS) 185 185 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 215 215 endif 216 216 217 218 # 219 # ネットワークサービスの定義 220 # 221 NO_USE_TINET_LIBRARY = true 222 223 # ネットワークインタフェースの選択、何れか一つ選択する。 224 NET_IF = ether 225 226 # イーサネット・ディバイスドライバの選択 227 NET_DEV = if_btusb 228 229 # ネットワーク層の選択 230 #SUPPORT_INET6 = true 231 SUPPORT_INET4 = true 232 233 # API に組込む機能の選択 234 #API_CFG_IP4MAPPED_ADDR = true 235 236 # トランスポート層の選択 237 SUPPORT_TCP = true 238 SUPPORT_UDP = true 239 240 # IGMPを有効に設定 241 SUPPORT_IGMP = true 242 243 # 244 # ネットワークサービスの Makefile のインクルード 245 # 246 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 217 ifdef TINETDIR 218 # 219 # ネットワークサービスの定義 220 # 221 NO_USE_TINET_LIBRARY = true 222 223 # ネットワークインタフェースの選択、何れか一つ選択する。 224 NET_IF = ether 225 226 # イーサネット・ディバイスドライバの選択 227 NET_DEV = if_btusb 228 229 # ネットワーク層の選択 230 #SUPPORT_INET6 = true 231 SUPPORT_INET4 = true 232 233 # API に組込む機能の選択 234 #API_CFG_IP4MAPPED_ADDR = true 235 236 # トランスポート層の選択 237 SUPPORT_TCP = true 238 SUPPORT_UDP = true 239 240 # IGMPを有効に設定 241 SUPPORT_IGMP = true 242 243 # 244 # ネットワークサービスの Makefile のインクルード 245 # 246 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 247 endif 247 248 248 249 # … … 277 278 # コンフィギュレータに関する定義 278 279 # 279 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 280 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 280 ifndef TINETDIR 281 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 282 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 283 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 284 else 285 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 286 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 281 287 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 282 288 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 284 290 --symval-table ../../ntshell/echonet/echonet_sym.def \ 285 291 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 292 endif 286 293 CFG_ASMOBJS := $(CFG_ASMOBJS) 287 294 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 429 436 430 437 # 438 # 並列makeのための依存関係の定義 439 # 440 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 441 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 442 | offset.timestamp 443 444 # 431 445 # 特別な依存関係の定義 432 446 # … … 437 451 # 438 452 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 439 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \453 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 440 454 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 441 455 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app7_buzzer/DebugEther/Makefile
r352 r364 171 171 CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS) 172 172 endif 173 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -D ECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start173 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DNOUSE_MPF_NET_BUF -DECHONET_USE_MALLOC -DRamDisk=_binary_______ntshell_src_rom_fs_bin_start 174 174 INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \ 175 175 -I$(SRCDIR)/../btstack/include \ … … 179 179 -I$(SRCDIR)/../usbhost/src \ 180 180 $(INCLUDES) 181 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.181 LDFLAGS := $(LDFLAGS) -L. 182 182 LIBS := $(LIBS) $(CXXLIBS) 183 183 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 213 213 endif 214 214 215 216 #217 # ネットワークサービスの定義218 #219 NO_USE_TINET_LIBRARY = true220 221 # ネットワークインタフェースの選択、何れか一つ選択する。222 NET_IF = ether223 224 # イーサネット・ディバイスドライバの選択215 ifdef TINETDIR 216 # 217 # ネットワークサービスの定義 218 # 219 NO_USE_TINET_LIBRARY = true 220 221 # ネットワークインタフェースの選択、何れか一つ選択する。 222 NET_IF = ether 223 224 # イーサネット・ディバイスドライバの選択 225 225 NET_DEV = if_mbed 226 226 227 # ネットワーク層の選択 228 #SUPPORT_INET6 = true 229 SUPPORT_INET4 = true 230 231 # API に組込む機能の選択 232 #API_CFG_IP4MAPPED_ADDR = true 233 234 # トランスポート層の選択 235 SUPPORT_TCP = true 236 SUPPORT_UDP = true 237 238 # IGMPを有効に設定 239 SUPPORT_IGMP = true 240 241 # 242 # ネットワークサービスの Makefile のインクルード 243 # 244 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 227 # ネットワーク層の選択 228 #SUPPORT_INET6 = true 229 SUPPORT_INET4 = true 230 231 # API に組込む機能の選択 232 #API_CFG_IP4MAPPED_ADDR = true 233 234 # トランスポート層の選択 235 SUPPORT_TCP = true 236 SUPPORT_UDP = true 237 238 # IGMPを有効に設定 239 SUPPORT_IGMP = true 240 241 # 242 # ネットワークサービスの Makefile のインクルード 243 # 244 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet 245 endif 245 246 246 247 # … … 275 276 # コンフィギュレータに関する定義 276 277 # 277 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 278 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 278 ifndef TINETDIR 279 CFG_TRB := -T $(TARGETDIR)/target_kernel.trb 280 CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \ 281 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 282 else 283 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel 284 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \ 279 285 --api-table ../../ntshell/echonet/echonet_api.def:echonet \ 280 286 --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \ … … 282 288 --symval-table ../../ntshell/echonet/echonet_sym.def \ 283 289 --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS) 290 endif 284 291 CFG_ASMOBJS := $(CFG_ASMOBJS) 285 292 CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS) … … 427 434 428 435 # 436 # 並列makeのための依存関係の定義 437 # 438 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 439 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 440 | offset.timestamp 441 442 # 429 443 # 特別な依存関係の定義 430 444 # … … 435 449 # 436 450 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 437 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \451 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 438 452 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 439 453 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/app7_buzzer/src/echonet_main.c
r352 r364 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2014-2018 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ 37 37 38 /* 38 /* 39 39 * サンプルプログラム(1)の本体 40 40 */ … … 112 112 { 113 113 /* サイズが1以外は受け付けない */ 114 if (size != 1)114 if (size != 1) 115 115 return 0; 116 116 117 117 *anno = *((uint8_t*)item->exinf) != *((uint8_t*)src); 118 118 119 switch (*(uint8_t *)src){119 switch (*(uint8_t *)src) { 120 120 /* ONの場合 */ 121 121 case 0x30: … … 144 144 { 145 145 /* サイズが1以外は受け付けない */ 146 if (size != 1)146 if (size != 1) 147 147 return 0; 148 148 149 149 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 150 150 151 switch (*(uint8_t *)src){151 switch (*(uint8_t *)src) { 152 152 /* 異常発生ありの場合 */ 153 153 case 0x41: … … 170 170 { 171 171 /* サイズが1以外は受け付けない */ 172 if (size != 1)173 return 0; 174 175 switch (*(uint8_t *)src){172 if (size != 1) 173 return 0; 174 175 switch (*(uint8_t *)src) { 176 176 /* 音発生有の場合 */ 177 177 case 0x41: … … 203 203 204 204 /* サイズが1以外は受け付けない */ 205 if (size != 1)205 if (size != 1) 206 206 return 0; 207 207 … … 212 212 data[1] = (*((uint8_t *)src) == 0x41) ? 0x01 : 0x00; 213 213 ret = ecn_brk_wai(data, sizeof(data)); 214 if (ret != E_OK){214 if (ret != E_OK) { 215 215 syslog(LOG_ERROR, "ecn_brk_wai"); 216 216 } … … 228 228 229 229 /* サイズが1以外は受け付けない */ 230 if (size != 1)230 if (size != 1) 231 231 return 0; 232 232 … … 237 237 data[1] = (*((uint8_t *)src) == 0x41) ? 0x01 : 0x00; 238 238 ret = ecn_brk_wai(data, sizeof(data)); 239 if (ret != E_OK){239 if (ret != E_OK) { 240 240 syslog(LOG_ERROR, "ecn_brk_wai"); 241 241 } … … 267 267 268 268 ret2 = get_tim(&now); 269 if (ret2 != E_OK) {269 if (ret2 != E_OK) { 270 270 syslog(LOG_ERROR, "get_tim"); 271 271 return; 272 272 } 273 273 274 for (;;){274 for (;;) { 275 275 prev = now; 276 276 … … 280 280 /* 応答電文待ち */ 281 281 ret = ecn_trcv_esv(&esv, timer); 282 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {282 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) { 283 283 syslog(LOG_ERROR, "ecn_trcv_esv"); 284 284 break; … … 286 286 287 287 ret2 = get_tim(&now); 288 if (ret2 != E_OK) {288 if (ret2 != E_OK) { 289 289 syslog(LOG_ERROR, "get_tim"); 290 290 break; … … 301 301 /* 領域解放 */ 302 302 ret = ecn_rel_esv(esv); 303 if (ret != E_OK) {303 if (ret != E_OK) { 304 304 syslog(LOG_ERROR, "ecn_rel_esv"); 305 305 break; … … 310 310 /* 応答電文待ちの割り込みデータ取得 */ 311 311 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 312 if (ret != E_OK) {312 if (ret != E_OK) { 313 313 syslog(LOG_ERROR, "ecn_get_brk_dat"); 314 314 break; … … 320 320 /* 領域解放 */ 321 321 ret = ecn_rel_esv(esv); 322 if (ret != E_OK) {322 if (ret != E_OK) { 323 323 syslog(LOG_ERROR, "ecn_rel_esv"); 324 324 break; … … 331 331 } 332 332 333 bool_t started = false;334 335 333 void echonet_change_netif_link(uint8_t link_up, uint8_t up) 336 334 { … … 340 338 return; 341 339 342 if (up && !started) { 343 started = true; 344 345 /* ECHONETミドルウェアを起動 */ 346 ret = ecn_sta_svc(); 347 if (ret != E_OK) 348 return; 349 350 /* ECHONETミドルウェアを起動するのを待つ */ 351 dly_tsk(100); 340 if (up) { 341 /* インスタンスリスト通知の送信 */ 342 ret = ecn_ntf_inl(); 343 if (ret != E_OK) { 344 syslog(LOG_ERROR, "ecn_ntf_inl"); 345 } 352 346 } 353 347 … … 363 357 } 364 358 365 enum main_state_t{ 359 enum main_state_t { 360 main_state_start, 366 361 main_state_idle, 367 362 main_state_search, … … 370 365 371 366 int main_timer = TMO_FEVR; 372 enum main_state_t main_state = main_state_ idle;367 enum main_state_t main_state = main_state_start; 373 368 374 369 int main_nop_timer = TMO_FEVR; … … 390 385 gpio_write(&led_red, 0); 391 386 392 /* 1秒後にブザーを検索*/393 main_state = main_state_s earch;387 /* ECHONETミドルウェアを起動するのを待つ */ 388 main_state = main_state_start; 394 389 main_timer = 1000 * 1000; 395 390 391 /* メインタスクを起動 */ 396 392 ER ret = act_tsk(MAIN_TASK); 397 393 if (ret != E_OK) { … … 407 403 int result = main_timer; 408 404 409 if ((result == TMO_FEVR)410 || ((main_nop_timer != TMO_FEVR) && (main_nop_timer < result))) {405 if ((result == TMO_FEVR) 406 || ((main_nop_timer != TMO_FEVR) && (main_nop_timer < result))) { 411 407 result = main_nop_timer; 412 408 } … … 420 416 static void main_progress(int interval) 421 417 { 422 if (main_timer != TMO_FEVR){418 if (main_timer != TMO_FEVR) { 423 419 main_timer -= interval; 424 if (main_timer < 0){420 if (main_timer < 0) { 425 421 main_timer = 0; 426 422 } 427 423 } 428 424 429 if (main_nop_timer != TMO_FEVR){425 if (main_nop_timer != TMO_FEVR) { 430 426 main_nop_timer -= interval; 431 if (main_nop_timer < 0){427 if (main_nop_timer < 0) { 432 428 main_nop_timer = 0; 433 429 } … … 448 444 449 445 eobjid = ecn_get_eobj(esv); 450 if (eobjid == EOBJ_NULL){446 if (eobjid == EOBJ_NULL) { 451 447 syslog(LOG_ERROR, "ecn_get_eobj"); 452 448 return; … … 454 450 455 451 ret = ecn_itr_ini(&enm, esv); 456 if (ret != E_OK){452 if (ret != E_OK) { 457 453 syslog(LOG_ERROR, "ecn_itr_ini"); 458 454 return; 459 455 } 460 456 461 for (;;) {462 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {457 for (;;) { 458 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 463 459 switch (epc) { 464 460 case 0xD6: 465 switch (main_state){461 switch (main_state) { 466 462 case main_state_search: 467 463 if (eobjid == POT_NODE_EOBJ) { … … 475 471 } 476 472 } 477 if (ret != E_BOVR){473 if (ret != E_BOVR) { 478 474 syslog(LOG_ERROR, "ecn_itr_nxt"); 479 475 break; 480 476 } 481 if (enm.is_eof)477 if (enm.is_eof) 482 478 break; 483 479 } … … 490 486 uint8_t p_edt[1]; 491 487 492 switch (main_state){488 switch (main_state) { 493 489 case main_state_idle: 494 490 p_edt[0] = 0x41; /* 音発生有 */ … … 496 492 /* プロパティ設定電文作成 */ 497 493 ret = ecn_esv_seti(&esv, BUZZER_EOBJ, 0xB1, 1, p_edt); 498 if (ret != E_OK){494 if (ret != E_OK) { 499 495 syslog(LOG_ERROR, "ecn_esv_seti"); 500 496 break; … … 503 499 /* 電文送信 */ 504 500 ecn_snd_esv(esv); 505 if (ret != E_OK){501 if (ret != E_OK) { 506 502 syslog(LOG_ERROR, "ecn_snd_esv"); 507 503 break; … … 523 519 uint8_t p_edt[1]; 524 520 525 switch (main_state){521 switch (main_state) { 526 522 case main_state_buzzer_on: 527 523 p_edt[0] = 0x42; /* 音発生無 */ … … 529 525 /* プロパティ設定電文作成 */ 530 526 ret = ecn_esv_seti(&esv, BUZZER_EOBJ, 0xB1, 1, p_edt); 531 if (ret != E_OK){527 if (ret != E_OK) { 532 528 syslog(LOG_ERROR, "ecn_esv_seti"); 533 529 break; … … 536 532 /* 電文送信 */ 537 533 ecn_snd_esv(esv); 538 if (ret != E_OK){534 if (ret != E_OK) { 539 535 syslog(LOG_ERROR, "ecn_snd_esv"); 540 536 break; … … 557 553 } 558 554 559 if (len < 2)560 return; 561 562 switch (brkdat[0]){555 if (len < 2) 556 return; 557 558 switch (brkdat[0]) { 563 559 case 0x01: 564 if (brkdat[1] != 0)560 if (brkdat[1] != 0) 565 561 main_buzzer_on(); 566 562 else … … 568 564 break; 569 565 case 0x02: 570 if (brkdat[1] == 0)566 if (brkdat[1] == 0) 571 567 main_nop_timer = 5000 * 1000; /* 5秒後にブザーON */ 572 568 break; … … 582 578 static void main_timeout() 583 579 { 584 if (main_timer == 0){580 if (main_timer == 0) { 585 581 main_ontimer(); 586 582 } 587 583 588 if (main_nop_timer == 0){584 if (main_nop_timer == 0) { 589 585 main_nop_timeout(); 590 586 } … … 595 591 static void main_ontimer() 596 592 { 597 switch (main_state) 598 { 593 ER ret; 594 595 switch (main_state) { 596 case main_state_start: 597 /* ECHONETミドルウェアを起動 */ 598 ret = ecn_sta_svc(); 599 if (ret != E_OK) { 600 syslog(LOG_ERROR, "ecn_sta_svc"); 601 } 602 603 /* 1秒後にブザーを検索 */ 604 main_state = main_state_search; 605 main_timer = 1000 * 1000; 606 break; 599 607 case main_state_search: 600 608 /* 電気ポット再検索 */ … … 620 628 /* 電気ポット検索 */ 621 629 ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6); 622 if (ret != E_OK){630 if (ret != E_OK) { 623 631 syslog(LOG_ERROR, "ecn_esv_inf_req"); 624 632 return; … … 627 635 /* 電文送信 */ 628 636 ret = ecn_snd_esv(esv); 629 if (ret != E_OK){637 if (ret != E_OK) { 630 638 syslog(LOG_ERROR, "ecn_snd_esv"); 631 639 } -
asp3_tinet_ecnl_arm/trunk/app7_buzzer/src/main.c
r359 r364 79 79 80 80 ID ws_api_mailboxid = MAIN_DATAQUEUE; 81 #ifndef NOUSE_MPF_NET_BUF 81 82 ID ws_mempoolid = MPF_NET_BUF_256; 83 #endif 82 84 83 85 #ifdef IF_ETHER_BTUSB … … 111 113 static void main_timeout(); 112 114 115 extern int ntshell_exit; 116 113 117 int uart_read(char *buf, int cnt, void *extobj) 114 118 { 115 return serial_rea_dat(SIO_PORTID, (char *)buf, cnt); 119 struct main_t *obj = (struct main_t *)extobj; 120 int result; 121 ER ret; 122 int timer; 123 124 obj->prev = obj->now; 125 126 /* タイマー取得 */ 127 timer = main_get_timer(); 128 129 /* 待ち */ 130 ret = serial_trea_dat(SIO_PORTID, buf, cnt, timer); 131 if ((ret < 0) && (ret != E_OK) && (ret != E_TMOUT)) { 132 syslog(LOG_NOTICE, "tslp_tsk ret: %s %d", itron_strerror(ret), timer); 133 ntshell_exit = 1; 134 return -1; 135 } 136 result = (int)ret; 137 138 ret = get_tim(&obj->now); 139 if (ret != E_OK) { 140 syslog(LOG_NOTICE, "get_tim ret: %s", itron_strerror(ret)); 141 ntshell_exit = 1; 142 return -1; 143 } 144 145 /* 時間経過 */ 146 int elapse = obj->now - obj->prev; 147 main_progress(elapse); 148 149 /* タイムアウト処理 */ 150 main_timeout(); 151 152 return result; 116 153 } 117 154 … … 119 156 { 120 157 return serial_wri_dat(SIO_PORTID, buf, cnt); 121 }122 123 unsigned char ntstdio_xi(struct ntstdio_t *handle)124 {125 char buf[1];126 if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)127 return -EIO;128 return buf[0];129 }130 131 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)132 {133 char buf[1];134 buf[0] = c;135 serial_wri_dat(SIO_PORTID, buf, 1);136 158 } 137 159 … … 150 172 main_initialize(); 151 173 152 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);174 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj); 153 175 ntshell_set_prompt(&ntshell, "NTShell>"); 154 176 ntshell_execute(&ntshell); … … 168 190 ER ret; 169 191 170 ntshell_task_init(); 192 #ifdef TOPPERS_OMIT_TECS 193 serial_opn_por(SIO_PORTID); 194 #endif 195 serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV); 196 197 ntshell_task_init(uart_read, uart_write, &main_obj); 171 198 172 199 main_obj.timer = TMO_FEVR; -
asp3_tinet_ecnl_arm/trunk/app7_buzzer/src/main.cfg
r352 r364 54 54 INCLUDE("tinet/tinet_asp.cfg"); 55 55 INCLUDE("tinet_main.cfg"); 56 INCLUDE("netinet/ip_igmp.cfg");57 56 58 57 /* DHCP クライアント */ -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/.cproject
r352 r364 22 22 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 23 23 <option id="toolchain.id" value="gcc-arm-embedded"/> 24 <option id="toolchain.version" value=" 5.4.1.20160919"/>24 <option id="toolchain.version" value="6.3.1.20170620"/> 25 25 </storageModule> 26 26 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 59 59 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.368389066" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 60 60 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.601068640" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 61 <builder buildPath="${workspace_loc:/asp3_dcre}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1149515652" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>61 <builder buildPath="${workspace_loc:/asp3_dcre}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.1149515652" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 62 62 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.519851149" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 63 63 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.279657327" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> … … 127 127 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 128 128 <option id="toolchain.id" value="gcc-arm-embedded"/> 129 <option id="toolchain.version" value=" 5.4.1.20160919"/>129 <option id="toolchain.version" value="6.3.1.20170620"/> 130 130 </storageModule> 131 131 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/Debug/Makefile
r352 r364 56 56 SRCLANG = c 57 57 ifeq ($(SRCLANG),c) 58 LIBS = -lmusl58 LIBS = $(SRCDIR)/../musl-1.1.18/Debug/libmusl.a 59 59 endif 60 60 ifeq ($(SRCLANG),c++) 61 61 USE_CXX = true 62 CXXLIBS = -lstdc++ -lmusl62 CXXLIBS = -lstdc++ $(SRCDIR)/../musl-1.1.18/Debug/libmusl.a 63 63 CXXRTS = cxxrt.o newlibrt.o 64 64 endif … … 150 150 endif 151 151 152 TINETDIR = 153 152 154 # 153 155 # mbedサービスの定義 … … 171 173 CDEFS := $(CDEFS) 172 174 INCLUDES := -I. -I$(SRCDIR)/include $(INCLUDES) -I$(SRCDIR) 173 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L$(SRCDIR)/../musl-1.1.18/Debug175 LDFLAGS := $(LDFLAGS) -L. 174 176 LIBS := $(LIBS) $(CXXLIBS) 175 177 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) … … 192 194 endif 193 195 APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o time.o 194 APPL_CFLAGS := $(APPL_CFLAGS) 196 APPL_CFLAGS := $(APPL_CFLAGS) -nostdinc 195 197 ifdef APPLDIRS 196 198 INCLUDES := $(INCLUDES) $(foreach dir,$(APPLDIRS),-I$(dir)) 197 199 endif 198 200 199 TINETDIR =200 201 ifdef TINETDIR 201 202 # … … 335 336 vpath %.cfg $(APPL_DIRS) 336 337 vpath %.cdl $(APPL_DIRS) 338 vpath %.bin $(APPL_DIRS) 337 339 338 340 # … … 341 343 KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS) 342 344 SYSSVC_OBJS = $(SYSSVC_ASMOBJS) $(SYSSVC_COBJS) $(HIDDEN_OBJS) 343 APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS) 345 APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS) $(APPL_BINOBJS) 344 346 ALL_OBJS = $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 345 347 $(END_OBJS) $(HIDDEN_OBJS) … … 387 389 $(CFG1_OUT): $(START_OBJS) cfg1_out.o $(CFG_DMY) $(END_OBJS) $(HIDDEN_OBJS) 388 390 $(LINK) $(CFLAGS) $(LDFLAGS) $(CFG1_OUT_LDFLAGS) -o $(CFG1_OUT) \ 389 $(START_OBJS) cfg1_out.o $(CFG_DMY) $(END_OBJS) 391 $(START_OBJS) cfg1_out.o $(CFG_DMY) $(END_OBJS) $(HIDDEN_OBJS) 390 392 391 393 cfg1_out.syms: $(CFG1_OUT) … … 416 418 417 419 # 420 # 並列makeのための依存関係の定義 421 # 422 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 423 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 424 | offset.timestamp 425 426 # 418 427 # 特別な依存関係の定義 419 428 # … … 424 433 # 425 434 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 426 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \435 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 427 436 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 428 $(ALL_LIBS)$(END_OBJS)437 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) 429 438 430 439 # … … 597 606 $(CC) -c -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $< 598 607 608 $(APPL_BINOBJS): %.o: %.bin 609 $(OBJCOPY) -B arm -I binary -O elf32-littlearm --rename-section .data=.rodata $< $*.o 610 599 611 # 600 612 # デフォルトコンパイルルールを上書き -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/gdic/adafruit_st7735/adafruit_st7735.c
r352 r364 354 354 355 355 /* 356 * LCDへのRGBデータ送信関数 357 */ 358 ER 359 lcd_writedata4(LCD_Handler_t *hlcd, uint8_t *pbmp, uint16_t width, uint16_t height) 360 { 361 ER ercd = E_OK; 362 int index, i; 363 364 if(width == 0 || height == 0) 365 return ercd; 366 if(hlcd->spi_lock != 0){ 367 if((ercd = wai_sem(hlcd->spi_lock)) != E_OK) 368 return ercd; 369 } 370 rs_set(PORT_HIGH); 371 cs_set(PORT_LOW); 372 //dly_tsk(100/*us*/); 373 for(index=0; index < height; index++){ 374 uint8_t *p = pbmp; 375 for (i = 0; i < width; i++){ 376 spi_master_write(&hlcd->hspi, *p++); 377 spi_master_write(&hlcd->hspi, *p++); 378 } 379 pbmp -= width*2; 380 } 381 //dly_tsk(100/*us*/); 382 cs_set(PORT_HIGH); 383 if(hlcd->spi_lock != 0) 384 sig_sem(hlcd->spi_lock); 385 return ercd; 386 } 387 388 /* 356 389 * ST7735へのコマンドリスト送信 357 390 */ … … 590 623 lcd_setAddrWindow(hlcd, x0, y0, x0+width-1, y0+height-1); 591 624 lcd_writedata3(hlcd, pbmp, width, height); 625 } 626 627 void 628 lcd_drawImage(LCD_Handler_t *hlcd, uint16_t x0, uint16_t y0, int16_t w, int16_t h, uint8_t *pbmp) 629 { 630 lcd_setAddrWindow(hlcd, x0, y0, x0+w-1, y0+h-1); 631 pbmp += w * (h - 1) * 3; 632 lcd_writedata3(hlcd, pbmp, w, h); 592 633 } 593 634 -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/gdic/adafruit_st7735/adafruit_st7735.h
r352 r364 59 59 #endif 60 60 61 #include <stdbool.h> 61 62 #include "device.h" 62 63 #include "pinmap.h" … … 145 146 #ifndef TOPPERS_MACRO_ONLY 146 147 148 typedef struct GFXfont GFXfont; 149 147 150 /* 148 151 * LCDハンドラ構造体定義 … … 153 156 uint16_t _width; /* 幅ピクセル数 */ 154 157 uint16_t _height; /* 高さピクセル数 */ 158 int16_t cursor_x, cursor_y; 159 uint16_t textcolor, textbgcolor; 160 uint8_t textsize, rotation; 161 bool wrap; 162 GFXfont *gfxFont; 155 163 uint8_t colstart; 156 164 uint8_t rowstart; … … 188 196 extern ER lcd_writedata2(LCD_Handler_t *hlcd, uint16_t c, int cnt); 189 197 extern ER lcd_writedata3(LCD_Handler_t *hlcd, uint8_t *pbmp, uint16_t width, uint16_t height); 198 extern ER lcd_writedata4(LCD_Handler_t *hlcd, uint8_t *pbmp, uint16_t width, uint16_t height); 190 199 191 200 extern void lcd_initB(LCD_Handler_t *hlcd); … … 198 207 extern void lcd_drawFastHLine(LCD_Handler_t *hlcd, int16_t x, int16_t y, int16_t w, uint16_t color); 199 208 extern void lcd_drawBitmap(LCD_Handler_t *hlcd, uint16_t x0, uint16_t y0, uint8_t *pbmp); 209 extern void lcd_drawImage(LCD_Handler_t *hlcd, uint16_t x0, uint16_t y0, int16_t w, int16_t h, uint8_t *pbmp); 200 210 extern void lcd_invertDisplay(LCD_Handler_t *hlcd, bool_t i); 201 211 -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/mbed/hal/spi_api.h
r352 r364 116 116 */ 117 117 int spi_master_write(spi_t *obj, int value); 118 119 /** Write a block out in master mode and receive a value 120 * 121 * The total number of bytes sent and received will be the maximum of 122 * tx_length and rx_length. The bytes written will be padded with the 123 * value 0xff. 124 * 125 * @param[in] obj The SPI peripheral to use for sending 126 * @param[in] tx_buffer Pointer to the byte-array of data to write to the device 127 * @param[in] tx_length Number of bytes to write, may be zero 128 * @param[in] rx_buffer Pointer to the byte-array of data to read from the device 129 * @param[in] rx_length Number of bytes to read, may be zero 130 * @param[in] write_fill Default data transmitted while performing a read 131 * @returns 132 * The number of bytes written and read from the device. This is 133 * maximum of tx_length and rx_length. 134 */ 135 int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, char write_fill); 118 136 119 137 /** Check if a value is available to read -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/mbed/platform/mbed_rtc_time.c
r352 r364 44 44 time_t __time32(time_t *timer) 45 45 #else 46 time_t time(time_t *timer)46 time_t get_time(time_t *timer) 47 47 #endif 48 48 … … 78 78 } 79 79 80 clock_t clock() {80 clock_t get_clock() { 81 81 //_mutex->lock(); 82 82 clock_t t = us_ticker_read(); -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/mbed/targets/TARGET_RENESAS/TARGET_RZ_A1H/spi_api.c
r352 r364 259 259 while(!spi_tend(obj)); 260 260 return spi_read(obj); 261 } 262 263 int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length, 264 char *rx_buffer, int rx_length, char write_fill) { 265 int total = (tx_length > rx_length) ? tx_length : rx_length; 266 267 for (int i = 0; i < total; i++) { 268 char out = (i < tx_length) ? tx_buffer[i] : write_fill; 269 char in = spi_master_write(obj, out); 270 if (i < rx_length) { 271 rx_buffer[i] = in; 272 } 273 } 274 275 return total; 261 276 } 262 277 -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/sample/Makefile
r352 r364 417 417 # 418 418 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 419 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \419 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 420 420 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 421 421 $(ALL_LIBS) $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/syssvc/serial.h
r359 r364 79 79 extern ER serial_opn_por(ID portid) throw(); 80 80 extern ER serial_cls_por(ID portid) throw(); 81 extern ER_UINT serial_ rea_dat(ID portid, char *buf, uint_t len) throw();81 extern ER_UINT serial_trea_dat(ID portid, char *buf, uint_t len, TMO tmout) throw(); 82 82 extern ER_UINT serial_wri_dat(ID portid, const char *buf, uint_t len) throw(); 83 83 extern ER serial_ctl_por(ID portid, uint_t ioctl) throw(); 84 84 extern ER serial_ref_por(ID portid, T_SERIAL_RPOR *pk_rpor) throw(); 85 86 Inline ER_UINT serial_rea_dat(ID portid, char *buf, uint_t len) 87 { 88 return serial_trea_dat(portid, buf, len, TMO_FEVR); 89 } 85 90 86 91 /* -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/syssvc/tSerialAdapter.c
r352 r364 83 83 */ 84 84 ER_UINT 85 serial_ rea_dat(ID portid, char *buf, uint_t len)85 serial_trea_dat(ID portid, char *buf, uint_t len, TMO tmout) 86 86 { 87 87 if (sns_dpn()) { /* コンテキストのチェック */ … … 92 92 } 93 93 94 return(cSerialPort_read(portid - 1, buf, len ));94 return(cSerialPort_read(portid - 1, buf, len, tmout)); 95 95 } 96 96 -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/syssvc/tSerialPort.cdl
r352 r364 57 57 ER open(void); 58 58 ER close(void); 59 ER_UINT read([out,size_is(length)] char *buffer, [in] uint_t length );59 ER_UINT read([out,size_is(length)] char *buffer, [in] uint_t length, [in] TMO tmout); 60 60 ER_UINT write([in,size_is(length)] const char *buffer, [in] uint_t length); 61 61 ER control([in] uint_t ioControl); -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/syssvc/tSerialPortMain.c
r359 r364 397 397 */ 398 398 ER_UINT 399 eSerialPort_read(CELLIDX idx, char *buffer, uint_t length )399 eSerialPort_read(CELLIDX idx, char *buffer, uint_t length, TMO tmout) 400 400 { 401 401 CELLCB *p_cellcb; … … 423 423 while (reacnt < length) { 424 424 if (buffer_empty) { 425 SVC(rercd = cReceiveSemaphore_wait(), 426 gen_ercd_wait(rercd, p_cellcb)); 425 rercd = cReceiveSemaphore_waitTimeout(tmout); 426 if (rercd == E_TMOUT) 427 return E_TMOUT; 428 if (rercd < 0) { 429 gen_ercd_wait(rercd, p_cellcb); 430 ercd = rercd; 431 goto error_exit; 432 } 427 433 } 428 434 SVC(rercd = serialPort_readChar(p_cellcb, &c), rercd); -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/Makefile.tinet
r352 r364 93 93 in_subr.o route_cfg.o 94 94 TINET_CFG_COBJS := $(TINET_CFG_COBJS) tinet_cfg.o 95 TINET_CFG2_OUT_SRCS := $(TINET_CFG2_OUT_SRCS) tinet_cfg.h tinet_cfg.c 95 96 96 97 # IPv6 … … 328 329 329 330 CFG_COBJS := $(CFG_COBJS) $(TINET_CFG_COBJS) 331 CFG2_OUT_SRCS := $(CFG2_OUT_SRCS) $(TINET_CFG2_OUT_SRCS) 330 332 331 333 CLEAN_FILES := $(CLEAN_FILES) $(TINET_CFG_OUT) $(MAKE_TINET_LIB) -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/net/ethernet.h
r352 r364 98 98 #endif /* of #ifndef IF_ETHER_NIC_HDR_ALIGN */ 99 99 100 #if defined(__RX) || defined(_MSC_VER)101 100 #if defined(__RX) 102 101 #pragma pack 103 #el se102 #elif defined(_MSC_VER) 104 103 #pragma pack(push, 1) 105 104 #endif 105 106 #if defined(__RX) || defined(_MSC_VER) 107 106 108 typedef struct t_ether_header { 107 109 … … 116 118 uint16_t type; 117 119 } T_ETHER_HDR; 118 #if defined(__RX)119 #pragma packoption120 #else121 #pragma pack(pop)122 #endif123 120 124 121 #elif defined(TOPPERS_S810_CLG3_85) /* of #if defined(__RX) */ … … 166 163 uint8_t lladdr[ETHER_ADDR_LEN]; 167 164 } __attribute__((packed, aligned(2))) T_ETHER_ADDR; 165 166 #if defined(__RX) 167 #pragma packoption 168 #elif defined(_MSC_VER) 169 #pragma pack(pop) 170 #endif 168 171 169 172 /* -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/net/net_asp.cfg
r352 r364 41 41 42 42 INCLUDE("net/net.cfg"); 43 44 #ifndef NOUSE_MPF_NET_BUF 43 45 44 46 /* … … 169 171 }); 170 172 #endif /* of #if defined(NUM_MPF_NET_BUF6_65536) && NUM_MPF_NET_BUF6_65536 > 0 */ 173 174 #endif -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/net/net_buf.c
r352 r364 68 68 #include <netinet/tcp_var.h> 69 69 70 #ifndef NOUSE_MPF_NET_BUF 71 70 72 /* 71 73 * 関数 … … 226 228 #endif /* of #if defined(NUM_MPF_NET_BUF_128) && NUM_MPF_NET_BUF_128 > 0 */ 227 229 228 #if defined(_IP4_CFG) 230 #if defined(_IP6_CFG) 231 232 #if defined(NUM_MPF_NET_BUF_CSEG) && NUM_MPF_NET_BUF_CSEG > 0 233 { 234 MPF_NET_BUF_CSEG, 235 IF_HDR_SIZE + IP_HDR_SIZE + TCP_HDR_SIZE, 236 237 #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF 238 239 NUM_MPF_NET_BUF_CSEG, 240 241 #endif /* of #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF */ 242 243 }, 244 #endif /* of #if defined(NUM_MPF_NET_BUF_CSEG) && NUM_MPF_NET_BUF_CSEG > 0 */ 245 246 #endif /* of #if defined(_IP6_CFG) */ 229 247 230 248 #if defined(NUM_MPF_NET_BUF_64) && NUM_MPF_NET_BUF_64 > 0 … … 242 260 #endif /* of #if defined(NUM_MPF_NET_BUF_64) && NUM_MPF_NET_BUF_64 > 0 */ 243 261 244 # endif /* of #if defined(_IP4_CFG) */262 #if defined(_IP4_CFG) && !defined(_IP6_CFG) 245 263 246 264 #if defined(NUM_MPF_NET_BUF_CSEG) && NUM_MPF_NET_BUF_CSEG > 0 … … 257 275 }, 258 276 #endif /* of #if defined(NUM_MPF_NET_BUF_CSEG) && NUM_MPF_NET_BUF_CSEG > 0 */ 277 278 #endif /* of #if defined(_IP4_CFG) && !defined(_IP6_CFG) */ 259 279 260 280 }; … … 307 327 308 328 while (1) { 309 if ((error = tget_mpf((ID)net_buf_table[ix].index, (void *)buf, ix == 0 ? tmout : TMO_POL)) == E_OK) {329 if ((error = tget_mpf((ID)net_buf_table[ix].index, (void **)buf, ix == 0 ? tmout : TMO_POL)) == E_OK) { 310 330 (*buf)->idix = (uint8_t)ix; 311 331 (*buf)->len = (uint16_t)minlen; … … 320 340 return error; 321 341 } 322 else if (ix == 0 || net_buf_table[ix].size > maxlen) 342 ix --; 343 if (ix < 0 || net_buf_table[ix].size > maxlen) 323 344 break; 324 ix --;325 345 } 326 346 … … 351 371 352 372 while (1) { 353 if ((error = tget_mpf((ID)net_buf_table[ix].index, (void *)buf,373 if ((error = tget_mpf((ID)net_buf_table[ix].index, (void **)buf, 354 374 ix == sizeof(net_buf_table) / sizeof(T_NET_BUF_ENTRY) - 1 ? tmout : TMO_POL)) == E_OK) { 355 375 (*buf)->idix = (uint8_t)ix; … … 359 379 (*buf)->conn_pos = 0; 360 380 #endif 381 361 382 #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF 362 383 NET_COUNT_NET_BUF(net_buf_table[ix].allocs, 1); … … 454 475 /* 固定メモリプールに返す。*/ 455 476 456 #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF 457 net_buf_table[buf->idix].busies --; 458 #endif 459 if ((error = rel_mpf((ID)net_buf_table[buf->idix].index, buf)) != E_OK) { 460 syslog(LOG_WARNING, "[NET BUF] %s, ID=%d.", itron_strerror(error), buf->idix); 477 int idix = buf->idix; 478 #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF 479 net_buf_table[idix].busies --; 480 #endif 481 if ((error = rel_mpf((ID)net_buf_table[idix].index, buf)) != E_OK) { 482 syslog(LOG_WARNING, "[NET BUF] %s, ID=%d.", itron_strerror(error), idix); 461 483 } 462 484 } … … 509 531 return (uint_t)net_buf_table[0].size; 510 532 } 533 534 #else 535 #include <stdlib.h> 536 537 /* 538 * tget_net_buf_ex -- ネットワークバッファを獲得する(拡張機能)。 539 */ 540 541 ER 542 tget_net_buf_ex (T_NET_BUF **buf, uint_t minlen, uint_t maxlen, ATR nbatr, TMO tmout) 543 { 544 uint_t len = (minlen > maxlen) ? minlen : maxlen; 545 *buf = (T_NET_BUF *)malloc(sizeof(T_NET_BUF) - sizeof(((T_NET_BUF *)0)->buf) + len); 546 if (*buf == NULL) 547 return E_NOMEM; 548 549 (*buf)->idix = 0; 550 (*buf)->len = (uint16_t)len; 551 (*buf)->flags = 0; 552 #ifdef IF_ETHER_MULTI_NIC 553 (*buf)->conn_pos = 0; 554 #endif 555 556 return E_OK; 557 } 558 559 /* 560 * tget_net_buf -- ネットワークバッファを獲得する(互換)。 561 */ 562 563 ER 564 tget_net_buf (T_NET_BUF **buf, uint_t len, TMO tmout) 565 { 566 return tget_net_buf_ex(buf, len, len, NBA_SEARCH_ASCENT, tmout); 567 } 568 569 570 /* 571 * rel_net_buf -- ネットワークバッファを返却する。 572 */ 573 574 ER 575 rel_net_buf (T_NET_BUF *buf) 576 { 577 free(buf); 578 579 return E_OK; 580 } 581 582 583 /* 584 * net_buf_max_siz -- ネットワークバッファの最大サイズを返す。 585 */ 586 587 uint_t 588 net_buf_max_siz (void) 589 { 590 return (uint_t)IF_PDU_SIZE; 591 } 592 593 #endif -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netapp/dbg_cons.c
r352 r364 666 666 "IX Expire State MAC Address IP Address\n"); 667 667 668 /* expire の単位は [ ms]。*/668 /* expire の単位は [us]。*/ 669 669 get_tim(&now); 670 670 cache = nd6_get_cache(); … … 705 705 "IX Expire MAC Address IP Address\n"); 706 706 707 /* expire の単位は [ ms]。*/707 /* expire の単位は [us]。*/ 708 708 cache = arp_get_cache(); 709 709 for (ix = 0; ix < NUM_ARP_ENTRY; ix ++) { … … 753 753 WAI_NET_CONS_PRINTF(); 754 754 get_tim(&now); 755 cons_printf(portid, "ネットワーク統計情報\t経過時間[ ms]\t%lu\t", now);755 cons_printf(portid, "ネットワーク統計情報\t経過時間[us]\t%lu\t", now); 756 756 if (now > (1000 * 3600 * 24)) 757 757 cons_printf(portid, "%3lu日 %2lu時間 %2lu分 %2lu秒\n", … … 938 938 } 939 939 940 cons_printf(portid, "\nネットワーク統計情報\t経過時間[ ms]\t%lu\t", now);940 cons_printf(portid, "\nネットワーク統計情報\t経過時間[us]\t%lu\t", now); 941 941 if (now > (1000 * 3600 * 24)) 942 942 cons_printf(portid, "%3lu日 %2lu時間 %2lu分 %2lu秒\n", … … 1065 1065 WAI_NET_CONS_PRINTF(); 1066 1066 get_tim(&now); 1067 cons_printf(portid, "ネットワークバッファ情報\t経過時間[ ms]\t%u\n", now);1067 cons_printf(portid, "ネットワークバッファ情報\t経過時間[us]\t%u\n", now); 1068 1068 1069 1069 #if NET_COUNT_ENABLE … … 1577 1577 cons_printf(portid, " IP Address\n"); 1578 1578 1579 /* expire の単位は [ ms]。*/1579 /* expire の単位は [us]。*/ 1580 1580 get_tim(&now); 1581 1581 dr = nd6_get_drl(&count); … … 2298 2298 2299 2299 cons_printf(portid, "ND:\n"); 2300 cons_printf(portid, " TMO_ND6_RTR_SOL_DELAY: %5d[ ms]\n", TMO_ND6_RTR_SOL_DELAY);2301 cons_printf(portid, " TMO_ND6_RTR_SOL_INTERVAL: %5d[ ms]\n", TMO_ND6_RTR_SOL_INTERVAL);2300 cons_printf(portid, " TMO_ND6_RTR_SOL_DELAY: %5d[us]\n", TMO_ND6_RTR_SOL_DELAY); 2301 cons_printf(portid, " TMO_ND6_RTR_SOL_INTERVAL: %5d[us]\n", TMO_ND6_RTR_SOL_INTERVAL); 2302 2302 cons_printf(portid, " NUM_IP6_DAD_COUNT: %5d\n", NUM_IP6_DAD_COUNT); 2303 2303 cons_printf(portid, " NUM_ND6_CACHE_ENTRY: %5d\n", NUM_ND6_CACHE_ENTRY); -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netapp/dhcp4_cli.c
r352 r364 2031 2031 2032 2032 /* 休止する。*/ 2033 if (error == E_OK) 2034 syslog(LOG_NOTICE, "[DHCP4C] lease released, go to sleep."); 2033 if (error == E_OK) { 2034 if (ct->fsm != DHCP4_FSM_SLEEP) 2035 syslog(LOG_NOTICE, "[DHCP4C] lease released, go to sleep."); 2036 } 2035 2037 else { 2036 2038 syslog(LOG_NOTICE, "[DHCP4C] server not available, go to sleep, error: %s.", itron_strerror(error)); … … 2158 2160 2159 2161 /* 休止する。*/ 2160 if (ct->error == E_OK) 2161 syslog(LOG_NOTICE, "[DHCP4C] lease released, go to sleep."); 2162 if (ct->error == E_OK) { 2163 if (ct->fsm != DHCP4_FSM_SLEEP) 2164 syslog(LOG_NOTICE, "[DHCP4C] lease released, go to sleep."); 2165 } 2162 2166 else { 2163 2167 syslog(LOG_NOTICE, "[DHCP4C] server not available, go to sleep, error: %s.", itron_strerror(ct->error)); -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netapp/wwws.c
r352 r364 708 708 len += put_str(cepid, srbuf, response); 709 709 get_tim(&finish); 710 syslog(LOG_NOTICE, "[WWWn:%02u SND] send: index.html, len: %4u, time: %lu [ ms]",710 syslog(LOG_NOTICE, "[WWWn:%02u SND] send: index.html, len: %4u, time: %lu [us]", 711 711 cepid, len, (finish - start) * 1000 / SYSTIM_HZ); 712 712 return E_OK; … … 1609 1609 1610 1610 get_tim(&finish); 1611 syslog(LOG_NOTICE, "[WWWn:%02u SND]send: stat.html, len: %4u, time: %lu [ ms]",1611 syslog(LOG_NOTICE, "[WWWn:%02u SND]send: stat.html, len: %4u, time: %lu [us]", 1612 1612 cepid, len, (finish - start) * 1000 / SYSTIM_HZ); 1613 1613 return E_OK; -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet/icmp6.h
r352 r364 291 291 typedef struct t_router_advert_hdr { 292 292 T_ICMP6_HDR hdr; 293 uint32_t reachable; /* [ ms] 到達可能時間 */294 uint32_t retransmit; /* [ ms] 近隣要請送信間隔 */293 uint32_t reachable; /* [us] 到達可能時間 */ 294 uint32_t retransmit; /* [us] 近隣要請送信間隔 */ 295 295 /* この後にオプションが続く */ 296 296 } __attribute__((packed, aligned(2))) T_ROUTER_ADVERT_HDR; -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet/in4_subr.c
r352 r364 287 287 288 288 /* IP ヘッダを設定する。*/ 289 if ((error = in4_set_header(*nbuf, len, dstaddr, srcaddr, proto, ttl)) != E_OK) 289 if ((error = in4_set_header(*nbuf, len, dstaddr, srcaddr, proto, ttl)) != E_OK) { 290 syscall(rel_net_buf(*nbuf)); 291 *nbuf = NULL; 290 292 return error; 293 } 291 294 292 295 /* 4 オクテット境界までパディングで埋める。*/ -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet/in_itron.h
r352 r364 62 62 #define TFN_TCP_ALL (0) 63 63 64 #define TEV_TCP_RCV_OOB ( -0x201)64 #define TEV_TCP_RCV_OOB (0x201) 65 65 66 66 /* UDP 関係 */ … … 75 75 #define TFN_UDP_ALL (0) 76 76 77 #define TEV_UDP_RCV_DAT ( -0x221)77 #define TEV_UDP_RCV_DAT (0x221) 78 78 79 79 /* 一般 */ -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet/tcp_input.c
r352 r364 1364 1364 NTOHS(tcph->dport); 1365 1365 1366 /* SDU 長 より 緊急ポインタが大きい場合 */ 1367 if (tcph->urp > tcph->sum) 1368 goto drop; 1369 1366 1370 find_cep: 1367 1371 -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet/tcp_output.c
r352 r364 369 369 tcph->flags |= TCP_FLG_URG; 370 370 } 371 else 371 else { 372 tcph->urp = 0; 372 373 cep->snd_up = cep->snd_una; 374 } 373 375 374 376 #endif /* of #ifdef TCP_CFG_EXTENTIONS */ -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet/tcp_usrreq.c
r352 r364 897 897 898 898 /* tcp_rcv_buf の割当て長をリセットする。*/ 899 cep->rcv_buf_len = 0;899 cep->rcv_buf_len -= len; 900 900 901 901 /* 通信端点のロックを解除する。*/ -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet/udp_var.h
r352 r364 101 101 typedef ER (*t_udp_callback)(ID cepid, FN fncd, void *p_parblk); 102 102 103 typedef struct t_udp_rcv_dat_para { 104 uint_t len; 105 T_NET_BUF *input; 106 uint_t off; 107 union { 108 T_IPV4EP rep4; 109 T_IPV6EP rep6; 110 }; 111 } T_UDP_RCV_DAT_PARA; 112 103 113 /* 104 114 * UDP 通信端点 -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet/udpn_input.c
r352 r364 75 75 { 76 76 T_UDP_HDR *udph; 77 uint_t len;77 T_UDP_RCV_DAT_PARA para; 78 78 79 79 udph = (T_UDP_HDR *)(input->buf + off); 80 len = (uint_t)(ntohs(udph->ulen) - UDP_HDR_SIZE);80 para.len = (uint_t)(ntohs(udph->ulen) - UDP_HDR_SIZE); 81 81 82 82 if (cep->rcv_tskid != TA_NULL) { /* 非ノンブロッキングコールでペンディング中 */ … … 98 98 /* データをバッファに移す。*/ 99 99 memcpy(cep->rcv_data, GET_UDP_SDU(input, off), 100 (size_t)( len < cep->rcv_len ?len : cep->rcv_len));100 (size_t)(para.len < cep->rcv_len ? para.len : cep->rcv_len)); 101 101 syscall(rel_net_buf(input)); 102 102 … … 104 104 105 105 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 106 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_RCV_DAT, (void*)(uint32_t) len);106 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_RCV_DAT, (void*)(uint32_t)para.len); 107 107 #else 108 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_RCV_DAT, (void*)& len);108 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_RCV_DAT, (void*)¶.len); 109 109 #endif 110 110 else … … 121 121 122 122 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 123 (*cep->callback)(GET_UDP_CEPID(cep), TEV_UDP_RCV_DAT, (void*)(uint32_t) len);123 (*cep->callback)(GET_UDP_CEPID(cep), TEV_UDP_RCV_DAT, (void*)(uint32_t)para.len); 124 124 #else 125 (*cep->callback)(GET_UDP_CEPID(cep), TEV_UDP_RCV_DAT, (void*)&len); 125 para.input = input; 126 para.off = off; 127 #if API_PROTO == API_PROTO_IPV4 128 para.rep4.portno = ntohs(udph->sport); 129 IN_COPY_TO_HOST(¶.rep4.ipaddr, input); 130 #else 131 para.rep6.portno = ntohs(udph->sport); 132 IN_COPY_TO_HOST(¶.rep6.ipaddr, input); 133 #endif 134 (*cep->callback)(GET_UDP_CEPID(cep), TEV_UDP_RCV_DAT, (void*)¶.len); 126 135 #endif 127 136 /* … … 129 138 * データを読み出さなかったことになるので、捨てる。 130 139 */ 131 if (cep->cb_netbuf != NULL) 132 syscall(rel_net_buf(cep->cb_netbuf)); 140 if (cep->cb_netbuf != NULL) { 141 if ((input->flags & NB_FLG_NOREL_IFOUT) == 0) 142 syscall(rel_net_buf(cep->cb_netbuf)); 143 cep->cb_netbuf = NULL; 144 } 133 145 } 134 146 else { -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet/udpn_usrreq.c
r352 r364 411 411 return E_NOEXS; 412 412 #if defined(SUPPORT_INET6) 413 #endif 414 #if defined(SUPPORT_INET4) && defined(SUPPORT_IGMP) && TNUM_UDP4_CEPID > 0 413 #elif defined(SUPPORT_INET4) && defined(SUPPORT_IGMP) && TNUM_UDP4_CEPID > 0 415 414 switch (optname) { 416 415 case IP_MULTICAST_LOOP: … … 488 487 return E_NOEXS; 489 488 #if defined(SUPPORT_INET6) 490 #endif 491 #if defined(SUPPORT_INET4) && defined(SUPPORT_IGMP) && TNUM_UDP4_CEPID > 0 489 #elif defined(SUPPORT_INET4) && defined(SUPPORT_IGMP) && TNUM_UDP4_CEPID > 0 492 490 switch (optname) { 493 491 case IP_MULTICAST_LOOP: -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet/udpn_usrreq_nblk.c
r352 r364 122 122 123 123 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 124 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_ RCV_DAT, (void*)error);124 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_CAN_CEP, (void*)error); 125 125 #else 126 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_ RCV_DAT, (void*)&error);126 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_CAN_CEP, (void*)&error); 127 127 #endif 128 128 else -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet6/in6_subr.c
r352 r364 369 369 370 370 /* IPv6 ヘッダを設定する。*/ 371 if ((error = in6_set_header(*nbuf, len, dstaddr, srcaddr, next, hlim)) != E_OK) 371 if ((error = in6_set_header(*nbuf, len, dstaddr, srcaddr, next, hlim)) != E_OK) { 372 syscall(rel_net_buf(*nbuf)); 373 *nbuf = NULL; 372 374 return error; 375 } 373 376 374 377 /* 4 オクテット境界までパディングで埋める。*/ … … 662 665 * in6_rtredirect -- ルーティング表にエントリを登録する。 663 666 * 664 * 注意: 引数 tmo の単位は [ ms]。667 * 注意: 引数 tmo の単位は [us]。 665 668 */ 666 669 -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet6/in6_var.h
r352 r364 184 184 * vltime と pltime は、追加/変更してからの相対時間 185 185 */ 186 uint32_t vltime; /* 有効時間 [ ms] */187 uint32_t pltime; /* 推奨有効時間 [ ms] */186 uint32_t vltime; /* 有効時間 [us] */ 187 uint32_t pltime; /* 推奨有効時間 [us] */ 188 188 } __attribute__((packed, aligned(2)))T_IN6_ADDR_LIFETIME; 189 189 -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet6/nd6.c
r352 r364 353 353 if (nd6_cache[mix].hold != NULL) { 354 354 syscall(rel_net_buf(nd6_cache[mix].hold)); 355 nd6_cache[mix].hold = NULL; 355 356 } 356 357 fix = mix; … … 562 563 if (ln->hold != NULL) { 563 564 syscall(rel_net_buf(ln->hold)); 565 ln->hold = NULL; 564 566 } 565 567 -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/netinet6/nd6.h
r352 r364 81 81 T_NET_BUF *hold; 82 82 TMO tmout; 83 SYSTIM expire; /* [ ms] 有効時間が切れる時刻 */83 SYSTIM expire; /* [us] 有効時間が切れる時刻 */ 84 84 T_IF_ADDR ifaddr; 85 85 uint8_t state; … … 183 183 typedef struct t_def_router { 184 184 T_IN6_ADDR addr; 185 SYSTIM expire; /* [ ms] 有効時間が切れる時刻 */186 uint32_t lifetime; /* [ ms] 有効時間 */185 SYSTIM expire; /* [us] 有効時間が切れる時刻 */ 186 uint32_t lifetime; /* [us] 有効時間 */ 187 187 uint16_t plistmap; /* プレフィックスマップ */ 188 188 uint8_t flags; /* ルータ通知のフラグ */ -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/tcpip_sym.def
r352 r364 15 15 TMO_UDP_OUTPUT 16 16 TMO_ICMP_OUTPUT 17 TMO_IGMP_OUTPUT 17 18 TMO_ND6_NS_OUTPUT 18 19 TMO_ND6_NA_OUTPUT -
asp3_tinet_ecnl_arm/trunk/asp3_dcre/tinet/tinet_asp.cfg
r352 r364 73 73 INCLUDE("netinet/if_ether.cfg"); 74 74 INCLUDE("netinet/ip.cfg"); 75 INCLUDE("netinet/ip_igmp.cfg"); 75 76 INCLUDE("netinet/tcp.cfg"); 76 77 INCLUDE("netinet/udp.cfg"); -
asp3_tinet_ecnl_arm/trunk/bnep_bridge/.cproject
r352 r364 22 22 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 23 23 <option id="toolchain.id" value="gcc-arm-embedded"/> 24 <option id="toolchain.version" value=" 5.4.1.20160919"/>24 <option id="toolchain.version" value="6.3.1.20170620"/> 25 25 </storageModule> 26 26 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 59 59 <option id="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack.606825282" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.warnStack" useByScannerDiscovery="false" value="100" valueType="string"/> 60 60 <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1276126881" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> 61 <builder buildPath="${workspace_loc:/bnep_bridge}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.691118394" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn=" false" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/>61 <builder buildPath="${workspace_loc:/bnep_bridge}/Debug" id="com.renesas.cdt.managedbuild.gcc.rz.builder.691118394" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.rz.builder"/> 62 62 <tool id="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler.1838763743" name="Cross ARM GNU Assembler" superClass="com.renesas.cdt.managedbuild.gcc.rz.tool.assembler"> 63 63 <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1323004654" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/> … … 127 127 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 128 128 <option id="toolchain.id" value="gcc-arm-embedded"/> 129 <option id="toolchain.version" value=" 5.4.1.20160919"/>129 <option id="toolchain.version" value="6.3.1.20170620"/> 130 130 </storageModule> 131 131 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> -
asp3_tinet_ecnl_arm/trunk/bnep_bridge/Debug/Makefile
r352 r364 153 153 endif 154 154 155 TINETDIR = 156 155 157 # 156 158 # mbedサービスの定義 … … 180 182 -I$(SRCDIR)/../usbhost/src \ 181 183 $(INCLUDES) 182 LDFLAGS := $(LDFLAGS) - Wl,-Map=$(OBJNAME).map,--cref -L.184 LDFLAGS := $(LDFLAGS) -L. 183 185 LIBS := $(LIBS) $(CXXLIBS) 184 186 CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES) 185 187 186 APPLDIRS := $(APPLDIRS) ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src187 APPL_COBJS := $(APPL_COBJS) ntshell_main.o fdtable.o io_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o188 189 188 # 190 189 # アプリケーションプログラムに関する定義 191 190 # 192 191 APPLNAME = bnep_bridge 193 APPLDIRS := $(APPLDIRS) ../src192 APPLDIRS = ../src ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src $(SRCDIR)/$(TINETDIR)/netapp 194 193 APPL_CFG = main.cfg 195 194 APPL_CDL = main.cdl 195 196 APPL_COBJS := $(APPL_COBJS) ntshell_main.o fdtable.o io_stub.o ffarch.o diskio.o ff.o sdfs.o ccsbcs.o ntshell.o text_editor.o text_history.o usrcmd.o vtrecv.o vtsend.o ntlibc.o ntstdio.o ntopt.o syscall.o tlsf.o 196 197 197 198 APPL_DIRS := $(APPLDIRS) $(SRCDIR)/library … … 210 211 endif 211 212 212 TINETDIR =213 213 ifdef TINETDIR 214 214 # … … 216 216 # 217 217 NO_USE_TINET_LIBRARY = true 218 218 219 219 # ネットワークインタフェースの選択、何れか一つ選択する。 220 220 NET_IF = ether 221 221 222 222 # イーサネット・ディバイスドライバの選択 223 223 NET_DEV = if_mbed … … 430 430 431 431 # 432 # 並列makeのための依存関係の定義 433 # 434 $(APPL_OBJS) $(filter-out $(CFG_DMY), $(SYSSVC_OBJS)): | kernel_cfg.timestamp 435 $(APPL_ASMOBJS) $(filter-out $(CFG_DMY), $(SYSSVC_ASMOBJS)) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \ 436 | offset.timestamp 437 438 # 432 439 # 特別な依存関係の定義 433 440 # … … 438 445 # 439 446 $(OBJFILE): $(ALL_OBJS) $(LIBS_DEP) 440 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \447 $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \ 441 448 $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \ 442 449 -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS) -
asp3_tinet_ecnl_arm/trunk/bnep_bridge/src/main.c
r359 r364 118 118 static void main_timeout(); 119 119 120 extern int ntshell_exit; 121 120 122 int uart_read(char *buf, int cnt, void *extobj) 121 123 { 122 return serial_rea_dat(SIO_PORTID, (char *)buf, cnt); 124 struct main_t *obj = (struct main_t *)extobj; 125 int result; 126 ER ret; 127 int timer; 128 129 obj->prev = obj->now; 130 131 /* タイマー取得 */ 132 timer = main_get_timer(); 133 134 /* 待ち */ 135 ret = serial_trea_dat(SIO_PORTID, buf, cnt, timer); 136 if ((ret < 0) && (ret != E_OK) && (ret != E_TMOUT)) { 137 syslog(LOG_NOTICE, "tslp_tsk ret: %s %d", itron_strerror(ret), timer); 138 ntshell_exit = 1; 139 return -1; 140 } 141 result = (int)ret; 142 143 ret = get_tim(&obj->now); 144 if (ret != E_OK) { 145 syslog(LOG_NOTICE, "get_tim ret: %s", itron_strerror(ret)); 146 ntshell_exit = 1; 147 return -1; 148 } 149 150 /* 時間経過 */ 151 int elapse = obj->now - obj->prev; 152 main_progress(elapse); 153 154 /* タイムアウト処理 */ 155 main_timeout(); 156 157 return result; 123 158 } 124 159 … … 126 161 { 127 162 return serial_wri_dat(SIO_PORTID, buf, cnt); 128 }129 130 unsigned char ntstdio_xi(struct ntstdio_t *handle)131 {132 char buf[1];133 if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)134 return -EIO;135 return buf[0];136 }137 138 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)139 {140 char buf[1];141 buf[0] = c;142 serial_wri_dat(SIO_PORTID, buf, 1);143 163 } 144 164 … … 155 175 main_initialize(); 156 176 157 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);177 ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj); 158 178 ntshell_set_prompt(&ntshell, "NTShell>"); 159 179 ntshell_execute(&ntshell); … … 173 193 ER ret; 174 194 175 ntshell_task_init(); 195 #ifdef TOPPERS_OMIT_TECS 196 serial_opn_por(SIO_PORTID); 197 #endif 198 serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV); 199 200 ntshell_task_init(uart_read, uart_write, &main_obj); 176 201 177 202 main_obj.timer = TMO_FEVR; -
asp3_tinet_ecnl_arm/trunk/btstack/.cproject
r352 r364 22 22 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 23 23 <option id="toolchain.id" value="gcc-arm-embedded"/> 24 <option id="toolchain.version" value=" 5.4.1.20160919"/>24 <option id="toolchain.version" value="6.3.1.20170620"/> 25 25 </storageModule> 26 26 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 136 136 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 137 137 <option id="toolchain.id" value="gcc-arm-embedded"/> 138 <option id="toolchain.version" value=" 5.4.1.20160919"/>138 <option id="toolchain.version" value="6.3.1.20170620"/> 139 139 </storageModule> 140 140 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> -
asp3_tinet_ecnl_arm/trunk/curl-7.57.0/.cproject
r352 r364 24 24 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 25 25 <option id="toolchain.id" value="gcc-arm-embedded"/> 26 <option id="toolchain.version" value=" 5.4.1.20160919"/>26 <option id="toolchain.version" value="6.3.1.20170620"/> 27 27 </storageModule> 28 28 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 80 80 <listOptionValue builtIn="false" value="HAVE_CONFIG_H"/> 81 81 <listOptionValue builtIn="false" value="BUILDING_LIBCURL"/> 82 <listOptionValue builtIn="false" value="WOLFSSL_USER_SETTINGS"/> 82 83 </option> 84 <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.files.169831869" name="Include files (-include)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.files" useByScannerDiscovery="false" valueType="includeFiles"/> 83 85 <inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1041134774" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/> 84 86 </tool> … … 145 147 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 146 148 <option id="toolchain.id" value="gcc-arm-embedded"/> 147 <option id="toolchain.version" value=" 5.4.1.20160919"/>149 <option id="toolchain.version" value="6.3.1.20170620"/> 148 150 </storageModule> 149 151 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> -
asp3_tinet_ecnl_arm/trunk/curl-7.57.0/lib/curl_config.h
r352 r364 4 4 /* Location of default ca bundle */ 5 5 /* #undef CURL_CA_BUNDLE */ 6 #define CURL_CA_BUNDLE "0:/certs/ca-bundle.crt" 6 7 7 8 /* define "1" to use built in CA store of SSL library */ … … 573 574 574 575 /* Define to 1 if you have the signal function. */ 575 #define HAVE_SIGNAL 1 576 /* #undef HAVE_SIGNAL */ 576 577 577 578 /* Define to 1 if you have the <signal.h> header file. */ … … 948 949 949 950 /* If you want to build curl with the built-in manual */ 950 #define USE_MANUAL 1 951 /* #undef USE_MANUAL */ 951 952 952 953 /* if mbedTLS is enabled */ -
asp3_tinet_ecnl_arm/trunk/curl-7.57.0/lib/mprintf.c
r352 r364 997 997 { 998 998 unsigned int r, i, j, w, f; 999 unsigned long v;999 unsigned long long v; 1000 1000 char s[16], c, d, *p; 1001 1001 … … 1022 1022 w = w * 10 + c - '0'; 1023 1023 if (c == 'l' || c == 'L') { /* Prefix: Size is long int */ 1024 f |= 4; c = *fmt++; 1024 c = *fmt++; 1025 if (c == 'l' || c == 'L') { /* Prefix: Size is long int */ 1026 f |= 32; c = *fmt++; 1027 } 1028 else { 1029 f |= 4; 1030 } 1025 1031 } 1026 1032 else if (c == 'h') { /* Prefix: Size is short int */ … … 1055 1061 1056 1062 /* Get an argument and put it in numeral */ 1057 v = (f & 4) ? va_arg(arp, long) 1058 : ((f & 16) ? ((d == 'D') ? (long)((short)va_arg(arp, int)) : (long)((unsigned short)va_arg(arp, unsigned int))) 1059 : ((d == 'D') ? (long)va_arg(arp, int) : (long)va_arg(arp, unsigned int))); 1060 if (d == 'D' && (v & 0x80000000)) { 1063 if (f & 4) 1064 v = (long long)va_arg(arp, long); 1065 else if (f & 16) 1066 v = (d == 'D') ? (long long)((short)va_arg(arp, int)) : (long long)((unsigned short)va_arg(arp, unsigned int)); 1067 else if (f & 32) 1068 v = (d == 'D') ? (long long)(va_arg(arp, long long)) : (long long)(va_arg(arp, unsigned long long)); 1069 else 1070 v = (d == 'D') ? (long long)va_arg(arp, int) : (long long)va_arg(arp, unsigned int); 1071 if (d == 'D' && (v & 0x8000000000000000ll)) { 1061 1072 v = 0 - v; 1062 1073 f |= 8; -
asp3_tinet_ecnl_arm/trunk/musl-1.1.18/.cproject
r352 r364 24 24 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 25 25 <option id="toolchain.id" value="gcc-arm-embedded"/> 26 <option id="toolchain.version" value=" 5.4.1.20160919"/>26 <option id="toolchain.version" value="6.3.1.20170620"/> 27 27 </storageModule> 28 28 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 151 151 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 152 152 <option id="toolchain.id" value="gcc-arm-embedded"/> 153 <option id="toolchain.version" value=" 5.4.1.20160919"/>153 <option id="toolchain.version" value="6.3.1.20170620"/> 154 154 </storageModule> 155 155 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> -
asp3_tinet_ecnl_arm/trunk/musl-1.1.18/arch/arm/syscall_arch.h
r352 r364 83 83 long __syscall_ret(unsigned long), __syscall_nr(long nr, ...); 84 84 85 #define __syscall(n, ...) n(__VA_ARGS__) 86 #define __syscall_cp(n, ...) n(__VA_ARGS__) 87 #define syscall(n, ...) __syscall_ret(__syscall(n, __VA_ARGS__)) 88 #define syscall_cp(n, ...) __syscall_ret(__syscall_cp(n, __VA_ARGS__)) 85 #define __syscall0(n) n() 86 #define __syscall1(n,a) n(__scc(a)) 87 #define __syscall2(n,a,b) n(__scc(a),__scc(b)) 88 #define __syscall3(n,a,b,c) n(__scc(a),__scc(b),__scc(c)) 89 #define __syscall4(n,a,b,c,d) n(__scc(a),__scc(b),__scc(c),__scc(d)) 90 #define __syscall5(n,a,b,c,d,e) n(__scc(a),__scc(b),__scc(c),__scc(d),__scc(e)) 91 #define __syscall6(n,a,b,c,d,e,f) n(__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) 92 #define __syscall7(n,a,b,c,d,e,f,g) n(__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f),__scc(g)) 89 93 90 #define __syscall2(n, ...) n(__VA_ARGS__) 91 #define __syscall3(n, ...) n(__VA_ARGS__) 92 #define __syscall_cp2(n, ...) n(__VA_ARGS__) 93 #define __syscall_cp3(n, ...) n(__VA_ARGS__) 94 #define __syscall_cp0(n) n() 95 #define __syscall_cp1(n,a) n(__scc(a)) 96 #define __syscall_cp2(n,a,b) n(__scc(a),__scc(b)) 97 #define __syscall_cp3(n,a,b,c) n(__scc(a),__scc(b),__scc(c)) 98 #define __syscall_cp4(n,a,b,c,d) n(__scc(a),__scc(b),__scc(c),__scc(d)) 99 #define __syscall_cp5(n,a,b,c,d,e) n(__scc(a),__scc(b),__scc(c),__scc(d),__scc(e)) 100 #define __syscall_cp6(n,a,b,c,d,e,f) n(__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) 101 #define __syscall_cp7(n,a,b,c,d,e,f,g) n(__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f),__scc(g)) 102 103 #define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n 104 #define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,) 105 #define __SYSCALL_CONCAT_X(a,b) a##b 106 #define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X(a,b) 107 #define __SYSCALL_DISP(b,...) __SYSCALL_CONCAT(b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__) 94 108 #endif -
asp3_tinet_ecnl_arm/trunk/musl-1.1.18/src/internal/syscall.h
r352 r364 50 50 #define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X(a,b) 51 51 #define __SYSCALL_DISP(b,...) __SYSCALL_CONCAT(b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__) 52 #if 0 52 53 53 #define __syscall(...) __SYSCALL_DISP(__syscall,__VA_ARGS__) 54 54 #define syscall(...) __syscall_ret(__syscall(__VA_ARGS__)) 55 #endif 55 56 56 #define socketcall __socketcall 57 57 #define socketcall_cp __socketcall_cp … … 64 64 #define __syscall_cp5(n,a,b,c,d,e) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),0) 65 65 #define __syscall_cp6(n,a,b,c,d,e,f) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) 66 66 #endif 67 67 #define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp,__VA_ARGS__) 68 68 #define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__)) 69 #endif70 69 71 70 #ifndef SYSCALL_USE_SOCKETCALL -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet.c
r352 r364 56 56 57 57 /* 58 * インスタンスリスト通知の送信 59 */ 60 ER ecn_ntf_inl() 61 { 62 return _ecn_tsk_ntf_inl(); 63 } 64 65 /* 58 66 * ECHONETオブジェクト参照 59 67 * 引数 … … 393 401 return E_PAR; 394 402 395 a_ret = trcv_dtq(ecn_api_ mailboxid, (intptr_t *)&p_msg, fa_tmout);403 a_ret = trcv_dtq(ecn_api_dataqueueid, (intptr_t *)&p_msg, fa_tmout); 396 404 if (a_ret != E_OK) { 397 405 *ppk_esv = NULL; … … 425 433 a_ret = _ecn_fbs_del(a_fbs); 426 434 return a_ret; 435 } 436 437 /* 438 * 応答電文の送信元ノードを取得する 439 */ 440 ID ecn_get_enod(T_EDATA *pk_esv) 441 { 442 const EOBJCB *p_snod; 443 const EOBJINIB *p_sobj = NULL; 444 445 p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender.id); 446 if (p_snod != NULL) { 447 p_sobj = p_snod->profile; 448 } 449 450 if (p_sobj == NULL) 451 return EOBJ_NULL; 452 #ifdef ECHONET_CONTROLLER_EXTENTION 453 if (p_sobj->eprpcnt == 0) 454 return ecn_agent_get_eobj(p_sobj); 455 #endif 456 return 1 + (((intptr_t)p_sobj - (intptr_t)eobjinib_table) / sizeof(EOBJINIB)); 427 457 } 428 458 -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet.h
r352 r364 67 67 typedef enum _echonet_enod_id 68 68 { 69 ENOD_NOT_MATCH_ID = -1, 69 ENOD_NOT_MATCH_ID = -1, /* アドレスID登録なし */ 70 70 ENOD_MULTICAST_ID = 0, /* マルチキャストアドレスID */ 71 71 ENOD_LOCAL_ID = 1, /* 自ノードアドレスID */ … … 279 279 extern const ID ecn_svc_taskid; 280 280 extern const ID ecn_udp_taskid; 281 extern const ID ecn_api_ mailboxid;282 extern const ID ecn_svc_ mailboxid;283 extern const ID ecn_udp_ mailboxid;281 extern const ID ecn_api_dataqueueid; 282 extern const ID ecn_svc_dataqueueid; 283 extern const ID ecn_udp_dataqueueid; 284 284 #ifndef ECHONET_USE_MALLOC 285 285 extern const ID ecn_mempoolid; … … 309 309 310 310 /* 311 * インスタンスリスト通知の送信 312 */ 313 ER ecn_ntf_inl(); 314 315 /* 311 316 * ECHONETオブジェクト参照 312 317 */ … … 392 397 */ 393 398 ER ecn_rel_esv(T_EDATA *pk_esv); 399 400 /* 401 * 応答電文の送信元ノードを取得する 402 */ 403 ID ecn_get_enod(T_EDATA *pk_esv); 394 404 395 405 /* -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet.trb
r352 r364 634 634 const ID _echonet_ecn_svc_taskid = ECHONET_SVC_TASK; 635 635 const ID _echonet_ecn_udp_taskid = ECHONET_UDP_TASK; 636 const ID _echonet_ecn_api_ mailboxid = ECHONET_API_MAILBOX;637 const ID _echonet_ecn_svc_ mailboxid = ECHONET_SVC_MAILBOX;638 const ID _echonet_ecn_udp_ mailboxid = ECHONET_UDP_MAILBOX;636 const ID _echonet_ecn_api_dataqueueid = ECHONET_API_DATAQUEUE; 637 const ID _echonet_ecn_svc_dataqueueid = ECHONET_SVC_DATAQUEUE; 638 const ID _echonet_ecn_udp_dataqueueid = ECHONET_UDP_DATAQUEUE; 639 639 #ifndef ECHONET_USE_MALLOC 640 640 const ID _echonet_ecn_mempoolid = ECHONET_MEMPOOL; -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet_asp.cfg
r352 r364 51 51 52 52 /* 53 * ECHONET Lite API用 メールボックス53 * ECHONET Lite API用データキュー 54 54 */ 55 CRE_DTQ(ECHONET_API_ MAILBOX, { TA_TFIFO, 1, NULL });55 CRE_DTQ(ECHONET_API_DATAQUEUE, { TA_TFIFO, ECHONET_API_DATAQUEUE_COUNT, NULL }); 56 56 57 57 /* 58 * ECHONET Lite サービス処理タスク用 メールボックス58 * ECHONET Lite サービス処理タスク用データキュー 59 59 */ 60 CRE_DTQ(ECHONET_SVC_ MAILBOX, { TA_TFIFO, 1, NULL });60 CRE_DTQ(ECHONET_SVC_DATAQUEUE, { TA_TFIFO, ECHONET_SVC_DATAQUEUE_COUNT, NULL }); 61 61 62 62 /* … … 66 66 67 67 /* 68 * ECHONET Lite UDP通信処理用 メールボックス68 * ECHONET Lite UDP通信処理用データキュー 69 69 */ 70 CRE_DTQ(ECHONET_UDP_ MAILBOX, { TA_TFIFO, 1, NULL });70 CRE_DTQ(ECHONET_UDP_DATAQUEUE, { TA_TFIFO, ECHONET_UDP_DATAQUEUE_COUNT, NULL }); 71 71 72 72 /* -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet_rename.h
r352 r364 47 47 #define ecn_svc_taskid _echonet_ecn_svc_taskid 48 48 #define ecn_udp_taskid _echonet_ecn_udp_taskid 49 #define ecn_api_ mailboxid _echonet_ecn_api_mailboxid50 #define ecn_svc_ mailboxid _echonet_ecn_svc_mailboxid51 #define ecn_udp_ mailboxid _echonet_ecn_udp_mailboxid49 #define ecn_api_dataqueueid _echonet_ecn_api_dataqueueid 50 #define ecn_svc_dataqueueid _echonet_ecn_svc_dataqueueid 51 #define ecn_udp_dataqueueid _echonet_ecn_udp_dataqueueid 52 52 #define ecn_mempoolid _echonet_ecn_mempoolid 53 53 #define ecn_udp_cepid _echonet_ecn_udp_cepid -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet_task.c
r352 r364 77 77 static bool_t g_release_esv; 78 78 79 ER _ecn_tsk_ntf_inl(intptr_t fa_exinf);80 81 79 ER _ecn_tsk_snd_dtq(ECN_FBS_ID fa_rsp_fbs, bool_t from_app) 82 80 { 83 81 ER a_ret; 84 82 T_MSG *msg = (T_MSG *)fa_rsp_fbs.ptr; 85 ID dtqid = ecn_udp_ mailboxid;83 ID dtqid = ecn_udp_dataqueueid; 86 84 int i; 87 85 #ifdef ECN_DBG_PUT_ENA … … 90 88 if (from_app && (((T_EDATA *)fa_rsp_fbs.ptr)->hdr.edata.esv == ESV_INFC)) { 91 89 g_api_tid = ((T_EDATA *)fa_rsp_fbs.ptr)->hdr.ecn_hdr.tid; 92 dtqid = ecn_svc_ mailboxid;90 dtqid = ecn_svc_dataqueueid; 93 91 } 94 92 else { … … 98 96 g_api_tid = ((T_EDATA *)fa_rsp_fbs.ptr)->hdr.ecn_hdr.tid; 99 97 100 dtqid = ecn_udp_ mailboxid;98 dtqid = ecn_udp_dataqueueid; 101 99 break; 102 100 case ENOD_LOCAL_ID: 103 101 if (from_app) 104 dtqid = ecn_svc_ mailboxid;102 dtqid = ecn_svc_dataqueueid; 105 103 else 106 dtqid = ecn_api_ mailboxid;104 dtqid = ecn_api_dataqueueid; 107 105 break; 108 106 case ENOD_API_ID: 109 dtqid = ecn_api_ mailboxid;107 dtqid = ecn_api_dataqueueid; 110 108 break; 111 109 default: … … 121 119 switch (eobjcb_table[i].profile->eobjatr) { 122 120 case EOBJ_SYNC_REMOTE_NODE: 123 dtqid = ecn_udp_ mailboxid;121 dtqid = ecn_udp_dataqueueid; 124 122 break; 125 123 case EOBJ_ASYNC_REMOTE_NODE: 126 dtqid = ecn_svc_ mailboxid;124 dtqid = ecn_svc_dataqueueid; 127 125 break; 128 126 default: … … 131 129 } 132 130 else { 133 dtqid = ecn_udp_ mailboxid;131 dtqid = ecn_udp_dataqueueid; 134 132 } 135 133 break; … … 242 240 #endif 243 241 244 a_ret = trcv_dtq(ecn_svc_ mailboxid, (intptr_t *)&a_mdt.p_msg, a_timer);242 a_ret = trcv_dtq(ecn_svc_dataqueueid, (intptr_t *)&a_mdt.p_msg, a_timer); 245 243 if ((a_ret != E_OK) && (a_ret != E_TMOUT)) { 246 244 ECN_DBG_PUT_2("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret)); … … 867 865 g_release_esv = false; 868 866 869 ECN_CAP_PUT_1("redirect ecn_svc_ mailboxid → ecn_api_mailboxid (esv:0x%02X)",867 ECN_CAP_PUT_1("redirect ecn_svc_dataqueueid → ecn_api_dataqueueid (esv:0x%02X)", 870 868 p_esv->edata.esv); 871 869 fa_fbs_id.ptr->hdr.target.id = ENOD_API_ID; 872 a_ret = snd_dtq(ecn_api_ mailboxid, (intptr_t)fa_fbs_id.ptr);870 a_ret = snd_dtq(ecn_api_dataqueueid, (intptr_t)fa_fbs_id.ptr); 873 871 if (a_ret != E_OK) { 874 872 syslog(LOG_WARNING, "_ecn_tsk_ecn_msg() : snd_dtq() result = %d:%s", a_ret, itron_strerror(a_ret)); … … 2024 2022 req.ptr->hdr.type = ECN_MSG_INTERNAL; 2025 2023 req.ptr->hdr.sender.dtqid = sender; 2026 req.ptr->hdr.target.dtqid = ecn_svc_ mailboxid;2024 req.ptr->hdr.target.dtqid = ecn_svc_dataqueueid; 2027 2025 req.ptr->hdr.reply.dtqid = sender; 2028 2026 … … 2052 2050 2053 2051 res.ptr->hdr.type = ECN_MSG_INTERNAL; 2054 res.ptr->hdr.sender.dtqid = ecn_svc_ mailboxid;2052 res.ptr->hdr.sender.dtqid = ecn_svc_dataqueueid; 2055 2053 res.ptr->hdr.target.dtqid = req.ptr->hdr.reply.dtqid; 2056 res.ptr->hdr.reply.dtqid = ecn_svc_ mailboxid;2054 res.ptr->hdr.reply.dtqid = ecn_svc_dataqueueid; 2057 2055 2058 2056 *pk_res = res; -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet_task.h
r352 r364 110 110 } T_ECN_INTERNAL_MSG; 111 111 112 /* 113 * インスタンスリスト通知の送信 114 */ 115 ER _ecn_tsk_ntf_inl(); 112 116 /* 113 117 * 要求電文作成 -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet_udp6_task.c
r352 r364 151 151 152 152 /* echonet_taskに送る */ 153 a_ret = snd_dtq(ecn_svc_ mailboxid, (intptr_t)a_fbs_id.ptr);154 if (a_ret != E_OK) { 155 ECN_DBG_PUT_2("[UDP ECHO SRV] snd_dtq(ecn_svc_ mailboxid) result = %d:%s", a_ret, itron_strerror(a_ret));153 a_ret = snd_dtq(ecn_svc_dataqueueid, (intptr_t)a_fbs_id.ptr); 154 if (a_ret != E_OK) { 155 ECN_DBG_PUT_2("[UDP ECHO SRV] snd_dtq(ecn_svc_dataqueueid) result = %d:%s", a_ret, itron_strerror(a_ret)); 156 156 goto lb_except; 157 157 } … … 201 201 a_timer = ECHONET_UDP_TASK_GET_TIMER; 202 202 203 a_ret = trcv_dtq(ecn_udp_ mailboxid, (intptr_t *)&a_mdt.p_msg, a_timer);203 a_ret = trcv_dtq(ecn_udp_dataqueueid, (intptr_t *)&a_mdt.p_msg, a_timer); 204 204 if ((a_ret != E_OK) && (a_ret != E_TMOUT)) { 205 205 ECN_DBG_PUT_2("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret)); … … 261 261 req.ptr->hdr.type = ECN_MSG_INTERNAL; 262 262 req.ptr->hdr.sender.dtqid = sender; 263 req.ptr->hdr.target.dtqid = ecn_udp_ mailboxid;263 req.ptr->hdr.target.dtqid = ecn_udp_dataqueueid; 264 264 req.ptr->hdr.reply.dtqid = sender; 265 265 … … 289 289 290 290 res.ptr->hdr.type = ECN_MSG_INTERNAL; 291 res.ptr->hdr.sender.dtqid = ecn_udp_ mailboxid;291 res.ptr->hdr.sender.dtqid = ecn_udp_dataqueueid; 292 292 res.ptr->hdr.target.dtqid = req.ptr->hdr.reply.dtqid; 293 res.ptr->hdr.reply.dtqid = ecn_udp_ mailboxid;293 res.ptr->hdr.reply.dtqid = ecn_udp_dataqueueid; 294 294 295 295 *pk_res = res; … … 416 416 else if (memcmp(&a_dst.ipaddr, &locl, sizeof(a_dst.ipaddr)) == 0) { 417 417 /* 送信先が127.0.0.1 → dtqに転送 */ 418 ECN_DBG_PUT_1("redirect ecn_udp_ mailboxid → ecn_svc_mailboxid (esv:0x%02X)",418 ECN_DBG_PUT_1("redirect ecn_udp_dataqueueid → ecn_svc_dataqueueid (esv:0x%02X)", 419 419 ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv); 420 420 … … 462 462 463 463 switch (fncd) { 464 case T FN_UDP_CRE_CEP:464 case TEV_UDP_RCV_DAT: 465 465 case TFN_UDP_RCV_DAT: 466 466 /* ECN_CAP_PUT("[UDP ECHO SRV] callback_nblk_udp() recv: %u", *(int *)p_parblk); */ … … 488 488 return E_OK; 489 489 490 case TFN_UDP_CRE_CEP: 490 491 case TFN_UDP_SND_DAT: 491 492 break; 492 493 default: 493 494 ECN_CAP_PUT_2("[UDP ECHO SRV] fncd:0x%04X(%s)", -fncd, 495 (fncd == TEV_UDP_RCV_DAT ? "TEV_UDP_RCV_DAT" : 494 496 (fncd == TFN_UDP_CRE_CEP ? "TFN_UDP_CRE_CEP" : 495 497 (fncd == TFN_UDP_RCV_DAT ? "TFN_UDP_RCV_DAT" : 496 (fncd == TFN_UDP_SND_DAT ? "TFN_UDP_SND_DAT" : "undef")))) ;498 (fncd == TFN_UDP_SND_DAT ? "TFN_UDP_SND_DAT" : "undef"))))); 497 499 498 500 error = E_PAR; -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet_udp6_task.h
r352 r364 71 71 #endif /* ECHONET_UDP_TASK_STACK_SIZE */ 72 72 73 #ifndef NUM_ECHONET_UDP_ MAILBOX74 #define NUM_ECHONET_UDP_ MAILBOX1075 #endif /* NUM_ECHONET_UDP_ MAILBOX*/73 #ifndef NUM_ECHONET_UDP_DATAQUEUE 74 #define NUM_ECHONET_UDP_DATAQUEUE 10 75 #endif /* NUM_ECHONET_UDP_DATAQUEUE */ 76 76 77 77 /* -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet_udp_task.c
r352 r364 146 146 147 147 /* echonet_taskに送る */ 148 a_ret = snd_dtq(ecn_svc_ mailboxid, (intptr_t)a_fbs_id.ptr);149 if (a_ret != E_OK) { 150 ECN_DBG_PUT_2("[UDP ECHO SRV] snd_dtq(ecn_svc_ mailboxid) result = %d:%s", a_ret, itron_strerror(a_ret));148 a_ret = snd_dtq(ecn_svc_dataqueueid, (intptr_t)a_fbs_id.ptr); 149 if (a_ret != E_OK) { 150 ECN_DBG_PUT_2("[UDP ECHO SRV] snd_dtq(ecn_svc_dataqueueid) result = %d:%s", a_ret, itron_strerror(a_ret)); 151 151 goto lb_except; 152 152 } … … 206 206 a_timer = ECHONET_UDP_TASK_GET_TIMER; 207 207 208 a_ret = trcv_dtq(ecn_udp_ mailboxid, (intptr_t *)&a_mdt.p_msg, a_timer);208 a_ret = trcv_dtq(ecn_udp_dataqueueid, (intptr_t *)&a_mdt.p_msg, a_timer); 209 209 if ((a_ret != E_OK) && (a_ret != E_TMOUT)) { 210 210 ECN_DBG_PUT_2("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret)); … … 266 266 req.ptr->hdr.type = ECN_MSG_INTERNAL; 267 267 req.ptr->hdr.sender.dtqid = sender; 268 req.ptr->hdr.target.dtqid = ecn_udp_ mailboxid;268 req.ptr->hdr.target.dtqid = ecn_udp_dataqueueid; 269 269 req.ptr->hdr.reply.dtqid = sender; 270 270 … … 294 294 295 295 res.ptr->hdr.type = ECN_MSG_INTERNAL; 296 res.ptr->hdr.sender.dtqid = ecn_udp_ mailboxid;296 res.ptr->hdr.sender.dtqid = ecn_udp_dataqueueid; 297 297 res.ptr->hdr.target.dtqid = req.ptr->hdr.reply.dtqid; 298 res.ptr->hdr.reply.dtqid = ecn_udp_ mailboxid;298 res.ptr->hdr.reply.dtqid = ecn_udp_dataqueueid; 299 299 300 300 *pk_res = res; … … 420 420 else if (a_dst.ipaddr == MAKE_IPV4_ADDR(127,0,0,1)) { 421 421 /* 送信先が127.0.0.1 → dtqに転送 */ 422 ECN_DBG_PUT_1("redirect ecn_udp_ mailboxid → ecn_svc_mailboxid (esv:0x%02X)",422 ECN_DBG_PUT_1("redirect ecn_udp_dataqueueid → ecn_svc_dataqueueid (esv:0x%02X)", 423 423 ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv); 424 424 … … 466 466 467 467 switch (fncd) { 468 case T FN_UDP_CRE_CEP:468 case TEV_UDP_RCV_DAT: 469 469 case TFN_UDP_RCV_DAT: 470 470 /* ECN_CAP_PUT("[UDP ECHO SRV] callback_nblk_udp() recv: %u", *(int *)p_parblk); */ … … 492 492 return E_OK; 493 493 494 case TFN_UDP_CRE_CEP: 494 495 case TFN_UDP_SND_DAT: 495 496 break; 496 497 default: 497 498 ECN_CAP_PUT_2("[UDP ECHO SRV] fncd:0x%04X(%s)", -fncd, 499 (fncd == TEV_UDP_RCV_DAT ? "TEV_UDP_RCV_DAT" : 498 500 (fncd == TFN_UDP_CRE_CEP ? "TFN_UDP_CRE_CEP" : 499 501 (fncd == TFN_UDP_RCV_DAT ? "TFN_UDP_RCV_DAT" : 500 (fncd == TFN_UDP_SND_DAT ? "TFN_UDP_SND_DAT" : "undef")))) ;502 (fncd == TFN_UDP_SND_DAT ? "TFN_UDP_SND_DAT" : "undef"))))); 501 503 502 504 error = E_PAR; -
asp3_tinet_ecnl_arm/trunk/ntshell/echonet/echonet_udp_task.h
r352 r364 71 71 #endif /* ECHONET_UDP_TASK_STACK_SIZE */ 72 72 73 #ifndef NUM_ECHONET_UDP_ MAILBOX74 #define NUM_ECHONET_UDP_ MAILBOX1075 #endif /* NUM_ECHONET_UDP_ MAILBOX*/73 #ifndef NUM_ECHONET_UDP_DATAQUEUE 74 #define NUM_ECHONET_UDP_DATAQUEUE 10 75 #endif /* NUM_ECHONET_UDP_DATAQUEUE */ 76 76 77 77 /* -
asp3_tinet_ecnl_arm/trunk/ntshell/fatfs/ffarch.h
r359 r364 41 41 #define FFARCH_STACK_SIZE 512 42 42 43 void ffarch_init( );43 void ffarch_init(void); 44 44 void ffarch_task(intptr_t exinf); 45 int ffarch_get_timer( );45 int ffarch_get_timer(void); 46 46 void ffarch_progress(int elapse); 47 void ffarch_timeout( );47 void ffarch_timeout(void); 48 48 49 49 void sdfs_cychdr(intptr_t exinf); -
asp3_tinet_ecnl_arm/trunk/ntshell/lcd/draw_font.c
r352 r364 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2018 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ … … 41 41 #include <string.h> 42 42 #include <target_syssvc.h> 43 #ifndef ADAFRUIT_SSD1306 43 44 #include "adafruit_st7735.h" 45 #else 46 #include "adafruit_ssd1306.h" 47 #endif 44 48 #include "draw_font.h" 45 #include "misaki_font.h" 46 47 void get_bitmap_font(char *string, unsigned char *bitmap_data, unsigned long *use_chars) 48 { 49 unsigned long len, code; 50 unsigned char i,j,k; 51 unsigned long totalj, totalk; 49 50 void get_bitmap_font(const uint8_t *string, uint8_t *bitmap_data, uint32_t *use_chars) 51 { 52 uint32_t len, code; 53 uint8_t i, j, k; 54 uint32_t totalj, totalk; 52 55 53 56 *use_chars = 0; 54 57 len = 0; 55 if ((string[0] & 0x80) ==0) { len = 1; }58 if ((string[0] & 0x80) == 0) { len = 1; } 56 59 else if ((string[0] & 0xE0) == 0xC0) { len = 2; } 57 60 else if ((string[0] & 0xF0) == 0xE0) { len = 3; } 58 61 else if ((string[0] & 0xF8) == 0xF0) { len = 4; } 59 else { return; 62 else { return; } 60 63 61 64 j = k = totalj = totalk = 0; 62 65 63 if ( len == 1) {66 if (len == 1) { 64 67 code = string[0]; 65 memcpy(bitmap_data, &UTF8_1B_CODE_BITMAP[code][0], 8);68 memcpy(bitmap_data, &UTF8_1B_CODE_BITMAP[code][0], FONT_WIDTH * FONT_HEIGHT / 8); 66 69 *use_chars = 1; 67 70 return; 68 71 } 69 72 70 if ( len == 2) {73 if (len == 2) { 71 74 code = string[0]; 72 75 // 1バイト目サーチ 73 for (i = 0; i < UTF8_CODE_2B_1_NUM; i++) {74 if ( Utf8CodeTable_2B_1st[i][0] == code) {76 for (i = 0; i < UTF8_CODE_2B_1_NUM; i++) { 77 if (Utf8CodeTable_2B_1st[i][0] == code) { 75 78 code = string[1]; 76 for ( j = 0; j < Utf8CodeTable_2B_1st[i][1]; j++) {77 if ( UTF8_2B_CODE_BITMAP[totalk].code == code) {78 memcpy(bitmap_data, UTF8_2B_CODE_BITMAP[totalk].bitmap, 8);79 for (j = 0; j < Utf8CodeTable_2B_1st[i][1]; j++) { 80 if (UTF8_2B_CODE_BITMAP[totalk].code == code) { 81 memcpy(bitmap_data, UTF8_2B_CODE_BITMAP[totalk].bitmap, FONT_WIDTH * FONT_HEIGHT / 8); 79 82 *use_chars = 2; 80 83 return; … … 90 93 } 91 94 92 if ( len == 3) {95 if (len == 3) { 93 96 code = string[0]; 94 97 // 1バイト目サーチ 95 for (i = 0; i < UTF8_CODE_3B_1_NUM; i++) {96 if ( Utf8CodeTable_3B_1st[i][0] == code) {98 for (i = 0; i < UTF8_CODE_3B_1_NUM; i++) { 99 if (Utf8CodeTable_3B_1st[i][0] == code) { 97 100 code = string[1]; 98 101 // 2バイト目サーチ 99 for ( j = 0; j < Utf8CodeTable_3B_1st[i][1]; j++ ){100 if ( Utf8CodeTable_3B_2nd[totalj][0] == code) {102 for (j = 0; j < Utf8CodeTable_3B_1st[i][1]; j++) { 103 if (Utf8CodeTable_3B_2nd[totalj][0] == code) { 101 104 code = string[2]; 102 105 // 3バイト目サーチ 103 for (k = 0; k < Utf8CodeTable_3B_2nd[totalj][1]; k++) {106 for (k = 0; k < Utf8CodeTable_3B_2nd[totalj][1]; k++) { 104 107 if (UTF8_3B_CODE_BITMAP[totalk].code == code) { 105 memcpy(bitmap_data, UTF8_3B_CODE_BITMAP[totalk].bitmap, 8);108 memcpy(bitmap_data, UTF8_3B_CODE_BITMAP[totalk].bitmap, FONT_WIDTH * FONT_HEIGHT / 8); 106 109 *use_chars = 3; 107 110 return; … … 111 114 return; 112 115 } 113 else {/*読み飛ばすbitmap個数を蓄積*/116 else {/*読み飛ばすbitmap個数を蓄積*/ 114 117 totalk += Utf8CodeTable_3B_2nd[totalj][1]; 115 118 } … … 118 121 } 119 122 else {/*読み飛ばすbitmap個数を蓄積*/ 120 for ( j = 0; j < Utf8CodeTable_3B_1st[i][1]; j++) {123 for (j = 0; j < Utf8CodeTable_3B_1st[i][1]; j++) { 121 124 totalk += Utf8CodeTable_3B_2nd[totalj][1]; 122 125 totalj++; … … 128 131 } 129 132 130 void lcd_drawFont(LCD_Handler_t *hlcd, unsigned char *bitmap_data, int x, int y, unsigned short color, unsigned short back_color) 131 { 132 int i, j; 133 134 for(i = 0; i < 8; i++ ) { 135 for(j = 0; j < 8; j++ ) { 136 if (((bitmap_data[i] >> j) & 0x01) == 1){ 137 lcd_drawPixel(hlcd, x - j, y + i, color); 133 void lcd_drawFont(LCD_Handler_t *hlcd, uint8_t *bitmap_data, int x, int y, uint16_t color, uint16_t back_color) 134 { 135 int i, j, b; 136 uint8_t *bitmap = bitmap_data; 137 138 b = 0x80; 139 for (i = 0; i < FONT_HEIGHT; i++) { 140 for (j = 0; j < FONT_WIDTH; j++) { 141 if ((*bitmap & b) != 0) { 142 lcd_drawPixel(hlcd, x + j, y + i, color); 138 143 } 139 144 else { 140 lcd_drawPixel(hlcd, x - j, y + i, back_color); 141 } 142 } 143 } 144 } 145 146 void lcd_drawFontHalf(LCD_Handler_t *hlcd, unsigned char *bitmap_data, int x, int y, unsigned short color, unsigned short back_color) 147 { 148 int i, j; 149 150 for(i = 0; i < 8; i++ ) { 151 for(j = 4; j < 8; j++ ) { 152 if (((bitmap_data[i] >> j) & 0x01) == 1){ 153 lcd_drawPixel(hlcd, x - j, y + i, color); 145 lcd_drawPixel(hlcd, x + j, y + i, back_color); 146 } 147 b >>= 1; 148 if (b == 0) { 149 b = 0x80; 150 bitmap++; 151 } 152 } 153 } 154 } 155 156 void lcd_drawFontHalf(LCD_Handler_t *hlcd, uint8_t *bitmap_data, int x, int y, uint16_t color, uint16_t back_color) 157 { 158 int i, j, b; 159 uint8_t *bitmap = bitmap_data; 160 161 b = 0x80; 162 for (i = 0; i < FONT_HEIGHT; i++) { 163 for (j = 0; j < FONT_HALF_WIDTH; j++) { 164 if ((*bitmap & b) != 0) { 165 lcd_drawPixel(hlcd, x + j, y + i, color); 154 166 } 155 167 else { 156 lcd_drawPixel(hlcd, x - j, y + i, back_color); 157 } 158 } 159 } 160 } 161 162 void lcd_drawString(LCD_Handler_t *hlcd, char *string, int x, int y, unsigned short color, unsigned short back_color ) 163 { 164 unsigned long current_top, use_chars, for_3B_hankaku_code; 165 unsigned char bitmap_data[8], ctrl_code; 166 int local_x, local_y; 168 lcd_drawPixel(hlcd, x + j, y + i, back_color); 169 } 170 b >>= 1; 171 if (b == 0) { 172 b = 0x80; 173 bitmap++; 174 } 175 } 176 } 177 } 178 179 void lcd_drawString(LCD_Handler_t *hlcd, const char *string, int x, int y, uint16_t color, uint16_t back_color) 180 { 181 uint32_t current_top, use_chars, for_3B_hankaku_code; 182 uint8_t bitmap_data[FONT_WIDTH * FONT_HEIGHT / 8], ctrl_code; 183 int local_x, local_y, len = strlen(string); 184 const uint8_t *code = (const uint8_t *)string; 167 185 168 186 local_x = x; … … 170 188 171 189 current_top = 0; 172 while( current_top < strlen(string) ) 173 { 174 memset(bitmap_data,0x0,8); 175 ctrl_code = string[current_top]; 176 get_bitmap_font(&string[current_top], bitmap_data, &use_chars); 177 if(use_chars == 0) 190 while (current_top < len) { 191 memset(bitmap_data, 0x0, FONT_WIDTH * FONT_HEIGHT / 8); 192 ctrl_code = code[current_top]; 193 get_bitmap_font(&code[current_top], bitmap_data, &use_chars); 194 if (use_chars == 0) 178 195 return; 179 196 180 197 //3バイトコード半角文字用 181 if (use_chars == 3) {198 if (use_chars == 3) { 182 199 for_3B_hankaku_code = 0; 183 for_3B_hankaku_code = ( (string[current_top]<< 16) |184 (string[current_top+1] <<8) |185 (string[current_top+2] ));200 for_3B_hankaku_code = ((code[current_top] << 16) | 201 (code[current_top + 1] << 8) | 202 (code[current_top + 2])); 186 203 } 187 204 … … 189 206 190 207 //1バイトコード半角文字 191 if ( use_chars == 1) {192 if (ctrl_code == 0x0D) { // CR208 if (use_chars == 1) { 209 if (ctrl_code == 0x0D) { // CR 193 210 local_x = X_LINE_TO_PIX(hlcd, 0); 194 211 continue; 195 212 } 196 if (ctrl_code == 0x0A) { // LF197 local_y = local_y + 8;213 if (ctrl_code == 0x0A) { // LF 214 local_y = local_y + FONT_HEIGHT; 198 215 continue; 199 216 } 200 217 201 if ( local_x >= hlcd->_width + 4) {218 if (local_x + FONT_HALF_WIDTH > hlcd->_width) { 202 219 local_x = X_LINE_HALF_TO_PIX(hlcd, 0); 203 local_y = local_y + 8;220 local_y = local_y + FONT_HEIGHT; 204 221 } 205 222 lcd_drawFontHalf(hlcd, bitmap_data, local_x, local_y, color, back_color); 206 local_x += 4;223 local_x += FONT_HALF_WIDTH; 207 224 continue; 208 225 } 209 226 210 227 //3バイトコード半角文字 211 if ( use_chars == 3) {212 if ( ( (0xEFBDA1 <= for_3B_hankaku_code) && (for_3B_hankaku_code <= 0xEFBDBF)) ||213 ( (0xEFBE80 <= for_3B_hankaku_code) && (for_3B_hankaku_code <= 0xEFBE9F) )) {228 if (use_chars == 3) { 229 if (((0xEFBDA1 <= for_3B_hankaku_code) && (for_3B_hankaku_code <= 0xEFBDBF)) || 230 ((0xEFBE80 <= for_3B_hankaku_code) && (for_3B_hankaku_code <= 0xEFBE9F))) { 214 231 //3バイトコード半角文字 215 if ( local_x >= hlcd->_width + 4) {232 if (local_x + FONT_HALF_WIDTH > hlcd->_width) { 216 233 local_x = X_LINE_HALF_TO_PIX(hlcd, 0); 217 local_y = local_y + 8;234 local_y = local_y + FONT_HEIGHT; 218 235 } 219 236 lcd_drawFontHalf(hlcd, bitmap_data, local_x, local_y, color, back_color); 220 local_x += 4;237 local_x += FONT_HALF_WIDTH; 221 238 continue; 222 239 } … … 224 241 225 242 //全角文字 226 if ( local_x >= hlcd->_width + 8) {243 if (local_x + FONT_WIDTH > hlcd->_width) { 227 244 local_x = X_LINE_TO_PIX(hlcd, 0); 228 local_y = local_y + 8;245 local_y = local_y + FONT_HEIGHT; 229 246 } 230 247 lcd_drawFont(hlcd, bitmap_data, local_x, local_y, color, back_color); 231 local_x += 8;232 } 233 } 234 248 local_x += FONT_WIDTH; 249 } 250 } 251 -
asp3_tinet_ecnl_arm/trunk/ntshell/lcd/draw_font.h
r352 r364 39 39 #define DRAW_FONT_H 40 40 41 #if defined(SHNM16_FONT) 42 #include "shnm16_font.h" 43 #elif defined(SHNM12_FONT) 44 #include "shnm12_font.h" 45 #else 46 #include "misaki_font.h" 47 #endif 48 41 49 #define DISP_X_ADJ 0 42 50 #define DISP_Y_ADJ 0 43 #define X_ZENKAKU_CHARACTERS(hlcd) ((hlcd)->_width / 8)44 #define X_HANKAKU_CHARACTERS(hlcd) ((hlcd)->_width / 4)45 #define Y_CHARACTERS(hlcd) ((hlcd)->_height / 8)46 #define X_LINE_TO_PIX(hlcd, x) (( 8*(x))-DISP_X_ADJ)47 #define X_LINE_HALF_TO_PIX(hlcd, x) (( 4*(x))-DISP_X_ADJ)48 #define Y_ROW_TO_PIX(hlcd, y) (( 8*(y))-DISP_Y_ADJ)51 #define X_ZENKAKU_CHARACTERS(hlcd) ((hlcd)->_width / FONT_WIDTH) 52 #define X_HANKAKU_CHARACTERS(hlcd) ((hlcd)->_width / FONT_HALF_WIDTH) 53 #define Y_CHARACTERS(hlcd) ((hlcd)->_height / FONT_HEIGHT) 54 #define X_LINE_TO_PIX(hlcd, x) ((FONT_WIDTH*(x))-DISP_X_ADJ) 55 #define X_LINE_HALF_TO_PIX(hlcd, x) ((FONT_HALF_WIDTH*(x))-DISP_X_ADJ) 56 #define Y_ROW_TO_PIX(hlcd, y) ((FONT_HEIGHT*(y))-DISP_Y_ADJ) 49 57 50 58 #ifdef __cplusplus … … 52 60 #endif 53 61 54 void get_bitmap_font(c har *string, unsigned char *bitmap_data, unsigned long*use_chars);55 void lcd_drawFont(LCD_Handler_t *hlcd, u nsigned char *bitmap_data, int x, int y, unsigned short color, unsigned short back_color);56 void lcd_drawFontHalf(LCD_Handler_t *hlcd, u nsigned char *bitmap_data, int x, int y, unsigned short color, unsigned short back_color);57 void lcd_drawString(LCD_Handler_t *hlcd, c har *string, int x, int y, unsigned short color, unsigned short back_color );62 void get_bitmap_font(const uint8_t *string, uint8_t *bitmap_data, uint32_t *use_chars); 63 void lcd_drawFont(LCD_Handler_t *hlcd, uint8_t *bitmap_data, int x, int y, uint16_t color, uint16_t back_color); 64 void lcd_drawFontHalf(LCD_Handler_t *hlcd, uint8_t *bitmap_data, int x, int y, uint16_t color, uint16_t back_color); 65 void lcd_drawString(LCD_Handler_t *hlcd, const char *string, int x, int y, uint16_t color, uint16_t back_color ); 58 66 59 67 #ifdef __cplusplus -
asp3_tinet_ecnl_arm/trunk/ntshell/lcd/misaki_font.c
r352 r364 46 46 47 47 // 1バイトコード 48 unsigned char UTF8_1B_CODE_BITMAP[UTF8_1B_CODE_BITMAP_NUM][8] = {49 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},50 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},51 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},52 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},53 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},54 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},55 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},56 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},57 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},58 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},59 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},60 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},61 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},62 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},63 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},64 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},65 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},66 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},67 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},68 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},69 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},70 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},71 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},72 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},73 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},74 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},75 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},76 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},77 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},78 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},79 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},80 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},81 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},82 {0x4 0, 0x40, 0x40, 0x40, 0x00, 0x40, 0x00, 0x00},83 {0xA 0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},84 {0xA 0, 0xE0, 0xA0, 0xA0, 0xE0, 0xA0, 0x00, 0x00},85 {0x4 0, 0xE0, 0xC0, 0x60, 0xE0, 0x40, 0x00, 0x00},86 {0x0 0, 0x80, 0x20, 0x40, 0x80, 0x20, 0x00, 0x00},87 {0x4 0, 0xA0, 0x40, 0x60, 0xC0, 0xE0, 0x00, 0x00},88 {0x4 0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},89 {0x2 0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x00},90 {0x8 0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00},91 {0x4 0, 0xE0, 0x40, 0xA0, 0x00, 0x00, 0x00, 0x00},92 {0x0 0, 0x40, 0x40, 0xE0, 0x40, 0x40, 0x00, 0x00},93 {0x00, 0x00, 0x0 0, 0x00, 0x00, 0x40, 0x80, 0x00},94 {0x00, 0x0 0, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00},95 {0x00, 0x00, 0x0 0, 0x00, 0x00, 0x40, 0x00, 0x00},96 {0x00, 0x 00, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00},97 {0x0 0, 0x40, 0xA0, 0xE0, 0xA0, 0x40, 0x00, 0x00},98 {0x0 0, 0x40, 0xC0, 0x40, 0x40, 0xE0, 0x00, 0x00},99 {0x0 0, 0xC0, 0x20, 0x40, 0x80, 0xE0, 0x00, 0x00},100 {0x0 0, 0xC0, 0x20, 0x40, 0x20, 0xC0, 0x00, 0x00},101 {0x0 0, 0x20, 0x60, 0xA0, 0xE0, 0x20, 0x00, 0x00},102 {0x0 0, 0xE0, 0x80, 0xC0, 0x20, 0xC0, 0x00, 0x00},103 {0x0 0, 0x60, 0x80, 0xC0, 0xA0, 0x40, 0x00, 0x00},104 {0x0 0, 0xE0, 0x20, 0x40, 0x40, 0x40, 0x00, 0x00},105 {0x0 0, 0x40, 0xA0, 0x40, 0xA0, 0x40, 0x00, 0x00},106 {0x0 0, 0x40, 0xA0, 0x60, 0x20, 0xC0, 0x00, 0x00},107 {0x00, 0x 00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00},108 {0x00, 0x 00, 0x40, 0x00, 0x00, 0x40, 0x80, 0x00},109 {0x0 0, 0x20, 0x40, 0x80, 0x40, 0x20, 0x00, 0x00},110 {0x00, 0x 00, 0xE0, 0x00, 0xE0, 0x00, 0x00, 0x00},111 {0x0 0, 0x80, 0x40, 0x20, 0x40, 0x80, 0x00, 0x00},112 {0x4 0, 0xA0, 0x20, 0x40, 0x00, 0x40, 0x00, 0x00},113 {0x4 0, 0xA0, 0x20, 0x60, 0xA0, 0x40, 0x00, 0x00},114 {0x4 0, 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, 0x00, 0x00},115 {0xC 0, 0xA0, 0xC0, 0xA0, 0xA0, 0xC0, 0x00, 0x00},116 {0x6 0, 0x80, 0x80, 0x80, 0x80, 0x60, 0x00, 0x00},117 {0xC 0, 0xA0, 0xA0, 0xA0, 0xA0, 0xC0, 0x00, 0x00},118 {0xE 0, 0x80, 0xC0, 0x80, 0x80, 0xE0, 0x00, 0x00},119 {0xE 0, 0x80, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00},120 {0x6 0, 0x80, 0x80, 0xA0, 0xA0, 0x60, 0x00, 0x00},121 {0xA 0, 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, 0x00, 0x00},122 {0xE 0, 0x40, 0x40, 0x40, 0x40, 0xE0, 0x00, 0x00},123 {0x2 0, 0x20, 0x20, 0x20, 0xA0, 0x40, 0x00, 0x00},124 {0xA 0, 0xA0, 0xC0, 0xA0, 0xA0, 0xA0, 0x00, 0x00},125 {0x8 0, 0x80, 0x80, 0x80, 0x80, 0xE0, 0x00, 0x00},126 {0xA 0, 0xE0, 0xE0, 0xA0, 0xA0, 0xA0, 0x00, 0x00},127 {0xC 0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0x00, 0x00},128 {0x4 0, 0xA0, 0xA0, 0xA0, 0xA0, 0x40, 0x00, 0x00},129 {0xC 0, 0xA0, 0xA0, 0xC0, 0x80, 0x80, 0x00, 0x00},130 {0x4 0, 0xA0, 0xA0, 0xA0, 0xA0, 0x40, 0x20, 0x00},131 {0xC 0, 0xA0, 0xA0, 0xC0, 0xA0, 0xA0, 0x00, 0x00},132 {0x6 0, 0x80, 0x40, 0x20, 0x20, 0xC0, 0x00, 0x00},133 {0xE 0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00},134 {0xA 0, 0xA0, 0xA0, 0xA0, 0xA0, 0xE0, 0x00, 0x00},135 {0xA 0, 0xA0, 0xA0, 0xA0, 0xC0, 0x80, 0x00, 0x00},136 {0xA 0, 0xA0, 0xA0, 0xE0, 0xE0, 0xA0, 0x00, 0x00},137 {0xA 0, 0xA0, 0x40, 0x40, 0xA0, 0xA0, 0x00, 0x00},138 {0xA 0, 0xA0, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00},139 {0xE 0, 0x20, 0x40, 0x40, 0x80, 0xE0, 0x00, 0x00},140 {0x6 0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x60, 0x00},141 {0xA 0, 0x40, 0xE0, 0x40, 0xE0, 0x40, 0x00, 0x00},142 {0xC 0, 0x40, 0x40, 0x40, 0x40, 0x40, 0xC0, 0x00},143 {0x4 0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},144 {0x00, 0x00, 0x00, 0x 00, 0x00, 0x00, 0xE0, 0x00},145 {0x4 0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},146 {0x00, 0x 00, 0x60, 0xA0, 0xA0, 0x60, 0x00, 0x00},147 {0x8 0, 0x80, 0xC0, 0xA0, 0xA0, 0xC0, 0x00, 0x00},148 {0x00, 0x 00, 0x60, 0x80, 0x80, 0x60, 0x00, 0x00},149 {0x2 0, 0x20, 0x60, 0xA0, 0xA0, 0x60, 0x00, 0x00},150 {0x00, 0x 00, 0x60, 0xE0, 0x80, 0x60, 0x00, 0x00},151 {0x6 0, 0x40, 0xE0, 0x40, 0x40, 0x40, 0x00, 0x00},152 {0x00, 0x 00, 0x60, 0xA0, 0x60, 0x20, 0xC0, 0x00},153 {0x8 0, 0x80, 0xC0, 0xA0, 0xA0, 0xA0, 0x00, 0x00},154 {0x40, 0x 00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00},155 {0x40, 0x 00, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00},156 {0x8 0, 0x80, 0xA0, 0xC0, 0xA0, 0xA0, 0x00, 0x00},157 {0xC 0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00},158 {0x00, 0x 00, 0xC0, 0xE0, 0xE0, 0xA0, 0x00, 0x00},159 {0x00, 0x 00, 0xC0, 0xA0, 0xA0, 0xA0, 0x00, 0x00},160 {0x00, 0x 00, 0x40, 0xA0, 0xA0, 0x40, 0x00, 0x00},161 {0x00, 0x 00, 0xC0, 0xA0, 0xA0, 0xC0, 0x80, 0x00},162 {0x00, 0x 00, 0x60, 0xA0, 0xA0, 0x60, 0x20, 0x00},163 {0x00, 0x 00, 0xA0, 0xC0, 0x80, 0x80, 0x00, 0x00},164 {0x00, 0x 00, 0x60, 0xC0, 0x60, 0xC0, 0x00, 0x00},165 {0x0 0, 0x40, 0xE0, 0x40, 0x40, 0x60, 0x00, 0x00},166 {0x00, 0x 00, 0xA0, 0xA0, 0xA0, 0xE0, 0x00, 0x00},167 {0x00, 0x 00, 0xA0, 0xA0, 0xC0, 0x80, 0x00, 0x00},168 {0x00, 0x 00, 0xA0, 0xA0, 0xE0, 0xE0, 0x00, 0x00},169 {0x00, 0x 00, 0xA0, 0x40, 0x40, 0xA0, 0x00, 0x00},170 {0x00, 0x 00, 0xA0, 0xA0, 0x60, 0x20, 0xC0, 0x00},171 {0x00, 0x 00, 0xE0, 0x20, 0x40, 0xE0, 0x00, 0x00},172 {0x2 0, 0x40, 0x40, 0x80, 0x40, 0x40, 0x20, 0x00},173 {0x4 0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00},174 {0x8 0, 0x40, 0x40, 0x20, 0x40, 0x40, 0x80, 0x00},175 {0xE0, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00},176 {0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00}48 const uint8_t UTF8_1B_CODE_BITMAP[UTF8_1B_CODE_BITMAP_NUM][FONT_HALF_WIDTH * FONT_HEIGHT / 8] = { 49 {0x00, 0x00, 0x00, 0x00}, 50 {0x00, 0x00, 0x00, 0x00}, 51 {0x00, 0x00, 0x00, 0x00}, 52 {0x00, 0x00, 0x00, 0x00}, 53 {0x00, 0x00, 0x00, 0x00}, 54 {0x00, 0x00, 0x00, 0x00}, 55 {0x00, 0x00, 0x00, 0x00}, 56 {0x00, 0x00, 0x00, 0x00}, 57 {0x00, 0x00, 0x00, 0x00}, 58 {0x00, 0x00, 0x00, 0x00}, 59 {0x00, 0x00, 0x00, 0x00}, 60 {0x00, 0x00, 0x00, 0x00}, 61 {0x00, 0x00, 0x00, 0x00}, 62 {0x00, 0x00, 0x00, 0x00}, 63 {0x00, 0x00, 0x00, 0x00}, 64 {0x00, 0x00, 0x00, 0x00}, 65 {0x00, 0x00, 0x00, 0x00}, 66 {0x00, 0x00, 0x00, 0x00}, 67 {0x00, 0x00, 0x00, 0x00}, 68 {0x00, 0x00, 0x00, 0x00}, 69 {0x00, 0x00, 0x00, 0x00}, 70 {0x00, 0x00, 0x00, 0x00}, 71 {0x00, 0x00, 0x00, 0x00}, 72 {0x00, 0x00, 0x00, 0x00}, 73 {0x00, 0x00, 0x00, 0x00}, 74 {0x00, 0x00, 0x00, 0x00}, 75 {0x00, 0x00, 0x00, 0x00}, 76 {0x00, 0x00, 0x00, 0x00}, 77 {0x00, 0x00, 0x00, 0x00}, 78 {0x00, 0x00, 0x00, 0x00}, 79 {0x00, 0x00, 0x00, 0x00}, 80 {0x00, 0x00, 0x00, 0x00}, 81 {0x00, 0x00, 0x00, 0x00}, 82 {0x44, 0x44, 0x04, 0x00}, 83 {0xAA, 0x00, 0x00, 0x00}, 84 {0xAE, 0xAA, 0xEA, 0x00}, 85 {0x4E, 0xC6, 0xE4, 0x00}, 86 {0x08, 0x24, 0x82, 0x00}, 87 {0x4A, 0x46, 0xCE, 0x00}, 88 {0x48, 0x00, 0x00, 0x00}, 89 {0x24, 0x44, 0x44, 0x20}, 90 {0x84, 0x44, 0x44, 0x80}, 91 {0x4E, 0x4A, 0x00, 0x00}, 92 {0x04, 0x4E, 0x44, 0x00}, 93 {0x00, 0x00, 0x04, 0x80}, 94 {0x00, 0x0E, 0x00, 0x00}, 95 {0x00, 0x00, 0x04, 0x00}, 96 {0x00, 0x24, 0x80, 0x00}, 97 {0x04, 0xAE, 0xA4, 0x00}, 98 {0x04, 0xC4, 0x4E, 0x00}, 99 {0x0C, 0x24, 0x8E, 0x00}, 100 {0x0C, 0x24, 0x2C, 0x00}, 101 {0x02, 0x6A, 0xE2, 0x00}, 102 {0x0E, 0x8C, 0x2C, 0x00}, 103 {0x06, 0x8C, 0xA4, 0x00}, 104 {0x0E, 0x24, 0x44, 0x00}, 105 {0x04, 0xA4, 0xA4, 0x00}, 106 {0x04, 0xA6, 0x2C, 0x00}, 107 {0x00, 0x40, 0x04, 0x00}, 108 {0x00, 0x40, 0x04, 0x80}, 109 {0x02, 0x48, 0x42, 0x00}, 110 {0x00, 0xE0, 0xE0, 0x00}, 111 {0x08, 0x42, 0x48, 0x00}, 112 {0x4A, 0x24, 0x04, 0x00}, 113 {0x4A, 0x26, 0xA4, 0x00}, 114 {0x4A, 0xAE, 0xAA, 0x00}, 115 {0xCA, 0xCA, 0xAC, 0x00}, 116 {0x68, 0x88, 0x86, 0x00}, 117 {0xCA, 0xAA, 0xAC, 0x00}, 118 {0xE8, 0xC8, 0x8E, 0x00}, 119 {0xE8, 0xC8, 0x88, 0x00}, 120 {0x68, 0x8A, 0xA6, 0x00}, 121 {0xAA, 0xAE, 0xAA, 0x00}, 122 {0xE4, 0x44, 0x4E, 0x00}, 123 {0x22, 0x22, 0xA4, 0x00}, 124 {0xAA, 0xCA, 0xAA, 0x00}, 125 {0x88, 0x88, 0x8E, 0x00}, 126 {0xAE, 0xEA, 0xAA, 0x00}, 127 {0xCA, 0xAA, 0xAA, 0x00}, 128 {0x4A, 0xAA, 0xA4, 0x00}, 129 {0xCA, 0xAC, 0x88, 0x00}, 130 {0x4A, 0xAA, 0xA4, 0x20}, 131 {0xCA, 0xAC, 0xAA, 0x00}, 132 {0x68, 0x42, 0x2C, 0x00}, 133 {0xE4, 0x44, 0x44, 0x00}, 134 {0xAA, 0xAA, 0xAE, 0x00}, 135 {0xAA, 0xAA, 0xC8, 0x00}, 136 {0xAA, 0xAE, 0xEA, 0x00}, 137 {0xAA, 0x44, 0xAA, 0x00}, 138 {0xAA, 0x44, 0x44, 0x00}, 139 {0xE2, 0x44, 0x8E, 0x00}, 140 {0x64, 0x44, 0x44, 0x60}, 141 {0xA4, 0xE4, 0xE4, 0x00}, 142 {0xC4, 0x44, 0x44, 0xC0}, 143 {0x4A, 0x00, 0x00, 0x00}, 144 {0x00, 0x00, 0x00, 0xE0}, 145 {0x42, 0x00, 0x00, 0x00}, 146 {0x00, 0x6A, 0xA6, 0x00}, 147 {0x88, 0xCA, 0xAC, 0x00}, 148 {0x00, 0x68, 0x86, 0x00}, 149 {0x22, 0x6A, 0xA6, 0x00}, 150 {0x00, 0x6E, 0x86, 0x00}, 151 {0x64, 0xE4, 0x44, 0x00}, 152 {0x00, 0x6A, 0x62, 0xC0}, 153 {0x88, 0xCA, 0xAA, 0x00}, 154 {0x40, 0x44, 0x44, 0x00}, 155 {0x40, 0x44, 0x44, 0x80}, 156 {0x88, 0xAC, 0xAA, 0x00}, 157 {0xC4, 0x44, 0x44, 0x00}, 158 {0x00, 0xCE, 0xEA, 0x00}, 159 {0x00, 0xCA, 0xAA, 0x00}, 160 {0x00, 0x4A, 0xA4, 0x00}, 161 {0x00, 0xCA, 0xAC, 0x80}, 162 {0x00, 0x6A, 0xA6, 0x20}, 163 {0x00, 0xAC, 0x88, 0x00}, 164 {0x00, 0x6C, 0x6C, 0x00}, 165 {0x04, 0xE4, 0x46, 0x00}, 166 {0x00, 0xAA, 0xAE, 0x00}, 167 {0x00, 0xAA, 0xC8, 0x00}, 168 {0x00, 0xAA, 0xEE, 0x00}, 169 {0x00, 0xA4, 0x4A, 0x00}, 170 {0x00, 0xAA, 0x62, 0xC0}, 171 {0x00, 0xE2, 0x4E, 0x00}, 172 {0x24, 0x48, 0x44, 0x20}, 173 {0x44, 0x44, 0x44, 0x40}, 174 {0x84, 0x42, 0x44, 0x80}, 175 {0xE0, 0x00, 0x00, 0x00}, 176 {0x00, 0x00, 0x00, 0x00} 177 177 }; 178 178 179 179 // 2バイトコード 1バイト目 180 unsigned charUtf8CodeTable_2B_1st[UTF8_CODE_2B_1_NUM][2] = {180 const uint8_t Utf8CodeTable_2B_1st[UTF8_CODE_2B_1_NUM][2] = { 181 181 {0xC2, 0x06}, 182 182 {0xC3, 0x02}, … … 187 187 }; 188 188 // 2バイトコード 2バイト目 bitmapデータ 189 struct utf8_code_bitmap UTF8_2B_CODE_BITMAP[UTF8_2B_CODE_BITMAP_NUM] = {189 const struct utf8_code_bitmap UTF8_2B_CODE_BITMAP[UTF8_2B_CODE_BITMAP_NUM] = { 190 190 {0xA7, {0x1C, 0x20, 0x18, 0x24, 0x18, 0x04, 0x38, 0x00}}, 191 191 {0xA8, {0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}, … … 313 313 314 314 // 3バイトコード 1バイト目 315 unsigned charUtf8CodeTable_3B_1st[UTF8_CODE_3B_1_NUM][2] = {315 const uint8_t Utf8CodeTable_3B_1st[UTF8_CODE_3B_1_NUM][2] = { 316 316 {0xE2, 0x0E}, 317 317 {0xE3, 0x04}, … … 325 325 }; 326 326 // 3バイトコード 2バイト目 327 unsigned charUtf8CodeTable_3B_2nd[UTF8_CODE_3B_2_NUM][2] = {327 const uint8_t Utf8CodeTable_3B_2nd[UTF8_CODE_3B_2_NUM][2] = { 328 328 {0x80, 0x0F}, 329 329 {0x84, 0x02}, … … 673 673 674 674 // 3バイトコード 3バイト目 bitmapデータ 675 struct utf8_code_bitmap UTF8_3B_CODE_BITMAP[UTF8_3B_CODE_BITMAP_NUM] = {675 const struct utf8_code_bitmap UTF8_3B_CODE_BITMAP[UTF8_3B_CODE_BITMAP_NUM] = { 676 676 { 0x90 ,{0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00}}, 677 677 { 0x95 ,{0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00}}, -
asp3_tinet_ecnl_arm/trunk/ntshell/lcd/misaki_font.h
r352 r364 39 39 #define MISAKI_FONT_H 40 40 41 #include <stdint.h> 42 43 #define FONT_HALF_WIDTH 4 44 #define FONT_WIDTH 8 45 #define FONT_HEIGHT 8 46 41 47 struct utf8_code_bitmap { 42 unsigned charcode;43 unsigned char bitmap[8];48 const uint8_t code; 49 const uint8_t bitmap[FONT_WIDTH * FONT_HEIGHT / 8]; 44 50 }; 45 51 … … 48 54 #define UTF8_CODE_3B_2_NUM (343+1) /*半角追加2/2*/ 49 55 50 #define UTF8_CODE_BITMAP_NUM 6879 /*トータル*/51 56 #define UTF8_1B_CODE_BITMAP_NUM 128 52 57 #define UTF8_2B_CODE_BITMAP_NUM 122 /*"¬","\","¢""£"移動)*/ … … 54 59 55 60 // 1バイトコード 56 extern unsigned char UTF8_1B_CODE_BITMAP[UTF8_1B_CODE_BITMAP_NUM][8];61 extern const uint8_t UTF8_1B_CODE_BITMAP[UTF8_1B_CODE_BITMAP_NUM][FONT_HALF_WIDTH * FONT_HEIGHT / 8]; 57 62 58 63 // 2バイトコード 1バイト目 59 extern unsigned charUtf8CodeTable_2B_1st[UTF8_CODE_2B_1_NUM][2];64 extern const uint8_t Utf8CodeTable_2B_1st[UTF8_CODE_2B_1_NUM][2]; 60 65 // 2バイトコード 2バイト目 bitmapデータ 61 extern struct utf8_code_bitmap UTF8_2B_CODE_BITMAP[UTF8_2B_CODE_BITMAP_NUM];66 extern const struct utf8_code_bitmap UTF8_2B_CODE_BITMAP[UTF8_2B_CODE_BITMAP_NUM]; 62 67 63 68 // 3バイトコード 1バイト目 64 extern unsigned charUtf8CodeTable_3B_1st[UTF8_CODE_3B_1_NUM][2];69 extern const uint8_t Utf8CodeTable_3B_1st[UTF8_CODE_3B_1_NUM][2]; 65 70 // 3バイトコード 2バイト目 66 extern unsigned charUtf8CodeTable_3B_2nd[UTF8_CODE_3B_2_NUM][2];71 extern const uint8_t Utf8CodeTable_3B_2nd[UTF8_CODE_3B_2_NUM][2]; 67 72 68 73 // 3バイトコード 3バイト目 bitmapデータ 69 extern struct utf8_code_bitmap UTF8_3B_CODE_BITMAP[UTF8_3B_CODE_BITMAP_NUM];74 extern const struct utf8_code_bitmap UTF8_3B_CODE_BITMAP[UTF8_3B_CODE_BITMAP_NUM]; 70 75 71 76 #endif /* MISAKI_FONT_H */ -
asp3_tinet_ecnl_arm/trunk/ntshell/src/echonet_app_config.h
r352 r364 40 40 41 41 #define ECHONET_TASK_STACK_SIZE 1024 /* ECNL UDPタスク用スタック領域のサイズ */ 42 43 #define ECHONET_API_DATAQUEUE_COUNT 5 /* ECHONET Lite API用データキュー */ 44 #define ECHONET_SVC_DATAQUEUE_COUNT 5 /* ECHONET Lite サービス処理タスク用データキュー */ 45 #define ECHONET_UDP_DATAQUEUE_COUNT 5 /* ECHONET Lite UDP通信処理用データキュー */ 42 46 43 47 /* -
asp3_tinet_ecnl_arm/trunk/ntshell/src/fdtable.c
r359 r364 45 45 #include "target_syssvc.h" 46 46 #ifndef NTSHELL_NO_SOCKET 47 #include <tinet_defs.h> 47 48 #include <tinet_config.h> 49 #include <net/net.h> 50 #include <net/net_endian.h> 48 51 #include <netinet/in.h> 49 52 #include <netinet/in_itron.h> … … 55 58 #include <net/net.h> 56 59 #include <net/if_var.h> 60 #include <netinet/udp.h> 57 61 #include <netinet/udp_var.h> 58 62 #include <netinet/tcp.h> 59 63 #include <netinet/tcp_var.h> 64 #include <net/net_buf.h> 60 65 #endif 61 66 #include "ff.h" … … 69 74 #define IO_TYPE_DIR 3 70 75 #define IO_TYPE_TCP 4 71 #define IO_TYPE_UDP 76 #define IO_TYPE_UDP 5 72 77 73 78 static struct _IO_FILE fd_table[8 * sizeof(FLGPTN)] = { … … 85 90 continue; 86 91 92 memset(fp, 0, sizeof(struct _IO_FILE)); 87 93 fp->fd = fd; 88 94 fp->type = type; … … 280 286 #endif 281 287 288 void memor(void *dst, void *src, size_t len) 289 { 290 uint8_t *d = (uint8_t *)dst; 291 uint8_t *s = (uint8_t *)src; 292 uint8_t *e = &s[len]; 293 294 while (s < e) { 295 *d++ |= *s++; 296 } 297 } 298 282 299 struct fd_events { 283 300 int count; … … 304 321 } 305 322 306 memcpy(&evts.readfds, rfds, sizeof(fd_set)); 307 memcpy(&evts.writefds, wfds, sizeof(fd_set)); 308 memcpy(&evts.errorfds, efds, sizeof(fd_set)); 323 if (rfds != NULL) 324 memcpy(&evts.readfds, rfds, sizeof(fd_set)); 325 else 326 memset(&evts.readfds, 0, sizeof(fd_set)); 327 if (wfds != NULL) 328 memcpy(&evts.writefds, wfds, sizeof(fd_set)); 329 else 330 memset(&evts.writefds, 0, sizeof(fd_set)); 331 if (efds != NULL) 332 memcpy(&evts.errorfds, efds, sizeof(fd_set)); 333 else 334 memset(&evts.errorfds, 0, sizeof(fd_set)); 309 335 evts.count = 0; 310 336 311 337 ret = shell_get_evts(&evts, tmout); 338 if (rfds != NULL) 339 memset(rfds, 0, sizeof(fd_set)); 340 if (wfds != NULL) 341 memset(wfds, 0, sizeof(fd_set)); 342 if (efds != NULL) 343 memset(efds, 0, sizeof(fd_set)); 312 344 if (ret == E_OK) { 313 memcpy(rfds, &evts.readfds, sizeof(fd_set)); 314 memcpy(wfds, &evts.writefds, sizeof(fd_set)); 315 memcpy(efds, &evts.errorfds, sizeof(fd_set)); 345 if (rfds != NULL) 346 memor(rfds, &evts.readfds, sizeof(fd_set)); 347 if (wfds != NULL) 348 memor(wfds, &evts.writefds, sizeof(fd_set)); 349 if (efds != NULL) 350 memor(efds, &evts.errorfds, sizeof(fd_set)); 316 351 return evts.count; 317 352 } 318 353 if (ret == E_TMOUT) { 319 memset(rfds, 0, sizeof(fd_set));320 memset(wfds, 0, sizeof(fd_set));321 memset(efds, 0, sizeof(fd_set));322 354 return 0; 323 355 } … … 441 473 struct _IO_FILE *fp = tcpid_to_fd(cepid); 442 474 FLGPTN flgptn = 0; 475 ER ret; 476 int len; 443 477 444 478 if (fp == NULL) … … 449 483 450 484 switch (fncd) { 485 case TFN_TCP_RCV_BUF: 486 len = *(int *)p_parblk; 487 if (len <= 0) 488 return E_OK; 489 490 ret = wai_sem(SEM_FILEDESC); 491 if (ret < 0) { 492 syslog(LOG_ERROR, "wai_sem => %d", ret); 493 } 494 fp->psock->len += len; 495 ret = sig_sem(SEM_FILEDESC); 496 if (ret < 0) { 497 syslog(LOG_ERROR, "sig_sem => %d", ret); 498 } 499 500 if (fp->readevt_w == fp->readevt_r) fp->readevt_w++; 501 502 set_flg(FLG_SELECT_WAIT, flgptn); 503 return E_OK; 504 451 505 case TFN_TCP_RCV_DAT: 506 len = *(int *)p_parblk; 507 if (len <= 0) 508 return E_OK; 509 510 ret = wai_sem(SEM_FILEDESC); 511 if (ret < 0) { 512 syslog(LOG_ERROR, "wai_sem => %d", ret); 513 } 514 fp->psock->len += len; 515 ret = sig_sem(SEM_FILEDESC); 516 if (ret < 0) { 517 syslog(LOG_ERROR, "sig_sem => %d", ret); 518 } 519 452 520 if (fp->readevt_w == fp->readevt_r) fp->readevt_w++; 453 521 … … 484 552 struct _IO_FILE *fp = udpid_to_fd(cepid); 485 553 FLGPTN flgptn = 0; 554 int len; 486 555 487 556 if (fp == NULL) … … 492 561 493 562 switch (fncd) { 563 case TEV_UDP_RCV_DAT: 564 { 565 T_UDP_RCV_DAT_PARA *udppara = (T_UDP_RCV_DAT_PARA *)p_parblk; 566 len = udppara->len; 567 if (len <= 0) 568 return E_OK; 569 570 ER ret = wai_sem(SEM_FILEDESC); 571 if (ret < 0) { 572 syslog(LOG_ERROR, "wai_sem => %d", ret); 573 } 574 fp->psock->len = len; 575 if (fp->psock->input != NULL) { 576 ret = rel_net_buf(fp->psock->input); 577 if (ret < 0) { 578 syslog(LOG_ERROR, "rel_net_buf => %d", ret); 579 } 580 } 581 fp->psock->input = udppara->input; 582 fp->psock->buf = GET_UDP_SDU(udppara->input, udppara->off); 583 memset(&fp->psock->raddr4, 0, sizeof(fp->psock->raddr4)); 584 fp->psock->raddr4.sin_family = AF_INET; 585 fp->psock->raddr4.sin_port = htons(udppara->rep4.portno); 586 fp->psock->raddr4.sin_addr.s_addr = htonl(udppara->rep4.ipaddr); 587 udppara->input->flags |= NB_FLG_NOREL_IFOUT; 588 ret = sig_sem(SEM_FILEDESC); 589 if (ret < 0) { 590 syslog(LOG_ERROR, "sig_sem => %d", ret); 591 } 592 593 if (fp->readevt_w == fp->readevt_r) fp->readevt_w++; 594 595 set_flg(FLG_SELECT_WAIT, flgptn); 596 return E_OK; 597 } 494 598 case TFN_UDP_CRE_CEP: 599 return E_OK; 600 495 601 case TFN_UDP_RCV_DAT: 602 len = *(int *)p_parblk; 603 if (len <= 0) 604 return E_OK; 605 496 606 if (fp->readevt_w == fp->readevt_r) fp->readevt_w++; 497 607 … … 524 634 ER shell_get_evts(struct fd_events *evts, TMO tmout) 525 635 { 526 ER ret;527 FLGPTN waitptn, flgptn = 0, readfds = 0, writefds = 0;528 struct _IO_FILE *fp = NULL;529 636 int count = 0; 530 531 stdio_update_evts(); 637 SYSTIM prev, now; 638 639 get_tim(&prev); 640 641 for (;;) { 642 ER ret; 643 FLGPTN waitptn, flgptn, readfds = 0, writefds = 0; 644 struct _IO_FILE *fp = NULL; 645 646 stdio_update_evts(); 532 647 533 648 #ifndef NTSHELL_NO_SOCKET 534 waitptn = *((FLGPTN *)&evts->errorfds);649 waitptn = *((FLGPTN *)&evts->errorfds); 535 650 #else 536 waitptn = *((FLGPTN *)&evts->readfds) | *((FLGPTN *)&evts->errorfds);651 waitptn = *((FLGPTN *)&evts->readfds) | *((FLGPTN *)&evts->errorfds); 537 652 #endif 538 for (int fd = 0; fd < fd_table_count; fd++) {539 fp = &fd_table[fd];653 for (int fd = 0; fd < fd_table_count; fd++) { 654 fp = &fd_table[fd]; 540 655 541 656 #ifndef NTSHELL_NO_SOCKET 542 if (FD_ISSET(fd, &evts->readfds)) { 543 if ((fp->type == IO_TYPE_TCP) 544 && (GET_TCP_CEP(fp->psock->cepid)->rwbuf_count > 0)) { 545 FD_SET(fd, (fd_set *)&readfds); 546 count++; 547 if (fp->readevt_w == fp->readevt_r) fp->readevt_r--; 657 if (FD_ISSET(fd, &evts->readfds)) { 658 if ((fp->type == IO_TYPE_TCP) && (fp->psock->cepid != 0)) { 659 if (fp->psock->len == 0) { 660 ret = tcp_rcv_buf(fp->psock->cepid, &fp->psock->input, TMO_NBLK); 661 if ((ret != E_WBLK) && (ret != E_OBJ) && (ret < 0)) { 662 syslog(LOG_ERROR, "tcp_rcv_buf => %d", ret); 663 //return ret; 664 } 665 if (ret > 0) { 666 ret = wai_sem(SEM_FILEDESC); 667 if (ret < 0) { 668 syslog(LOG_ERROR, "wai_sem => %d", ret); 669 } 670 fp->psock->len += ret; 671 ret = sig_sem(SEM_FILEDESC); 672 if (ret < 0) { 673 syslog(LOG_ERROR, "sig_sem => %d", ret); 674 } 675 } 676 } 677 else ret = 1; 678 if (ret > 0) { 679 FD_SET(fd, (fd_set *)&readfds); 680 count++; 681 if (fp->readevt_w == fp->readevt_r) fp->readevt_r--; 682 } 683 } 684 else if ((fp->type == IO_TYPE_UDP) && (fp->psock->cepid != 0)) { 685 if (fp->psock->input != NULL) { 686 FD_SET(fd, (fd_set *)&readfds); 687 count++; 688 if (fp->readevt_w == fp->readevt_r) fp->readevt_r--; 689 } 690 } 691 else { 692 FD_SET(fd, (fd_set *)&waitptn); 693 } 548 694 } 549 else { 550 FD_SET(fd, (fd_set *)&waitptn); 695 #endif 696 if (FD_ISSET(fd, &evts->writefds)) { 697 if (fp->writeevt_w == fp->writeevt_r) { 698 FD_SET(fd, (fd_set *)&writefds); 699 count++; 700 if (fp->writeevt_w == fp->writeevt_r) fp->writeevt_r--; 701 } 702 else { 703 FD_SET(fd, (fd_set *)&waitptn); 704 } 551 705 } 552 706 } 553 #endif 554 if (FD_ISSET(fd, &evts->writefds)) { 555 if (fp->writable) { 556 FD_SET(fd, (fd_set *)&writefds); 707 memset(evts, 0, sizeof(*evts)); 708 709 if (waitptn == 0) { 710 memcpy(&evts->readfds, &readfds, sizeof(evts->readfds)); 711 memcpy(&evts->writefds, &writefds, sizeof(evts->writefds)); 712 evts->count = count; 713 return E_OK; 714 } 715 else if ((readfds | writefds) != 0) { 716 set_flg(FLG_SELECT_WAIT, (readfds | writefds)); 717 } 718 719 /* イベント待ち */ 720 flgptn = 0; 721 ret = twai_flg(FLG_SELECT_WAIT, waitptn, TWF_ORW, &flgptn, tmout); 722 if (ret != E_OK) { 723 if (ret != E_TMOUT) { 724 syslog(LOG_ERROR, "twai_flg => %d", ret); 725 return ret; 726 } 727 728 stdio_flgptn(&flgptn); 729 730 if (flgptn == 0) 731 return E_TMOUT; 732 } 733 flgptn &= waitptn; 734 735 /* 受け取ったフラグのみクリア */ 736 ret = clr_flg(FLG_SELECT_WAIT, ~flgptn); 737 if (ret != E_OK) { 738 syslog(LOG_ERROR, "clr_flg => %d", ret); 739 } 740 741 count = 0; 742 for (int fd = 0; fd < fd_table_count; fd++) { 743 if (!FD_ISSET(fd, (fd_set *)&waitptn)) 744 continue; 745 746 fp = &fd_table[fd]; 747 748 if (fp->readevt_w != fp->readevt_r) { 749 fp->readevt_r++; 750 FD_SET(fd, &evts->readfds); 557 751 count++; 558 752 } 559 else { 560 FD_SET(fd, (fd_set *)&waitptn); 753 if (fp->writeevt_w != fp->writeevt_r) { 754 fp->writeevt_r++; 755 fp->writable = 1; 561 756 } 562 } 563 } 564 memset(evts, 0, sizeof(*evts)); 565 566 if (waitptn == 0) { 567 memcpy(&evts->readfds, &readfds, sizeof(evts->readfds)); 568 memcpy(&evts->writefds, &writefds, sizeof(evts->writefds)); 569 evts->count = count; 570 return E_OK; 571 } 572 else if ((readfds | writefds) != 0){ 573 set_flg(FLG_SELECT_WAIT, (readfds | writefds)); 574 } 575 576 /* イベント待ち */ 577 ret = twai_flg(FLG_SELECT_WAIT, waitptn, TWF_ORW, &flgptn, tmout); 578 if (ret != E_OK) { 579 if (ret != E_TMOUT) { 580 syslog(LOG_ERROR, "twai_flg => %d", ret); 581 return ret; 582 } 583 584 stdio_flgptn(&flgptn); 585 586 if (flgptn == 0) 757 if (fp->writable) { 758 FD_SET(fd, &evts->writefds); 759 count++; 760 } 761 if (fp->errorevt_w != fp->errorevt_r) { 762 fp->errorevt_r++; 763 FD_SET(fd, &evts->errorfds); 764 count++; 765 } 766 } 767 768 if (count > 0) 769 break; 770 771 get_tim(&now); 772 773 SYSTIM elapse = now - prev; 774 if (elapse > tmout) 587 775 return E_TMOUT; 588 } 589 flgptn &= waitptn; 590 591 /* 受け取ったフラグのみクリア */ 592 ret = clr_flg(FLG_SELECT_WAIT, ~flgptn); 593 if (ret != E_OK) { 594 syslog(LOG_ERROR, "clr_flg => %d", ret); 595 } 596 597 count = 0; 598 for (int fd = 0; fd < fd_table_count; fd++) { 599 if (!FD_ISSET(fd, (fd_set *)&waitptn)) 600 continue; 601 602 fp = &fd_table[fd]; 603 604 if (fp->readevt_w != fp->readevt_r) { 605 fp->readevt_r++; 606 FD_SET(fd, &evts->readfds); 607 count++; 608 } 609 if (fp->writeevt_w != fp->writeevt_r) { 610 fp->writeevt_r++; 611 fp->writable = 1; 612 } 613 if (fp->writable) { 614 FD_SET(fd, &evts->writefds); 615 count++; 616 } 617 if (fp->errorevt_w != fp->errorevt_r) { 618 fp->errorevt_r++; 619 FD_SET(fd, &evts->errorfds); 620 count++; 621 } 622 } 776 777 prev = now; 778 tmout -= elapse; 779 } 780 623 781 evts->count = count; 624 782 … … 676 834 } 677 835 678 ssize_t shell_send(int fd, const void *buf, size_t len, int flags)679 {680 return -ENOMEM;681 }682 683 836 ssize_t shell_sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *addr, socklen_t alen) 684 837 { … … 691 844 } 692 845 693 ssize_t shell_recv(int fd, void *buf, size_t len, int flags) 694 { 695 return -ENOMEM; 696 } 697 698 ssize_t shell_recvfrom(int fd, void *buf, size_t len, int flags, struct sockaddr *__restrict addr, socklen_t *__restrict alen) 846 ssize_t shell_recvfrom(int fd, void *__restrict buf, size_t len, int flags, struct sockaddr *__restrict addr, socklen_t *__restrict alen) 699 847 { 700 848 return -ENOMEM; -
asp3_tinet_ecnl_arm/trunk/ntshell/src/net_misc.h
r352 r364 41 41 /* スタックサイズ */ 42 42 43 #define NET_MISC_STACK_SIZE 1024/* NTP クライアントタスク(IPv4)のスタックサイズ */43 #define NET_MISC_STACK_SIZE 2048 /* NTP クライアントタスク(IPv4)のスタックサイズ */ 44 44 45 45 /* 優先度 */ -
asp3_tinet_ecnl_arm/trunk/ntshell/src/netcmd.c
r352 r364 239 239 int usrcmd_ping(int argc, char **argv) 240 240 { 241 int tmo, size;242 char 241 int tmo = 3, size = 64; 242 char apip = DEFAULT_API_PROTO; 243 243 char *line = argv[1]; 244 244 #if defined(SUPPORT_INET6) … … 262 262 263 263 #if defined(SUPPORT_INET6) && defined(SUPPORT_INET4) 264 if (argc <= 2) 265 return 0; 266 264 267 if ('0' <= *line && *line <= '9') { 265 268 if (*line == '6') … … 269 272 line++; 270 273 } 274 275 line = argv[2]; 276 #else 277 if (argc <= 1) 278 return 0; 271 279 #endif /* of #if defined(SUPPORT_INET6) && defined(SUPPORT_INET4) */ 272 280 … … 276 284 } 277 285 278 line = argv[2];279 if ('0' <= *line && *line <= '9')280 line = get_int(&tmo, line);281 else282 tmo = 3; 283 284 line = argv[3];285 if ('0' <= *line && *line <= '9')286 line = get_int(&size, line);287 else288 size = 64;286 if (argc > 2) { 287 line = argv[2]; 288 if ('0' <= *line && *line <= '9') 289 line = get_int(&tmo, line); 290 291 if (argc > 3) { 292 line = argv[3]; 293 if ('0' <= *line && *line <= '9') 294 line = get_int(&size, line); 295 } 296 } 289 297 290 298 #if defined(SUPPORT_INET6) … … 337 345 { 338 346 ER ret; 347 348 if (argc < 2) 349 return 0; 350 339 351 if (ntlibc_strcmp(argv[1], "rel") == 0) { 340 352 ret = dhcp4c_rel_info(); … … 348 360 dhcp4c_info(); 349 361 } 362 350 363 return 0; 351 364 } -
asp3_tinet_ecnl_arm/trunk/ntshell/src/ntp_cli.c
r359 r364 265 265 266 266 nc->buf[0] = '\0'; 267 #if ndef _MSC_VER267 #ifdef __NEED_struct_timespec 268 268 if (ctime_r(&tp.tv_sec, nc->buf) != NULL) 269 269 #else -
asp3_tinet_ecnl_arm/trunk/ntshell/src/ntshell_main.c
r352 r364 69 69 const struct utsname host_name = { 70 70 "TOPPERS/ASP3", 71 72 73 74 75 71 TARGET_NAME, 72 "3.2.0", 73 "3.2.0", 74 TARGET_NAME, 75 "toppers.jp" 76 76 }; 77 77 … … 88 88 jmp_buf process_exit; 89 89 void sys_init(void); 90 91 void ntshell_task_init() 92 { 90 NTSHELL_SERIAL_READ ntshell_serial_read = 0; 91 NTSHELL_SERIAL_WRITE ntshell_serial_write = 0; 92 void *ntshell_serial_extobj; 93 94 unsigned char ntstdio_xi(struct ntstdio_t *handle) 95 { 96 unsigned char buf[1]; 97 ntshell_serial_read((char *)buf, 1, ntshell_serial_extobj); 98 return buf[0]; 99 } 100 101 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c) 102 { 103 char buf[1]; 104 buf[0] = c; 105 ntshell_serial_write(buf, 1, ntshell_serial_extobj); 106 } 107 108 void ntshell_task_init(NTSHELL_SERIAL_READ func_read, 109 NTSHELL_SERIAL_WRITE func_write, void *extobj) 110 { 111 ntshell_serial_read = func_read; 112 ntshell_serial_write = func_write; 113 ntshell_serial_extobj = extobj; 114 93 115 sys_init(); 94 116 … … 126 148 int result = 0; 127 149 int found = 0; 150 151 if (*args == 0) 152 return result; 128 153 129 154 if (strcmp((const char *)args[1], "help") == 0) { … … 295 320 int shell_clock_getres(clockid_t clk_id, struct timespec *res) 296 321 { 297 if ( clk_id != CLOCK_REALTIME)322 if ((clk_id != CLOCK_REALTIME) && (clk_id != CLOCK_MONOTONIC)) 298 323 return -EINVAL; 299 324 … … 308 333 SYSTIM now = 0; 309 334 310 if ( clk_id != CLOCK_REALTIME)335 if ((clk_id != CLOCK_REALTIME) && (clk_id != CLOCK_MONOTONIC)) 311 336 return -EINVAL; 312 337 … … 320 345 int shell_clock_settime(clockid_t clk_id, const struct timespec *tp) 321 346 { 322 if ( clk_id != CLOCK_REALTIME)347 if ((clk_id != CLOCK_REALTIME) && (clk_id != CLOCK_MONOTONIC)) 323 348 return -EINVAL; 324 349 325 rtc_write(tp->tv_sec); 350 SYSTIM time; 351 ER ret; 352 353 time = (tp->tv_sec * 1000000ll) + (tp->tv_nsec / 1000ll); 354 355 ret = set_tim(time); 356 if (ret != E_OK) { 357 return -EPERM; 358 } 326 359 327 360 return 0; … … 356 389 } 357 390 358 struct sigaction sigtable[ 6];391 struct sigaction sigtable[7]; 359 392 360 393 int shell_sigaction(int sig, const struct sigaction *restrict sa, struct sigaction *restrict old) … … 381 414 sat = &sigtable[5]; 382 415 break; 416 case SIGPIPE: 417 sat = &sigtable[6]; 418 break; 383 419 default: 384 420 return -EINVAL; -
asp3_tinet_ecnl_arm/trunk/ntshell/src/ntshell_main.cfg
r352 r364 43 43 CRE_TSK(NTSHELL_TASK, { TA_NULL, 0, ntshell_task, NTSHELL_PRIORITY, NTSHELL_STACK_SIZE, NULL }); 44 44 CRE_FLG(FLG_SELECT_WAIT, { TA_WMUL, 0x00 }); 45 CRE_SEM(SEM_FILEDESC, { TA_TPRI, 1, 1 }); 45 46 CRE_SEM(SEM_MALLOC, { TA_TPRI, 1, 1 }); -
asp3_tinet_ecnl_arm/trunk/ntshell/src/ntshell_main.h
r352 r364 49 49 50 50 #include "usrcmd.h" 51 #include "core/ntshell.h" 51 52 52 53 /* … … 54 55 */ 55 56 56 #define NTSHELL_PRIORITY 4/* ntshellタスクの優先度 */57 #define NTSHELL_PRIORITY 8 /* ntshellタスクの優先度 */ 57 58 58 59 #define NTSHELL_STACK_SIZE 8192 /* ntshellタスクのスタック領域のサイズ */ … … 75 76 extern PRI main_task_priority; 76 77 77 struct ntstdio_t;78 unsigned char ntstdio_xi(struct ntstdio_t *handle);79 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c);80 81 78 /* ntshellタスク初期化 */ 82 void ntshell_task_init(); 79 void ntshell_task_init(NTSHELL_SERIAL_READ func_read, 80 NTSHELL_SERIAL_WRITE func_write, void *extobj); 83 81 84 82 /* ntshellタスク */ -
asp3_tinet_ecnl_arm/trunk/ntshell/src/shellif.h
r352 r364 39 39 40 40 #ifdef _MSC_VER 41 #define _CRT_NO_TIME_T42 #define tm msc_tm43 #include <time.h>44 #include <errno.h>45 #include <limits.h>46 #include <stdlib.h>47 #undef tm48 41 #undef NULL 49 42 #endif … … 133 126 #endif 134 127 128 #ifdef __cplusplus 129 extern "C" { 130 #endif 131 135 132 // time.h 136 133 #define CLOCK_REALTIME 0 … … 179 176 int shell_access(const char *path, int mode); 180 177 // signal.h 181 int shell_sigprocmask(int how, const sigset_t * restrict set, sigset_t *restrict old);182 int shell_sigaction(int sig, const struct sigaction * restrict sa, struct sigaction *restrict old);178 int shell_sigprocmask(int how, const sigset_t *__restrict set, sigset_t *__restrict old); 179 int shell_sigaction(int sig, const struct sigaction *__restrict sa, struct sigaction *__restrict old); 183 180 // socket.h 184 181 int shell_socket(int, int, int); 185 182 int shell_connect(int, const struct sockaddr *, socklen_t); 186 ssize_t shell_send(int, const void *, size_t, int);187 183 ssize_t shell_sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t); 188 184 ssize_t shell_sendmsg(int, const struct msghdr *, int); … … 190 186 int shell_listen(int, int); 191 187 int shell_accept(int, struct sockaddr *__restrict, socklen_t *__restrict); 192 ssize_t shell_recv(int, void *, size_t, int);193 188 ssize_t shell_recvfrom(int, void *__restrict, size_t, int, struct sockaddr *__restrict, socklen_t *__restrict); 194 189 ssize_t shell_recvmsg(int, struct msghdr *, int); … … 263 258 int shell_pipe2(int [2], int); 264 259 int shell_ppoll(struct pollfd *, nfds_t, const struct timespec *,const sigset_t *); 265 int shell_pselect6(int, fd_set * restrict, fd_set *restrict,266 fd_set * restrict, const struct timespec *restrict, const sigset_t *restrict);260 int shell_pselect6(int, fd_set *__restrict, fd_set *__restrict, 261 fd_set *__restrict, const struct timespec *__restrict, const sigset_t *__restrict); 267 262 int shell_setpgid(pid_t, pid_t); 268 263 int shell_setsid(); … … 314 309 void free(void *ptr); 315 310 311 #ifdef __cplusplus 312 } 313 #endif 314 316 315 #endif /* SHELLIF_H */ -
asp3_tinet_ecnl_arm/trunk/ntshell/src/socket_stub.c
r352 r364 42 42 #include <sil.h> 43 43 #include "syssvc/syslog.h" 44 #include <tinet_defs.h> 44 45 #include <tinet_config.h> 46 #include <net/net.h> 47 #include <net/net_endian.h> 45 48 #include <netinet/in.h> 46 49 #include <netinet/in_itron.h> … … 53 56 #include <net/if_var.h> 54 57 #include <netinet/udp_var.h> 58 #include <net/net_buf.h> 55 59 //#include <netinet/tcp_var.h> 56 60 #include <netapp/resolver.h> … … 58 62 #include "ff.h" 59 63 #include "socket_stub.h" 64 #include "kernel_cfg.h" 60 65 61 66 #define SOCKET_TIMEOUT 2000000 … … 181 186 fp->psock->buf_size = 512 + 512; 182 187 fp->psock->buf = malloc(fp->psock->buf_size); 188 #ifdef _DEBUG 189 memset(fp->psock->buf, 0, fp->psock->buf_size); 190 #endif 183 191 T_TCP_CCEP ccep = { 0, fp->psock->buf, 512, &fp->psock->buf[512], 512, (FP)socket_tcp_callback }; 184 192 ret = tcp_cre_cep(cepid, &ccep); … … 279 287 fp->psock->buf_size = 512 + 512; 280 288 fp->psock->buf = malloc(fp->psock->buf_size); 289 #ifdef _DEBUG 290 memset(fp->psock->buf, 0, fp->psock->buf_size); 291 #endif 281 292 T_TCP_CCEP ccep = { 0, fp->psock->buf, 512, &fp->psock->buf[512], 512, (FP)socket_tcp_callback }; 282 293 ret = tcp_cre_cep(cepid, &ccep); … … 298 309 return -EHOSTUNREACH; 299 310 } 300 fp->writable = 1;301 311 break; 302 312 } … … 322 332 } 323 333 324 memcpy( &fp->psock, &lfp->psock, sizeof(fp->psock));334 memcpy(fp->psock, lfp->psock, offsetof(socket_t, buf_size)); 325 335 326 336 ER ret; … … 335 345 fp->psock->buf_size = 512 + 512; 336 346 fp->psock->buf = malloc(fp->psock->buf_size); 347 #ifdef _DEBUG 348 memset(fp->psock->buf, 0, fp->psock->buf_size); 349 #endif 337 350 T_TCP_CCEP ccep = { 0, fp->psock->buf, 512, &fp->psock->buf[512], 512, (FP)socket_tcp_callback }; 338 351 ret = tcp_cre_cep(cepid, &ccep); … … 346 359 else { 347 360 cepid = lfp->psock->cepid; 361 fp->handle = cepid; 348 362 lfp->handle = tmax_tcp_cepid + lfp->psock->repid; 349 363 lfp->psock->cepid = 0; … … 356 370 return -ENOMEM; 357 371 } 358 fp->writable = 1;359 372 struct sockaddr_in *raddr = &fp->psock->raddr4; 360 373 memset(raddr, 0, sizeof(*raddr)); … … 384 397 } 385 398 386 ssize_t shell_send (int fd, const void *buf, size_t len, int flags)399 ssize_t shell_sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *addr, socklen_t alen) 387 400 { 388 401 SOCKET *fp = fd_to_fp(fd); … … 396 409 switch (fp->psock->type) { 397 410 case SOCK_STREAM: { 398 fp->writable = 0; 411 if ((addr != NULL) || (alen != 0)) { 412 return -EISCONN; 413 } 414 399 415 if (flags & MSG_OOB) { 400 416 ret = tcp_snd_oob(fp->psock->cepid, (void *)buf, len, SOCKET_TIMEOUT); … … 404 420 } 405 421 else { 406 ret = tcp_snd_dat(fp->psock->cepid, (void *)buf, len, SOCKET_TIMEOUT); 407 if (ret < 0) { 408 return -ECOMM; 409 } 410 } 411 break; 412 } 413 case SOCK_DGRAM: { 414 return -EINVAL; 415 } 416 } 417 break; 418 } 419 case AF_INET6: { 420 return -EAFNOSUPPORT; 421 } 422 } 423 424 return ret; 425 } 426 427 ssize_t shell_sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *addr, socklen_t alen) 428 { 429 SOCKET *fp = fd_to_fp(fd); 430 if (fp == NULL) { 431 return -EBADF; 432 } 433 434 int ret = 0; 435 switch (fp->psock->family) { 436 case AF_INET: { 437 switch (fp->psock->type) { 438 case SOCK_STREAM: { 439 if ((addr != NULL) && (alen != 0)) { 440 return -EINVAL; 441 } 442 443 fp->writable = 0; 444 if (flags & MSG_OOB) { 445 ret = tcp_snd_oob(fp->psock->cepid, (void *)buf, len, SOCKET_TIMEOUT); 446 if (ret < 0) { 447 return -ECOMM; 448 } 449 } 450 else { 451 ret = tcp_snd_dat(fp->psock->cepid, (void *)buf, len, SOCKET_TIMEOUT); 452 if (ret < 0) { 453 return -ECOMM; 454 } 422 for (;;) { 423 ret = tcp_snd_dat(fp->psock->cepid, (void *)buf, len, SOCKET_TIMEOUT); 424 if (ret < 0) { 425 if (ret == E_TMOUT) 426 return -ETIME; 427 return -ECOMM; 428 } 429 len -= ret; 430 if (len <= 0) 431 break; 432 buf = (const void *)&((uint8_t *)buf)[ret]; 433 } 455 434 } 456 435 break; … … 458 437 case SOCK_DGRAM: { 459 438 int sz = alen; 460 if ( sz < 8) {439 if ((addr == NULL) || (sz < 8)) { 461 440 return -EINVAL; 462 441 } … … 465 444 memcpy(raddr, addr, sz); 466 445 T_IPV4EP rep = { ntohl(raddr->sin_addr.s_addr), ntohs(raddr->sin_port) }; 467 fp->writable = 0;468 446 ret = udp_snd_dat(fp->psock->cepid, &rep, (void *)buf, len, 469 (fp->psock->flags & O_NONBLOCK) ? 0: SOCKET_TIMEOUT);447 (fp->psock->flags & O_NONBLOCK) ? TMO_POL : SOCKET_TIMEOUT); 470 448 if (ret < 0) { 471 return -ECOMM;449 return (ret == E_TMOUT) ? -ETIME : -ECOMM; 472 450 } 473 451 break; … … 490 468 } 491 469 492 ssize_t shell_recv (int fd, void *buf, size_t len, int flags)470 ssize_t shell_recvfrom(int fd, void *__restrict buf, size_t len, int flags, struct sockaddr *__restrict addr, socklen_t *__restrict alen) 493 471 { 494 472 SOCKET *fp = fd_to_fp(fd); … … 505 483 ret = tcp_rcv_oob(fp->psock->cepid, buf, len); 506 484 if (ret < 0) { 485 syslog(LOG_ERROR, "tcp_rcv_oob => %d", ret); 507 486 return -ECOMM; 508 487 } 509 488 } 510 489 else { 511 ret = tcp_rcv_dat(fp->psock->cepid, buf, len, TMO_FEVR); 490 int rsz, tmp; 491 if (fp->psock->input == NULL) { 492 ret = wai_sem(SEM_FILEDESC); 493 if (ret < 0) { 494 syslog(LOG_ERROR, "wai_sem => %d", ret); 495 } 496 fp->psock->len = 0; 497 ret = sig_sem(SEM_FILEDESC); 498 if (ret < 0) { 499 syslog(LOG_ERROR, "sig_sem => %d", ret); 500 } 501 ret = tcp_rcv_buf(fp->psock->cepid, &fp->psock->input, TMO_FEVR); 502 if (ret < 0) { 503 syslog(LOG_ERROR, "tcp_rcv_buf => %d", ret); 504 return -ECOMM; 505 } 506 rsz = ret; 507 } 508 else 509 rsz = fp->psock->len; 510 tmp = rsz; 511 if (rsz > len) 512 rsz = len; 513 if (rsz >= 0) { 514 memcpy(buf, fp->psock->input, rsz); 515 ret = wai_sem(SEM_FILEDESC); 516 if (ret < 0) { 517 syslog(LOG_ERROR, "wai_sem => %d", ret); 518 } 519 fp->psock->len = tmp - rsz; 520 ret = sig_sem(SEM_FILEDESC); 521 if (ret < 0) { 522 syslog(LOG_ERROR, "sig_sem => %d", ret); 523 } 524 if (tmp - rsz == 0) { 525 fp->psock->input = NULL; 526 } 527 else 528 fp->psock->input = (void *)&((uint8_t *)fp->psock->input)[rsz]; 529 ret = tcp_rel_buf(fp->psock->cepid, rsz); 530 if ((ret != E_OBJ) && (ret < 0)) { 531 syslog(LOG_ERROR, "tcp_rel_buf => %d", ret); 532 //return -ECOMM; 533 } 534 } 535 ret = rsz; 536 } 537 break; 538 } 539 case SOCK_DGRAM: { 540 struct sockaddr_in *raddr = &fp->psock->raddr4; 541 int rsz; 542 ret = wai_sem(SEM_FILEDESC); 543 if (ret < 0) { 544 syslog(LOG_ERROR, "wai_sem => %d", ret); 545 } 546 T_NET_BUF *input = fp->psock->input; 547 if (input == NULL) { 548 ret = sig_sem(SEM_FILEDESC); 512 549 if (ret < 0) { 513 return -ECOMM; 514 } 515 } 516 break; 517 } 518 case SOCK_DGRAM: { 519 T_IPV4EP rep = { 0, 0 }; 520 ret = udp_rcv_dat(fp->psock->cepid, &rep, buf, len, (fp->psock->flags & O_NONBLOCK) ? 0 : TMO_FEVR); 521 if (ret < 0) { 522 return -ECOMM; 523 } 524 } 525 } 526 break; 527 } 528 case AF_INET6: { 529 return -EAFNOSUPPORT; 530 } 531 } 532 533 return ret; 534 } 535 536 ssize_t shell_recvfrom(int fd, void *buf, size_t len, int flags, struct sockaddr *__restrict addr, socklen_t *__restrict alen) 537 { 538 SOCKET *fp = fd_to_fp(fd); 539 if (fp == NULL) { 540 return -EBADF; 541 } 542 543 int ret = 0; 544 switch (fp->psock->family) { 545 case AF_INET: { 546 switch (fp->psock->type) { 547 case SOCK_STREAM: { 548 if (flags & MSG_OOB) { 549 ret = tcp_rcv_oob(fp->psock->cepid, buf, len); 550 syslog(LOG_ERROR, "sig_sem => %d", ret); 551 } 552 553 T_IPV4EP rep = { 0, 0 }; 554 ret = udp_rcv_dat(fp->psock->cepid, &rep, buf, len, 555 (fp->psock->flags & O_NONBLOCK) ? TMO_POL : SOCKET_TIMEOUT); 550 556 if (ret < 0) { 551 return -ECOMM; 557 syslog(LOG_ERROR, "udp_rcv_buf => %d", ret); 558 return (ret == E_TMOUT) ? -ETIME : -ECOMM; 559 } 560 rsz = ret; 561 if ((addr != NULL) && (alen != NULL)) { 562 ret = wai_sem(SEM_FILEDESC); 563 if (ret < 0) { 564 syslog(LOG_ERROR, "wai_sem => %d", ret); 565 } 566 int sz = *alen; 567 memset(raddr, 0, sizeof(fp->psock->raddr4)); 568 raddr->sin_family = AF_INET; 569 raddr->sin_port = htons(rep.portno); 570 raddr->sin_addr.s_addr = htonl(rep.ipaddr); 571 if (sz > sizeof(fp->psock->raddr4)) 572 sz = sizeof(fp->psock->raddr4); 573 memcpy(addr, raddr, sz); 574 *alen = sz; 575 ret = sig_sem(SEM_FILEDESC); 576 if (ret < 0) { 577 syslog(LOG_ERROR, "sig_sem => %d", ret); 578 } 552 579 } 553 580 } 554 581 else { 555 ret = tcp_rcv_dat(fp->psock->cepid, buf, len, TMO_FEVR); 582 rsz = fp->psock->len; 583 void *pbuf = fp->psock->buf; 584 fp->psock->input = NULL; 585 fp->psock->len = 0; 586 fp->psock->buf = NULL; 587 if ((addr != NULL) && (alen != NULL)) { 588 int sz = *alen; 589 if (sz > sizeof(fp->psock->raddr4)) 590 sz = sizeof(fp->psock->raddr4); 591 memcpy(addr, raddr, sz); 592 *alen = sz; 593 } 594 ret = sig_sem(SEM_FILEDESC); 556 595 if (ret < 0) { 557 return -ECOMM; 558 } 559 } 560 break; 561 } 562 case SOCK_DGRAM: { 563 T_IPV4EP rep = { 0, 0 }; 564 ret = udp_rcv_dat(fp->psock->cepid, &rep, buf, len, TMO_FEVR); 565 if (ret < 0) { 566 return -ECOMM; 567 } 568 int sz = *alen; 569 struct sockaddr_in raddr; 570 memset(&raddr, 0, sizeof(raddr)); 571 raddr.sin_family = AF_INET; 572 raddr.sin_port = htons(rep.portno); 573 raddr.sin_addr.s_addr = htonl(rep.ipaddr); 574 if (sz > sizeof(raddr)) 575 sz = sizeof(raddr); 576 memcpy(addr, &raddr, sz); 596 syslog(LOG_ERROR, "sig_sem => %d", ret); 597 } 598 if (rsz > len) 599 rsz = len; 600 memcpy(buf, pbuf, rsz); 601 ret = rel_net_buf(input); 602 if (ret < 0) { 603 syslog(LOG_ERROR, "rel_net_buf => %d", ret); 604 //return -ECOMM; 605 } 606 } 607 ret = rsz; 577 608 } 578 609 } … … 830 861 int tcp_fd_close(struct _IO_FILE *fp) 831 862 { 832 ER ret; 833 834 free(fp->psock->buf); 835 fp->psock->buf = NULL; 863 ER ret, ret2; 836 864 837 865 switch (fp->psock->family) { … … 844 872 } 845 873 ret = tcp_cls_cep(cepid, (fp->psock->repid != 0) ? 0 : SOCKET_TIMEOUT); 846 if (ret < 0) { 847 //return -1; 848 } 849 ret = tcp_del_cep(cepid); 874 ret2 = tcp_del_cep(cepid); 875 free(fp->psock->buf); 876 fp->psock->buf = NULL; 850 877 delete_tcp_fd(cepid); 851 878 delete_id(tcp_cepid_table, tcp_cepid_table_count, cepid); 852 if ( ret < 0) {853 return -EINVAL;879 if ((ret < 0) || (ret2 < 0)) { 880 return (ret == E_TMOUT) ? -ETIME : -EINVAL; 854 881 } 855 882 } … … 857 884 ID repid = fp->psock->repid; 858 885 ret = tcp_del_rep(repid); 886 free(fp->psock->buf); 887 fp->psock->buf = NULL; 859 888 delete_tcp_fd(tmax_tcp_cepid + repid); 860 889 delete_id(tcp_repid_table, tcp_repid_table_count, repid); … … 864 893 } 865 894 else { 895 free(fp->psock->buf); 896 fp->psock->buf = NULL; 866 897 return -EINVAL; 867 898 } … … 878 909 size_t tcp_fd_read(struct _IO_FILE *fp, unsigned char *dst, size_t dstsz) 879 910 { 880 return shell_recv (fp->fd, dst, dstsz, 0);911 return shell_recvfrom(fp->fd, dst, dstsz, 0, NULL, NULL); 881 912 } 882 913 883 914 size_t tcp_fd_write(struct _IO_FILE *fp, const unsigned char *src, size_t srcsz) 884 915 { 885 return shell_send (fp->fd, src, srcsz, 0);916 return shell_sendto(fp->fd, src, srcsz, 0, NULL, 0); 886 917 } 887 918 … … 901 932 ID cepid; 902 933 903 free(fp->psock->buf);904 fp->psock->buf = NULL;905 906 934 switch (fp->psock->family) { 907 935 case AF_INET: { 908 936 cepid = fp->psock->cepid; 909 937 ret = udp_del_cep(cepid); 938 //free(fp->psock->buf); 939 //fp->psock->buf = NULL; 910 940 delete_udp_fd(cepid); 911 941 delete_id(udp_cepid_table, udp_cepid_table_count, cepid); … … 925 955 size_t udp_fd_read(struct _IO_FILE *fp, unsigned char *dst, size_t dstsz) 926 956 { 927 return shell_recv (fp->fd, dst, dstsz, 0);957 return shell_recvfrom(fp->fd, dst, dstsz, 0, NULL, NULL); 928 958 } 929 959 930 960 size_t udp_fd_write(struct _IO_FILE *fp, const unsigned char *src, size_t srcsz) 931 961 { 932 return shell_send (fp->fd, src, srcsz, 0);962 return shell_sendto(fp->fd, src, srcsz, 0, NULL, 0); 933 963 } 934 964 -
asp3_tinet_ecnl_arm/trunk/ntshell/src/socket_stub.h
r352 r364 99 99 int buf_size; 100 100 unsigned char *buf; 101 void *input; 102 int len; 101 103 } socket_t; 102 104 -
asp3_tinet_ecnl_arm/trunk/ntshell/src/syscall.c
r352 r364 201 201 202 202 long SYS_futex() { 203 int futex(int *uaddr, int op, int val, const struct timespec *timeout, int *uaddr2, int val3); 203 204 return no_implement("futex\n"); 204 205 } … … 309 310 310 311 long SYS_recv(long a, long b, long c, long d) { 311 return shell_recv ((int)a, (void *)b, (size_t)c, (int)d);312 return shell_recvfrom((int)a, (void *)b, (size_t)c, (int)d, NULL, NULL); 312 313 } 313 314 314 315 long SYS_recvfrom(long a, long b, long c, long d, long e, long f) { 315 if (a == 0) 316 return shell_recv(a, (void *)b, (size_t)c, (int)d); 317 else 318 return shell_recvfrom(a, (void *)b, (size_t)c, (int)d, (struct sockaddr *)e, (socklen_t *)f); 316 return shell_recvfrom(a, (void *)b, (size_t)c, (int)d, (struct sockaddr *)e, (socklen_t *)f); 319 317 } 320 318 … … 344 342 345 343 long SYS_send(long a, long b, long c, long d) { 346 return shell_send ((int)a, (const void *)b, (size_t)c, (int)d);344 return shell_sendto((int)a, (const void *)b, (size_t)c, (int)d, NULL, 0); 347 345 } 348 346 … … 352 350 353 351 long SYS_sendto(long a, long b, long c, long d, long e, long f) { 354 if (a == 0) 355 return shell_send(a, (const void *)b, (size_t)c, (int)d); 356 else 357 return shell_sendto(a, (const void *)b, (size_t)c, (int)d, (const struct sockaddr *)e, (socklen_t)f); 352 return shell_sendto(a, (const void *)b, (size_t)c, (int)d, (const struct sockaddr *)e, (socklen_t)f); 358 353 } 359 354 … … 422 417 } 423 418 419 long SYS_dup() 420 { 421 return no_implement("dup\n"); 422 } 423 424 long SYS_dup2() 425 { 426 return no_implement("dup2\n"); 427 } 428 429 long SYS_pipe() 430 { 431 return no_implement("pipe\n"); 432 } 433 434 long SYS_readlink() 435 { 436 return no_implement("readlink\n"); 437 } 438 439 long SYS_symlink() 440 { 441 return no_implement("symlink\n"); 442 } 443 444 long SYS_umask() 445 { 446 return no_implement("umask\n"); 447 } 448 449 long SYS_execve() 450 { 451 return no_implement("execve\n"); 452 } 453 454 long SYS_fork() 455 { 456 return no_implement("fork\n"); 457 } 458 459 long SYS_wait4() 460 { 461 return no_implement("wait4\n"); 462 } 463 464 long SYS_socketpair() 465 { 466 return no_implement("socketpair\n"); 467 } 468 469 long SYS_flock() 470 { 471 return no_implement("flock\n"); 472 } 473 424 474 long ARM_SYS_cacheflush() { 425 475 flash_access_cache_control(); -
asp3_tinet_ecnl_arm/trunk/wolfssl-3.12.2/.cproject
r352 r364 24 24 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 25 25 <option id="toolchain.id" value="gcc-arm-embedded"/> 26 <option id="toolchain.version" value=" 5.4.1.20160919"/>26 <option id="toolchain.version" value="6.3.1.20170620"/> 27 27 </storageModule> 28 28 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 69 69 <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.gcc.rz.option.compiler.include.75756997" name="Include paths (-I)" superClass="com.renesas.cdt.managedbuild.gcc.rz.option.compiler.include" useByScannerDiscovery="false" valueType="includePath"> 70 70 <listOptionValue builtIn="false" value=""${workspace_loc:/musl-1.1.18/include}""/> 71 <listOptionValue builtIn="false" value=""${workspace_loc:/zlib-1.2.11/src}""/> 71 72 <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}}""/> 72 73 </option> … … 76 77 <listOptionValue builtIn="false" value="WOLFSSL_SHA512"/> 77 78 <listOptionValue builtIn="false" value="HAVE_CONFIG_H"/> 79 <listOptionValue builtIn="false" value="WOLFSSL_USER_SETTINGS"/> 78 80 </option> 79 81 <inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.787222748" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/> … … 142 144 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 143 145 <option id="toolchain.id" value="gcc-arm-embedded"/> 144 <option id="toolchain.version" value=" 5.4.1.20160919"/>146 <option id="toolchain.version" value="6.3.1.20170620"/> 145 147 </storageModule> 146 148 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> -
asp3_tinet_ecnl_arm/trunk/wolfssl-3.12.2/src/internal.c
r352 r364 16378 16378 if (ret != 0) 16379 16379 return ret; 16380 16381 word32 tim = LowResTimer(); 16382 *((word32 *)(output + idx)) = (tim >> 24) | ((tim & 0xFF0000) >> 8) 16383 | ((tim & 0xFF00) << 8)| (tim << 24); 16380 16384 16381 16385 /* store random */ -
asp3_tinet_ecnl_arm/trunk/wolfssl-3.12.2/user_settings.h
r352 r364 1 1 //#define DEBUG_WOLFSSL 2 2 3 #define HAVE_LIBZ 3 4 #define HAVE_ECC 5 #define HAVE_AESGCM 4 6 //#define HAVE_FIPS 7 #define HAVE_SNI 8 #define HAVE_TLS_EXTENSIONS 9 #define HAVE_SUPPORTED_CURVES 5 10 6 11 #define ECC_TIMING_RESISTANT -
asp3_tinet_ecnl_arm/trunk/zlib-1.2.11/.cproject
r352 r364 24 24 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 25 25 <option id="toolchain.id" value="gcc-arm-embedded"/> 26 <option id="toolchain.version" value=" 5.4.1.20160919"/>26 <option id="toolchain.version" value="6.3.1.20170620"/> 27 27 </storageModule> 28 28 <storageModule moduleId="cdtBuildSystem" version="4.0.0"> … … 129 129 <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo"> 130 130 <option id="toolchain.id" value="gcc-arm-embedded"/> 131 <option id="toolchain.version" value=" 5.4.1.20160919"/>131 <option id="toolchain.version" value="6.3.1.20170620"/> 132 132 </storageModule> 133 133 <storageModule moduleId="cdtBuildSystem" version="4.0.0">
Note:
See TracChangeset
for help on using the changeset viewer.