Changeset 364 for asp3_tinet_ecnl_rx


Ignore:
Timestamp:
Feb 1, 2019, 9:57:09 PM (5 years ago)
Author:
coas-nagasima
Message:

TINETとSocket APIなどを更新

Location:
asp3_tinet_ecnl_rx/trunk
Files:
20 added
149 edited

Legend:

Unmodified
Added
Removed
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/.cproject

    r345 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.43669503" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1762358251" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    39                                                         <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.464862236" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     39                                                        <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.464862236" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    4040                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.1229888266" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    4141                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1883557018" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    9191                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    9292                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    93                                 <option id="toolchain.version" value="4.8.4.201703"/>
     93                                <option id="toolchain.version" value="4.8.4.201803"/>
    9494                        </storageModule>
    9595                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    106106                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1468234416" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    107107                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1984029138" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    108                                                         <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.1277953315" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     108                                                        <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.1277953315" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    109109                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.70642658" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    110110                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1213984969" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    160160                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    161161                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    162                                 <option id="toolchain.version" value="4.8.4.201703"/>
     162                                <option id="toolchain.version" value="4.8.4.201803"/>
    163163                        </storageModule>
    164164                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    175175                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.748885427" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    176176                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1713664515" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    177                                                         <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1421742244" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     177                                                        <builder buildPath="${workspace_loc:/app1_usb_watt_meter}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1421742244" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    178178                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.899711517" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    179179                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.898818532" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    224224        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    225225        <storageModule moduleId="refreshScope" versionNumber="2">
     226                <configuration configurationName="DebugEther"/>
    226227                <configuration configurationName="DebugCitrus">
    227228                        <resource resourceType="PROJECT" workspacePath="/app1_usb_watt_meter"/>
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/Debug/Makefile

    r342 r364  
    170170        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    171171endif
    172 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DHAVE_CONFIG_H -DWOLFSSL_USER_SETTINGS -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     172CDEFS := $(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
    173173INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    174174        -I$(SRCDIR)/../btstack/include \
     
    184184        -I$(SRCDIR)/../curl-7.57.0 \
    185185        $(INCLUDES)
    186 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     186LDFLAGS := $(LDFLAGS) -L.
    187187LIBS := $(LIBS) $(CXXLIBS)
    188188CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    206206APPL_ASMOBJS :=
    207207ifdef USE_CXX
    208         APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o
     208        APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o jsonsl.o
    209209        APPL_COBJS := $(APPL_COBJS)
    210210else
    211         APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o
     211        APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o jsonsl.o
    212212endif
    213213APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o
     
    218218endif
    219219
    220 
    221 #
    222 #  ネットワークサービスの定義
    223 #
    224 NO_USE_TINET_LIBRARY = true
    225 
    226 #  ネットワークインタフェースの選択、何れか一つ選択する。
    227 NET_IF = ether
    228 
    229 #  イーサネット・ディバイスドライバの選択
    230 NET_DEV = if_btusb
    231 
    232 #  ネットワーク層の選択
    233 #SUPPORT_INET6 = true
    234 SUPPORT_INET4 = true
    235 
    236 #  API に組込む機能の選択
    237 #API_CFG_IP4MAPPED_ADDR = true
    238 
    239 #  トランスポート層の選択
    240 SUPPORT_TCP = true
    241 SUPPORT_UDP = true
    242 
    243 # IGMPを有効に設定
    244 SUPPORT_IGMP = true
    245 
    246 #
    247 #  ネットワークサービスの Makefile のインクルード
    248 #
    249 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     220ifdef TINETDIR
     221        #
     222        #  ネットワークサービスの定義
     223        #
     224        NO_USE_TINET_LIBRARY = true
     225
     226        #  ネットワークインタフェースの選択、何れか一つ選択する。
     227        NET_IF = ether
     228
     229        #  イーサネット・ディバイスドライバの選択
     230        NET_DEV = if_btusb
     231
     232        #  ネットワーク層の選択
     233        #SUPPORT_INET6 = true
     234        SUPPORT_INET4 = true
     235
     236        #  API に組込む機能の選択
     237        #API_CFG_IP4MAPPED_ADDR = true
     238
     239        #  トランスポート層の選択
     240        SUPPORT_TCP = true
     241        SUPPORT_UDP = true
     242
     243        # IGMPを有効に設定
     244        SUPPORT_IGMP = true
     245
     246        #
     247        #  ネットワークサービスの Makefile のインクルード
     248        #
     249        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     250endif
    250251
    251252#
     
    267268all: tecs | $(DEPDIR)
    268269#       @$(MAKE) check
    269         @$(MAKE) check $(OBJNAME).bin
     270#       @$(MAKE) check $(OBJNAME).bin
    270271#       @$(MAKE) check $(OBJNAME).srec
     272        @$(MAKE) check $(OBJNAME).mot
    271273else
    272274#all: check
    273 all: check $(OBJNAME).bin
     275#all: check $(OBJNAME).bin
    274276#all: check $(OBJNAME).srec
     277all: check $(OBJNAME).mot
    275278endif
    276279
     
    280283#  コンフィギュレータに関する定義
    281284#
    282 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    283 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     285ifndef TINETDIR
     286  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     287  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     288                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     289else
     290  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     291  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    284292                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    285293                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    287295                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    288296                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     297endif
    289298CFG_ASMOBJS := $(CFG_ASMOBJS)
    290299CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    432441
    433442#
     443#  並列makeのための依存関係の定義
     444#
     445$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     446$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     447                                                                                                                | offset.timestamp
     448
     449#
    434450#  特別な依存関係の定義
    435451#
     
    440456#
    441457$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    442         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     458        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    443459                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    444460                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    469485$(OBJNAME).srec: $(OBJFILE)
    470486        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     487
     488$(OBJNAME).mot: $(OBJFILE)
     489        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    471490
    472491#
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/DebugCitrus/Makefile

    r342 r364  
    170170        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    171171endif
    172 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DHAVE_CONFIG_H -DWOLFSSL_USER_SETTINGS -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     172CDEFS := $(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
    173173INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    174174        -I$(SRCDIR)/../btstack/include \
     
    184184        -I$(SRCDIR)/../curl-7.57.0 \
    185185        $(INCLUDES)
    186 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     186LDFLAGS := $(LDFLAGS) -L.
    187187LIBS := $(LIBS) $(CXXLIBS)
    188188CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    206206APPL_ASMOBJS :=
    207207ifdef USE_CXX
    208         APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o
     208        APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o jsonsl.o
    209209        APPL_COBJS := $(APPL_COBJS)
    210210else
    211         APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o
     211        APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o jsonsl.o
    212212endif
    213213APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o
     
    218218endif
    219219
    220 
    221 #
    222 #  ネットワークサービスの定義
    223 #
    224 NO_USE_TINET_LIBRARY = true
    225 
    226 #  ネットワークインタフェースの選択、何れか一つ選択する。
    227 NET_IF = ether
    228 
    229 #  イーサネット・ディバイスドライバの選択
    230 NET_DEV = if_btusb
    231 
    232 #  ネットワーク層の選択
    233 #SUPPORT_INET6 = true
    234 SUPPORT_INET4 = true
    235 
    236 #  API に組込む機能の選択
    237 #API_CFG_IP4MAPPED_ADDR = true
    238 
    239 #  トランスポート層の選択
    240 SUPPORT_TCP = true
    241 SUPPORT_UDP = true
    242 
    243 # IGMPを有効に設定
    244 SUPPORT_IGMP = true
    245 
    246 #
    247 #  ネットワークサービスの Makefile のインクルード
    248 #
    249 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     220ifdef TINETDIR
     221        #
     222        #  ネットワークサービスの定義
     223        #
     224        NO_USE_TINET_LIBRARY = true
     225
     226        #  ネットワークインタフェースの選択、何れか一つ選択する。
     227        NET_IF = ether
     228
     229        #  イーサネット・ディバイスドライバの選択
     230        NET_DEV = if_btusb
     231
     232        #  ネットワーク層の選択
     233        #SUPPORT_INET6 = true
     234        SUPPORT_INET4 = true
     235
     236        #  API に組込む機能の選択
     237        #API_CFG_IP4MAPPED_ADDR = true
     238
     239        #  トランスポート層の選択
     240        SUPPORT_TCP = true
     241        SUPPORT_UDP = true
     242
     243        # IGMPを有効に設定
     244        SUPPORT_IGMP = true
     245
     246        #
     247        #  ネットワークサービスの Makefile のインクルード
     248        #
     249        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     250endif
    250251
    251252#
     
    267268all: tecs | $(DEPDIR)
    268269#       @$(MAKE) check
    269         @$(MAKE) check $(OBJNAME).bin
     270#       @$(MAKE) check $(OBJNAME).bin
    270271#       @$(MAKE) check $(OBJNAME).srec
     272        @$(MAKE) check $(OBJNAME).mot
    271273else
    272274#all: check
    273 all: check $(OBJNAME).bin
     275#all: check $(OBJNAME).bin
    274276#all: check $(OBJNAME).srec
     277all: check $(OBJNAME).mot
    275278endif
    276279
     
    280283#  コンフィギュレータに関する定義
    281284#
    282 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    283 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     285ifndef TINETDIR
     286  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     287  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     288                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     289else
     290  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     291  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    284292                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    285293                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    287295                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    288296                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     297endif
    289298CFG_ASMOBJS := $(CFG_ASMOBJS)
    290299CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    432441
    433442#
     443#  並列makeのための依存関係の定義
     444#
     445$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     446$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     447                                                                                                                | offset.timestamp
     448
     449#
    434450#  特別な依存関係の定義
    435451#
     
    440456#
    441457$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    442         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     458        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    443459                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    444460                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    469485$(OBJNAME).srec: $(OBJFILE)
    470486        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     487
     488$(OBJNAME).mot: $(OBJFILE)
     489        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    471490
    472491#
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/DebugEther/Makefile

    r342 r364  
    170170        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    171171endif
    172 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DHAVE_CONFIG_H -DWOLFSSL_USER_SETTINGS -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     172CDEFS := $(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
    173173INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    174174        -I$(SRCDIR)/../btstack/include \
     
    184184        -I$(SRCDIR)/../curl-7.57.0 \
    185185        $(INCLUDES)
    186 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     186LDFLAGS := $(LDFLAGS) -L.
    187187LIBS := $(LIBS) $(CXXLIBS)
    188188CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    206206APPL_ASMOBJS :=
    207207ifdef USE_CXX
    208         APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o
     208        APPL_CXXOBJS := main.o ntshell_main.o echonet_main.o client.o jsonsl.o
    209209        APPL_COBJS := $(APPL_COBJS)
    210210else
    211         APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o
     211        APPL_COBJS := $(APPL_COBJS) main.o ntshell_main.o echonet_main.o client.o jsonsl.o
    212212endif
    213213APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o
     
    218218endif
    219219
    220 
    221 #
    222 #  ネットワークサービスの定義
    223 #
    224 NO_USE_TINET_LIBRARY = true
    225 
    226 #  ネットワークインタフェースの選択、何れか一つ選択する。
    227 NET_IF = ether
    228 
    229 #  イーサネット・ディバイスドライバの選択
     220ifdef TINETDIR
     221        #
     222        #  ネットワークサービスの定義
     223        #
     224        NO_USE_TINET_LIBRARY = true
     225
     226        #  ネットワークインタフェースの選択、何れか一つ選択する。
     227        NET_IF = ether
     228
     229        #  イーサネット・ディバイスドライバの選択
    230230        NET_DEV = if_rx62n
    231231
    232 #  ネットワーク層の選択
    233 #SUPPORT_INET6 = true
    234 SUPPORT_INET4 = true
    235 
    236 #  API に組込む機能の選択
    237 #API_CFG_IP4MAPPED_ADDR = true
    238 
    239 #  トランスポート層の選択
    240 SUPPORT_TCP = true
    241 SUPPORT_UDP = true
    242 
    243 # IGMPを有効に設定
    244 SUPPORT_IGMP = true
    245 
    246 #
    247 #  ネットワークサービスの Makefile のインクルード
    248 #
    249 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     232        #  ネットワーク層の選択
     233        #SUPPORT_INET6 = true
     234        SUPPORT_INET4 = true
     235
     236        #  API に組込む機能の選択
     237        #API_CFG_IP4MAPPED_ADDR = true
     238
     239        #  トランスポート層の選択
     240        SUPPORT_TCP = true
     241        SUPPORT_UDP = true
     242
     243        # IGMPを有効に設定
     244        SUPPORT_IGMP = true
     245
     246        #
     247        #  ネットワークサービスの Makefile のインクルード
     248        #
     249        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     250endif
    250251
    251252#
     
    267268all: tecs | $(DEPDIR)
    268269#       @$(MAKE) check
    269         @$(MAKE) check $(OBJNAME).bin
     270#       @$(MAKE) check $(OBJNAME).bin
    270271#       @$(MAKE) check $(OBJNAME).srec
     272        @$(MAKE) check $(OBJNAME).mot
    271273else
    272274#all: check
    273 all: check $(OBJNAME).bin
     275#all: check $(OBJNAME).bin
    274276#all: check $(OBJNAME).srec
     277all: check $(OBJNAME).mot
    275278endif
    276279
     
    280283#  コンフィギュレータに関する定義
    281284#
    282 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    283 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     285ifndef TINETDIR
     286  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     287  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     288                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     289else
     290  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     291  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    284292                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    285293                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    287295                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    288296                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     297endif
    289298CFG_ASMOBJS := $(CFG_ASMOBJS)
    290299CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    432441
    433442#
     443#  並列makeのための依存関係の定義
     444#
     445$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     446$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     447                                                                                                                | offset.timestamp
     448
     449#
    434450#  特別な依存関係の定義
    435451#
     
    440456#
    441457$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    442         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     458        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    443459                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    444460                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    469485$(OBJNAME).srec: $(OBJFILE)
    470486        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     487
     488$(OBJNAME).mot: $(OBJFILE)
     489        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    471490
    472491#
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/src/client.c

    r350 r364  
    11/*
    22 *  TOPPERS ECHONET Lite Communication Middleware
    3  * 
     3 *
    44 *  Copyright (C) 2016 Cores Co., Ltd. Japan
    5  * 
     5 *
    66 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    77 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2626 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    2727 *      免責すること.
    28  * 
     28 *
    2929 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3030 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3232 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3333 *  の責任を負わない.
    34  * 
     34 *
    3535 *  @(#) $Id$
    3636 */
     
    4848#include "ff.h"
    4949#include "util/ntstdio.h"
     50#include "client.h"
     51#include "jsonsl.h"
    5052
    5153#define SKIP_PEER_VERIFICATION
    5254//#define SKIP_HOSTNAME_VERIFICATION
     55
     56const char SCOPE_DRIVE_FILE[] = "https://www.googleapis.com/auth/drive.file";
     57const char GRANT_TYPE_DEVICE[] = "http://oauth.net/grant_type/device/1.0";
     58
    5359char response[80];
    54 extern ntstdio_t ntstdio;
     60char errbuf[CURL_ERROR_SIZE];
     61
     62google_drive_t google_drive;
     63
     64void curl_setopt_common(CURL *curl);
     65int google_drive_error_callback(jsonsl_t jsn, jsonsl_error_t err,
     66        struct jsonsl_state_st *state, char *errat);
     67void google_drive_state_callback(jsonsl_t jsn, jsonsl_action_t action,
     68        struct jsonsl_state_st *state, const char *buf);
    5569
    5670void client_init(void)
    5771{
     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
    5884        //uITRON4_minit(ITRON_POOL_SIZE);
    5985
     
    6187}
    6288
    63 size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp)
    64 {
    65         int rest = size * nmemb;
     89size_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
     107void 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
     181void get_device_id_state_end(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf)
     182{
     183}
     184
     185int 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
     238void 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
     312void get_access_token_state_end(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf)
     313{
     314}
     315
     316int 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
     373void 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
     438void update_access_token_state_end(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf)
     439{
     440}
     441
     442int 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
     498void revoke_device_state_start(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf)
     499{
     500}
     501
     502void revoke_device_state_end(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf)
     503{
     504}
     505
     506int 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
     553void 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
     618void upload_file_state_end(google_drive_t *gd, struct jsonsl_state_st *state, const char *buf)
     619{
     620}
     621
     622size_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;
    66633        int len;
    67634
     
    76643                response[len] = '\0';
    77644
    78                 ntstdio_printf(&ntstdio, response);
    79 
    80                 dly_tsk(100 * 1000);
     645                printf(response);
     646
     647                dly_tsk(100);
    81648
    82649                rest -= len;
     
    84651        }
    85652
    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 
    120653        return ret;
    121654}
    122655
    123 char errbuf[CURL_ERROR_SIZE];
     656int 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
     683int 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
     760int 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
     766void 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}
    124808
    125809static void get_logfname(char *fname)
     
    185869        ret = f_open(&file, fname, FA_CREATE_ALWAYS | FA_WRITE);
    186870        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);
    188872                return ret;
    189873        }
     
    232916        f_putc('}', &file);
    233917
    234 file_close:
    235918        f_close(&file);
    236919
     
    238921}
    239922
    240 void client_task(intptr_t exinf)
    241 {
    242         CURL *curl;
     923void curl_setopt_common(CURL *curl)
     924{
    243925        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         }
    272926
    273927        /* 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);
    277929        if (res != CURLE_OK)
    278                 ntstdio_printf(&ntstdio, "CURLOPT_URL failed: %s\n",
     930                printf("CURLOPT_VERBOSE failed: %s\n",
    279931                        curl_easy_strerror(res));
    280932
     
    283935
    284936        /* 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));
    286941
    287942#ifdef SKIP_PEER_VERIFICATION
     
    298953        res = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
    299954        if (res != CURLE_OK)
    300                 ntstdio_printf(&ntstdio, "CURLOPT_SSL_VERIFYPEER failed: %s\n",
     955                printf("CURLOPT_SSL_VERIFYPEER failed: %s\n",
    301956                        curl_easy_strerror(res));
    302957#else
    303958        res = curl_easy_setopt(curl, CURLOPT_CAINFO, "0:/certs/ca-cert.pem");
    304959        if (res != CURLE_OK)
    305                 ntstdio_printf(&ntstdio, "CURLOPT_CAINFO failed: %s\n",
     960                printf("CURLOPT_CAINFO failed: %s\n",
    306961                        curl_easy_strerror(res));
    307962
    308963        res = curl_easy_setopt(curl, CURLOPT_SSLCERT, "0:/certs/client-cert.pem");
    309964        if (res != CURLE_OK)
    310                 ntstdio_printf(&ntstdio, "CURLOPT_SSLCERT failed: %s\n",
     965                printf("CURLOPT_SSLCERT failed: %s\n",
    311966                        curl_easy_strerror(res));
    312967
    313968        res = curl_easy_setopt(curl, CURLOPT_SSLKEY, "0:/certs/client-key.pem");
    314969        if (res != CURLE_OK)
    315                 ntstdio_printf(&ntstdio, "CURLOPT_SSLKEY failed: %s\n",
     970                printf("CURLOPT_SSLKEY failed: %s\n",
    316971                        curl_easy_strerror(res));
    317972#endif
     
    326981        res = curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
    327982        if (res != CURLE_OK)
    328                 ntstdio_printf(&ntstdio, "CURLOPT_SSL_VERIFYHOST failed: %s\n",
     983                printf("CURLOPT_SSL_VERIFYHOST failed: %s\n",
    329984                        curl_easy_strerror(res));
    330985#endif
     
    332987        /*res = curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy.example.com:8080");
    333988        if (res != CURLE_OK)
    334                 ntstdio_printf(&ntstdio, "CURLOPT_PROXY failed: %s\n",
     989                printf("CURLOPT_PROXY failed: %s\n",
    335990                        curl_easy_strerror(res));*/
    336991
    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",
    368995                        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
     1008void 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
     1015void 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
     1022int 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
     1040int 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
     1058int 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
     1075int 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
     1091int 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
     1117void client_final(void)
     1118{
     1119        google_drive_t *gd = &google_drive;
     1120        jsonsl_t jsn = gd->jsn;
     1121
    3831122        curl_global_cleanup();
    384 }
     1123        jsonsl_destroy(jsn);
     1124}
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/src/client.h

    r337 r364  
    3939#define _CLIENT_H_
    4040
    41 #include <kernel.h>
    42 #include "target_kernel_impl.h"
     41typedef struct client_info_t {
     42        char client_id[80];
     43        char client_secret[32];
     44} client_info_t;
    4345
    44 #define CLIENT_PRIORITY         4               /* クライアントタスクの優先度 */
     46typedef 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;
    4557
    46 #define CLIENT_STACK_SIZE       6144    /* スタック領域のサイズ */
     58typedef struct error_response_t {
     59        char error[64];
     60        char error_description[64];
     61} error_response_t;
    4762
    48 extern void client_init(void);
    49 extern void client_task(intptr_t exinf);
    50 extern void client_fin(void);
     63typedef 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
     70typedef 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
     89struct jsonsl_st;
     90typedef struct jsonsl_st *jsonsl_t;
     91
     92typedef void (*parser_callback_t)(struct google_drive_t *gd, struct jsonsl_state_st *state, const char *buf);
     93
     94typedef 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
     108extern google_drive_t google_drive;
     109
     110void client_init(void);
     111void client_final(void);
     112
     113void client_set_client_id(const char *client_id);
     114void client_set_client_secret(const char *client_secret);
     115int client_get_device_id(int argc, char **argv);
     116int client_get_access_token(int argc, char **argv);
     117int client_update_access_token(int argc, char **argv);
     118int client_revoke(int argc, char **argv);
     119int client_upload_file(int argc, char **argv);
    51120
    52121#endif /* _CLIENT_H_ */
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/src/echonet_main.c

    r351 r364  
    11/*
    22 *  TOPPERS ECHONET Lite Communication Middleware
    3  * 
     3 *
    44 *  Copyright (C) 2016-2018 Cores Co., Ltd. Japan
    5  * 
     5 *
    66 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    77 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2626 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    2727 *      免責すること.
    28  * 
     28 *
    2929 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3030 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3232 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3333 *  の責任を負わない.
    34  * 
     34 *
    3535 *  @(#) $Id$
    3636 */
    3737
    38 /* 
     38/*
    3939 *  サンプルプログラム(1)の本体
    4040 */
     
    152152{
    153153        /* サイズが1以外は受け付けない */
    154         if(size != 1)
     154        if (size != 1)
    155155                return 0;
    156156
    157157        *anno = *((uint8_t*)item->exinf) != *((uint8_t*)src);
    158158
    159         switch(*(uint8_t *)src){
     159        switch (*(uint8_t *)src) {
    160160        /* ONの場合 */
    161161        case 0x30:
     
    184184{
    185185        /* サイズが1以外は受け付けない */
    186         if(size != 1)
     186        if (size != 1)
    187187                return 0;
    188188
    189189        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    190190
    191         switch(*(uint8_t *)src){
     191        switch (*(uint8_t *)src) {
    192192        /* 異常発生ありの場合 */
    193193        case 0x41:
     
    288288
    289289        /* サイズが4以外は受け付けない */
    290         if(size != 4)
     290        if (size != 4)
    291291                return 0;
    292292
     
    308308
    309309        len = 48 - meter->current_pos;
    310         if(len > 0)
     310        if (len > 0)
    311311                memcpy(dst, &meter->integral_electric_energy_measurement_log[meter->current_pos], sizeof(uint32_t) * len);
    312312        dst = &((uint8_t *)dst)[len];
     
    367367
    368368        ret2 = get_tim(&now);
    369         if (ret2 != E_OK){
     369        if (ret2 != E_OK) {
    370370                syslog(LOG_ERROR, "get_tim");
    371371                return;
    372372        }
    373373
    374         for(;;){
     374        for (;;) {
    375375                prev = now;
    376376
     
    380380                /* 応答電文待ち */
    381381                ret = ecn_trcv_esv(&esv, timer);
    382                 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)){
     382                if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {
    383383                        syslog(LOG_ERROR, "ecn_trcv_esv");
    384384                        break;
     
    386386
    387387                ret2 = get_tim(&now);
    388                 if (ret2 != E_OK){
     388                if (ret2 != E_OK) {
    389389                        syslog(LOG_ERROR, "get_tim");
    390390                        break;
     
    401401                        /* 領域解放 */
    402402                        ret = ecn_rel_esv(esv);
    403                         if (ret != E_OK){
     403                        if (ret != E_OK) {
    404404                                syslog(LOG_ERROR, "ecn_rel_esv");
    405405                                break;
     
    410410                        /* 応答電文待ちの割り込みデータ取得 */
    411411                        ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len);
    412                         if (ret != E_OK){
     412                        if (ret != E_OK) {
    413413                                syslog(LOG_ERROR, "ecn_get_brk_dat");
    414414                                break;
     
    420420                        /* 領域解放 */
    421421                        ret = ecn_rel_esv(esv);
    422                         if (ret != E_OK){
     422                        if (ret != E_OK) {
    423423                                syslog(LOG_ERROR, "ecn_rel_esv");
    424424                                break;
     
    431431}
    432432
    433 bool_t started = false;
    434 
    435433void echonet_change_netif_link(uint8_t link_up, uint8_t up)
    436434{
     
    440438                return;
    441439
    442         if (up && !started) {
    443                 started = true;
    444 
    445                 /* ECHONETミドルウェアを起動 */
    446                 ret = ecn_sta_svc();
    447                 if (ret != E_OK)
    448                         return;
    449 
    450                 /* ECHONETミドルウェアを起動するのを待つ */
    451                 dly_tsk(100);
     440        if (up) {
     441                /* インスタンスリスト通知の送信 */
     442                ret = ecn_ntf_inl();
     443                if (ret != E_OK) {
     444                        syslog(LOG_ERROR, "ecn_ntf_inl");
     445                }
    452446        }
    453447
     
    463457}
    464458
    465 enum main_state_t{
     459enum main_state_t {
     460        main_state_start,
    466461        main_state_idle,
    467462};
    468463
    469464int main_timer = TMO_FEVR;
    470 enum main_state_t main_state = main_state_idle;
    471 int main_led_timer = TMO_FEVR;
     465enum main_state_t main_state = main_state_start;
     466int main_lcd_timer = TMO_FEVR;
    472467int main_adv_timer = TMO_FEVR;
    473468int main_whm_counter;
     
    508503
    509504        /* 3ms後に7SEG表示を更新 */
    510         main_led_timer = 3 * 1000;
    511 
    512         /* 10ms後にボタン状態を確認 */
    513         main_timer = 10 * 1000;
     505        main_lcd_timer = 3 * 1000;
     506
     507        /* ECHONETミドルウェアを起動するのを待つ */
     508        main_state = main_state_start;
     509        main_timer = 1000 * 1000;
    514510
    515511        /* 12bitADC初期化 */
     
    526522        main_adv_timer = 1000 * 1000;
    527523
     524        /* メインタスクを起動 */
    528525        ER ret = act_tsk(MAIN_TASK);
    529526        if (ret != E_OK) {
     
    539536        int result = main_timer;
    540537
    541         if((result == TMO_FEVR)
    542                 || ((main_led_timer != TMO_FEVR) && (main_led_timer < result))){
    543                 result = main_led_timer;
     538        if ((result == TMO_FEVR)
     539                || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) {
     540                result = main_lcd_timer;
    544541        }
    545542
     
    557554static void main_progress(int interval)
    558555{
    559         if(main_timer != TMO_FEVR){
     556        if (main_timer != TMO_FEVR) {
    560557                main_timer -= interval;
    561                 if(main_timer < 0){
     558                if (main_timer < 0) {
    562559                        main_timer = 0;
    563560                }
    564561        }
    565562
    566         if(main_led_timer != TMO_FEVR){
    567                 main_led_timer -= interval;
    568                 if(main_led_timer < 0){
    569                         main_led_timer = 0;
     563        if (main_lcd_timer != TMO_FEVR) {
     564                main_lcd_timer -= interval;
     565                if (main_lcd_timer < 0) {
     566                        main_lcd_timer = 0;
    570567                }
    571568        }
     
    591588
    592589        ret = ecn_itr_ini(&enm, esv);
    593         if(ret != E_OK){
     590        if (ret != E_OK) {
    594591                syslog(LOG_ERROR, "ecn_itr_ini");
    595592                return;
    596593        }
    597594
    598         for(;;) {
    599                 while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
     595        for (;;) {
     596                while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
    600597                        switch (epc) {
    601598                        case 0x80:
     
    605602                        }
    606603                }
    607                 if(ret != E_BOVR){
     604                if (ret != E_BOVR) {
    608605                        syslog(LOG_ERROR, "ecn_itr_nxt");
    609606                        break;
    610607                }
    611                 if(enm.is_eof)
     608                if (enm.is_eof)
    612609                        break;
    613610        }
     
    619616static void main_break_wait(uint8_t *brkdat, int32_t len)
    620617{
    621         switch(main_state){
     618        switch (main_state) {
    622619        case main_state_idle:
    623620                if (len == 0)
     
    638635
    639636static void main_ontimer();
    640 static void main_led_ontimer();
     637static void main_lcd_ontimer();
    641638static void main_adv_ontimer();
    642639
     
    646643static void main_timeout()
    647644{
    648         if(main_timer == 0){
     645        if (main_timer == 0) {
    649646                main_ontimer();
    650647        }
    651648
    652         if(main_led_timer == 0){
    653                 main_led_ontimer();
     649        if (main_lcd_timer == 0) {
     650                main_lcd_ontimer();
    654651        }
    655652
     
    664661const uint8_t led_disp[] = { 0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE4, 0xFE, 0xF6, 0xEE, 0x3E, 0x1A, 0x7A, 0x9E, 0x8E };
    665662
    666 static void main_led_ontimer()
     663static void main_lcd_ontimer()
    667664{
    668665        /* 7Seg表示 */
     
    697694
    698695        /* 3ms後に7SEG表示を更新 */
    699         main_led_timer = 3 * 1000;
     696        main_lcd_timer = 3 * 1000;
    700697}
    701698
     
    727724static void main_ontimer()
    728725{
     726        ER ret;
    729727        uint8_t btn;
    730728        uint16_t ad_value;
    731729
    732         switch(main_state){
     730        switch (main_state) {
     731        case main_state_start:
     732                /* ECHONETミドルウェアを起動 */
     733                ret = ecn_sta_svc();
     734                if (ret != E_OK) {
     735                        syslog(LOG_ERROR, "ecn_sta_svc");
     736                }
     737
     738                /* 10ms後にボタン状態を確認 */
     739                main_state = main_state_idle;
     740                main_timer = 10 * 1000;
     741                break;
    733742        case main_state_idle:
    734743                /* 10ms後にボタン状態を確認 */
     
    736745
    737746                /* ADCの変換結果取得 */
    738                 if((sil_reb_mem((uint8_t *)S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0){
     747                if ((sil_reb_mem((uint8_t *)S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0) {
    739748                        for (int i = 0; i < main_ad_count; i++) {
    740749                                main_ad_avelage[i] -= main_ad_table[i][main_ad_pos];
     
    776785
    777786                /* ボタン1の処理 */
    778                 if(((btn & 0x20) != 0) && !main_btn1_state){
     787                if (((btn & 0x20) != 0) && !main_btn1_state) {
    779788                        main_btn1_count++;
    780                         if(main_btn1_count > 10){
     789                        if (main_btn1_count > 10) {
    781790                                main_btn1_count = 0;
    782791                                main_btn1_state = true;
     
    785794                        }
    786795                }
    787                 else if(((btn & 0x20) == 0) && main_btn1_state){
     796                else if (((btn & 0x20) == 0) && main_btn1_state) {
    788797                        main_btn1_count++;
    789                         if(main_btn1_count > 10){
     798                        if (main_btn1_count > 10) {
    790799                                main_btn1_count = 0;
    791800                                main_btn1_state = false;
     
    796805
    797806                /* ボタン2の処理 */
    798                 if(((btn & 0x80) != 0) && !main_btn2_state){
     807                if (((btn & 0x80) != 0) && !main_btn2_state) {
    799808                        main_btn2_count++;
    800                         if(main_btn2_count > 10){
     809                        if (main_btn2_count > 10) {
    801810                                main_btn2_count = 0;
    802811                                main_btn2_state = true;
     
    805814                        }
    806815                }
    807                 else if(((btn & 0x80) == 0) && main_btn2_state){
     816                else if (((btn & 0x80) == 0) && main_btn2_state) {
    808817                        main_btn2_count++;
    809                         if(main_btn2_count > 10){
     818                        if (main_btn2_count > 10) {
    810819                                main_btn2_count = 0;
    811820                                main_btn2_state = false;
     
    829838{
    830839        /* 押されて戻った時に処理する */
    831         if(push)
     840        if (push)
    832841                return;
    833842
    834843        /* 表示ポート番号 */
    835         if(!main_rev){
     844        if (!main_rev) {
    836845                main_port_no--;
    837                 if(main_port_no < 1){
     846                if (main_port_no < 1) {
    838847                        main_port_no = 1;
    839848                        main_rev = true;
     
    841850                }
    842851        }
    843         else{
     852        else {
    844853                main_port_no++;
    845                 if(main_port_no > main_ad_count){
     854                if (main_port_no > main_ad_count) {
    846855                        main_port_no = main_ad_count;
    847856                        main_rev = false;
     
    857866{
    858867        /* 押されて戻った時に処理する */
    859         if(push)
     868        if (push)
    860869                return;
    861870
     
    866875
    867876        /* 表示ポート番号 */
    868         if(!main_rev){
     877        if (!main_rev) {
    869878                main_port_no++;
    870                 if(main_port_no > main_ad_count){
     879                if (main_port_no > main_ad_count) {
    871880                        main_port_no = main_ad_count;
    872881                        main_rev = false;
     
    874883                }
    875884        }
    876         else{
     885        else {
    877886                main_port_no--;
    878                 if(main_port_no < 1){
     887                if (main_port_no < 1) {
    879888                        main_port_no = 1;
    880889                        main_rev = true;
     
    893902
    894903        main_port_no++;
    895         if(main_port_no > main_ad_count)
     904        if (main_port_no > main_ad_count)
    896905                main_port_no = 1;
    897906
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/src/main.c

    r359 r364  
    4545#include <sil.h>
    4646#include <setjmp.h>
     47#include <stdlib.h>
    4748#include <string.h>
    4849#include "syssvc/serial.h"
     
    8081
    8182ID ws_api_mailboxid = MAIN_DATAQUEUE;
     83#ifndef NOUSE_MPF_NET_BUF
    8284ID ws_mempoolid = MPF_NET_BUF_256;
    83 
     85#endif
    8486#ifdef IF_ETHER_BTUSB
    8587extern int bt_bnep_mode;
    8688/* PANU向けリモートアドレス */
    8789bd_addr_t remote_addr = {0x00,0x1B,0xDC,0x09,0x27,0x26};
     90bool_t dhcp_enable = false;
     91#else
     92bool_t dhcp_enable = true;
    8893#endif
    8994
    9095uint8_t mac_addr[6] = {0x12, 0x34, 0x56, 0x78, 0x9A, 0x01};
    91 bool_t dhcp_enable = true;
    9296PRI main_task_priority = MAIN_PRIORITY + 1;
    9397
     
    112116static void main_timeout();
    113117
     118extern int ntshell_exit;
     119
    114120int uart_read(char *buf, int cnt, void *extobj)
    115121{
    116         return serial_rea_dat(SIO_PORTID, (char *)buf, cnt);
     122        struct main_t *obj = (struct main_t *)extobj;
     123        int result;
     124        ER ret;
     125        int timer;
     126
     127        obj->prev = obj->now;
     128
     129        /* タイマー取得 */
     130        timer = main_get_timer();
     131
     132        /* 待ち */
     133        ret = serial_trea_dat(SIO_PORTID, buf, cnt, timer);
     134        if ((ret < 0) && (ret != E_OK) && (ret != E_TMOUT)) {
     135                syslog(LOG_NOTICE, "tslp_tsk ret: %s %d", itron_strerror(ret), timer);
     136                ntshell_exit = 1;
     137                return -1;
     138        }
     139        result = (int)ret;
     140
     141        ret = get_tim(&obj->now);
     142        if (ret != E_OK) {
     143                syslog(LOG_NOTICE, "get_tim ret: %s", itron_strerror(ret));
     144                ntshell_exit = 1;
     145                return -1;
     146        }
     147
     148                        /* 時間経過 */
     149        int elapse = obj->now - obj->prev;
     150        main_progress(elapse);
     151
     152        /* タイムアウト処理 */
     153        main_timeout();
     154
     155        return result;
    117156}
    118157
     
    120159{
    121160        return serial_wri_dat(SIO_PORTID, buf, cnt);
    122 }
    123 
    124 unsigned char ntstdio_xi(struct ntstdio_t *handle)
    125 {
    126         char buf[1];
    127         if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)
    128                 return -EIO;
    129         return buf[0];
    130 }
    131 
    132 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)
    133 {
    134         char buf[1];
    135         buf[0] = c;
    136         serial_wri_dat(SIO_PORTID, buf, 1);
    137161}
    138162
     
    151175        main_initialize();
    152176
    153         ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);
     177        ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj);
    154178        ntshell_set_prompt(&ntshell, "NTShell>");
    155179        ntshell_execute(&ntshell);
     
    171195        ER ret;
    172196
     197#ifdef TOPPERS_OMIT_TECS
     198        serial_opn_por(SIO_PORTID);
     199#endif
     200        serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV);
     201
    173202        //wolfSSL_Debugging_ON();
    174203
    175         ntshell_task_init();
     204        ntshell_task_init(uart_read, uart_write, &main_obj);
    176205
    177206        main_obj.timer = TMO_FEVR;
     
    308337}
    309338
     339int cmd_creid(int argc, char **argv)
     340{
     341        if (argc != 2) {
     342                printf("creid {client_id}\n");
     343                return 0;
     344        }
     345
     346        client_set_client_id(argv[1]);
     347
     348        return 0;
     349}
     350
     351int cmd_secret(int argc, char **argv)
     352{
     353        if (argc != 2) {
     354                printf("secret {client_secret}\n");
     355                return 0;
     356        }
     357
     358        client_set_client_secret(argv[1]);
     359
     360        return 0;
     361}
     362
    310363int cmd_logupload(int argc, char **argv)
    311364{
    312         client_task(0);
    313         return 0;
     365        return client_upload_file(argc, argv);
    314366}
    315367
     
    330382        {"dnsc", "DNS client", usrcmd_dnsc },
    331383        {"ntpc", "NTP client", usrcmd_ntpc },
     384        {"creid", "Regster device", cmd_creid},
     385        {"secret", "Regster device", cmd_secret},
     386        {"gdi", "get_device_id", client_get_device_id},
     387        {"gat", "get_access_token", client_get_access_token},
     388        {"uat", "update_access_token", client_update_access_token},
     389        {"rd", "revoke device", client_revoke},
     390        {"uf", "upload_file", client_upload_file},
    332391        {"logupload", "Upload log to server", cmd_logupload},
    333392        {"info", "This is a description text string for info command.", usrcmd_info},
  • asp3_tinet_ecnl_rx/trunk/app1_usb_watt_meter/src/main.cfg

    r342 r364  
    5454INCLUDE("tinet/tinet_asp.cfg");
    5555INCLUDE("tinet_main.cfg");
    56 INCLUDE("netinet/ip_igmp.cfg");
    5756
    5857/* DHCP クライアント */
     
    7776INCLUDE("ffarch.cfg");
    7877
     78/* mbed */
     79INCLUDE("mbed_api.cfg");
     80
    7981#ifdef IF_ETHER_BTUSB
    8082INCLUDE("usb_hbth.cfg");
  • asp3_tinet_ecnl_rx/trunk/app2_light/.cproject

    r345 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.600758211" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.142996787" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    39                                                         <builder buildPath="${workspace_loc:/app2_light}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.97137747" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     39                                                        <builder buildPath="${workspace_loc:/app2_light}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.97137747" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    4040                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.997660944" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    4141                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.8394158" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    9191                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    9292                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    93                                 <option id="toolchain.version" value="4.8.4.201703"/>
     93                                <option id="toolchain.version" value="4.8.4.201803"/>
    9494                        </storageModule>
    9595                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    106106                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.146362706" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    107107                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.469418392" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    108                                                         <builder buildPath="${workspace_loc:/app2_light}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.689708596" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     108                                                        <builder buildPath="${workspace_loc:/app2_light}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.689708596" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    109109                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.916652973" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    110110                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1633571990" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    160160                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    161161                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    162                                 <option id="toolchain.version" value="4.8.4.201703"/>
     162                                <option id="toolchain.version" value="4.8.4.201803"/>
    163163                        </storageModule>
    164164                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    175175                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.112867740" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    176176                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1193943945" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    177                                                         <builder buildPath="${workspace_loc:/app2_light}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1539657579" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     177                                                        <builder buildPath="${workspace_loc:/app2_light}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1539657579" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    178178                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.197625944" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    179179                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1906553995" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    224224        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    225225        <storageModule moduleId="refreshScope" versionNumber="2">
     226                <configuration configurationName="DebugEther"/>
    226227                <configuration configurationName="DebugCitrus">
    227228                        <resource resourceType="PROJECT" workspacePath="/app2_light"/>
     
    234235                </configuration>
    235236        </storageModule>
     237        <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
    236238</cproject>
  • asp3_tinet_ecnl_rx/trunk/app2_light/Debug/Makefile

    r342 r364  
    167167        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168168endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     169CDEFS := $(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
    170170INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171171        -I$(SRCDIR)/../btstack/include \
     
    175175        -I$(SRCDIR)/../usbhost/src \
    176176        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     177LDFLAGS := $(LDFLAGS) -L.
    178178LIBS := $(LIBS) $(CXXLIBS)
    179179CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    209209endif
    210210
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     211ifdef TINETDIR
     212        #
     213        #  ネットワークサービスの定義
     214        #
     215        NO_USE_TINET_LIBRARY = true
     216
     217        #  ネットワークインタフェースの選択、何れか一つ選択する。
     218        NET_IF = ether
     219
     220        #  イーサネット・ディバイスドライバの選択
     221        NET_DEV = if_btusb
     222
     223        #  ネットワーク層の選択
     224        #SUPPORT_INET6 = true
     225        SUPPORT_INET4 = true
     226
     227        #  API に組込む機能の選択
     228        #API_CFG_IP4MAPPED_ADDR = true
     229
     230        #  トランスポート層の選択
     231        SUPPORT_TCP = true
     232        SUPPORT_UDP = true
     233
     234        # IGMPを有効に設定
     235        SUPPORT_IGMP = true
     236
     237        #
     238        #  ネットワークサービスの Makefile のインクルード
     239        #
     240        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     241endif
    241242
    242243#
     
    258259all: tecs | $(DEPDIR)
    259260#       @$(MAKE) check
    260         @$(MAKE) check $(OBJNAME).bin
     261#       @$(MAKE) check $(OBJNAME).bin
    261262#       @$(MAKE) check $(OBJNAME).srec
     263        @$(MAKE) check $(OBJNAME).mot
    262264else
    263265#all: check
    264 all: check $(OBJNAME).bin
     266#all: check $(OBJNAME).bin
    265267#all: check $(OBJNAME).srec
     268all: check $(OBJNAME).mot
    266269endif
    267270
     
    271274#  コンフィギュレータに関する定義
    272275#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     276ifndef TINETDIR
     277  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     278  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     279                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     280else
     281  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     282  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275283                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276284                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278286                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279287                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     288endif
    280289CFG_ASMOBJS := $(CFG_ASMOBJS)
    281290CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423432
    424433#
     434#  並列makeのための依存関係の定義
     435#
     436$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     437$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     438                                                                                                                | offset.timestamp
     439
     440#
    425441#  特別な依存関係の定義
    426442#
     
    431447#
    432448$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     449        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434450                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435451                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    460476$(OBJNAME).srec: $(OBJFILE)
    461477        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     478
     479$(OBJNAME).mot: $(OBJFILE)
     480        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    462481
    463482#
  • asp3_tinet_ecnl_rx/trunk/app2_light/DebugCitrus/Makefile

    r342 r364  
    167167        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168168endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     169CDEFS := $(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
    170170INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171171        -I$(SRCDIR)/../btstack/include \
     
    175175        -I$(SRCDIR)/../usbhost/src \
    176176        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     177LDFLAGS := $(LDFLAGS) -L.
    178178LIBS := $(LIBS) $(CXXLIBS)
    179179CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    209209endif
    210210
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     211ifdef TINETDIR
     212        #
     213        #  ネットワークサービスの定義
     214        #
     215        NO_USE_TINET_LIBRARY = true
     216
     217        #  ネットワークインタフェースの選択、何れか一つ選択する。
     218        NET_IF = ether
     219
     220        #  イーサネット・ディバイスドライバの選択
     221        NET_DEV = if_btusb
     222
     223        #  ネットワーク層の選択
     224        #SUPPORT_INET6 = true
     225        SUPPORT_INET4 = true
     226
     227        #  API に組込む機能の選択
     228        #API_CFG_IP4MAPPED_ADDR = true
     229
     230        #  トランスポート層の選択
     231        SUPPORT_TCP = true
     232        SUPPORT_UDP = true
     233
     234        # IGMPを有効に設定
     235        SUPPORT_IGMP = true
     236
     237        #
     238        #  ネットワークサービスの Makefile のインクルード
     239        #
     240        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     241endif
    241242
    242243#
     
    258259all: tecs | $(DEPDIR)
    259260#       @$(MAKE) check
    260         @$(MAKE) check $(OBJNAME).bin
     261#       @$(MAKE) check $(OBJNAME).bin
    261262#       @$(MAKE) check $(OBJNAME).srec
     263        @$(MAKE) check $(OBJNAME).mot
    262264else
    263265#all: check
    264 all: check $(OBJNAME).bin
     266#all: check $(OBJNAME).bin
    265267#all: check $(OBJNAME).srec
     268all: check $(OBJNAME).mot
    266269endif
    267270
     
    271274#  コンフィギュレータに関する定義
    272275#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     276ifndef TINETDIR
     277  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     278  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     279                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     280else
     281  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     282  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275283                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276284                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278286                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279287                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     288endif
    280289CFG_ASMOBJS := $(CFG_ASMOBJS)
    281290CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423432
    424433#
     434#  並列makeのための依存関係の定義
     435#
     436$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     437$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     438                                                                                                                | offset.timestamp
     439
     440#
    425441#  特別な依存関係の定義
    426442#
     
    431447#
    432448$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     449        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434450                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435451                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    460476$(OBJNAME).srec: $(OBJFILE)
    461477        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     478
     479$(OBJNAME).mot: $(OBJFILE)
     480        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    462481
    463482#
  • asp3_tinet_ecnl_rx/trunk/app2_light/DebugEther/Makefile

    r342 r364  
    165165        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    166166endif
    167 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     167CDEFS := $(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
    168168INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    169169        -I$(SRCDIR)/../btstack/include \
     
    173173        -I$(SRCDIR)/../usbhost/src \
    174174        $(INCLUDES)
    175 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     175LDFLAGS := $(LDFLAGS) -L.
    176176LIBS := $(LIBS) $(CXXLIBS)
    177177CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    207207endif
    208208
    209 
    210 #
    211 #  ネットワークサービスの定義
    212 #
    213 NO_USE_TINET_LIBRARY = true
    214 
    215 #  ネットワークインタフェースの選択、何れか一つ選択する。
    216 NET_IF = ether
    217 
    218 #  イーサネット・ディバイスドライバの選択
     209ifdef TINETDIR
     210        #
     211        #  ネットワークサービスの定義
     212        #
     213        NO_USE_TINET_LIBRARY = true
     214
     215        #  ネットワークインタフェースの選択、何れか一つ選択する。
     216        NET_IF = ether
     217
     218        #  イーサネット・ディバイスドライバの選択
    219219        NET_DEV = if_rx62n
    220220
    221 #  ネットワーク層の選択
    222 #SUPPORT_INET6 = true
    223 SUPPORT_INET4 = true
    224 
    225 #  API に組込む機能の選択
    226 #API_CFG_IP4MAPPED_ADDR = true
    227 
    228 #  トランスポート層の選択
    229 SUPPORT_TCP = true
    230 SUPPORT_UDP = true
    231 
    232 # IGMPを有効に設定
    233 SUPPORT_IGMP = true
    234 
    235 #
    236 #  ネットワークサービスの Makefile のインクルード
    237 #
    238 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     221        #  ネットワーク層の選択
     222        #SUPPORT_INET6 = true
     223        SUPPORT_INET4 = true
     224
     225        #  API に組込む機能の選択
     226        #API_CFG_IP4MAPPED_ADDR = true
     227
     228        #  トランスポート層の選択
     229        SUPPORT_TCP = true
     230        SUPPORT_UDP = true
     231
     232        # IGMPを有効に設定
     233        SUPPORT_IGMP = true
     234
     235        #
     236        #  ネットワークサービスの Makefile のインクルード
     237        #
     238        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     239endif
    239240
    240241#
     
    256257all: tecs | $(DEPDIR)
    257258#       @$(MAKE) check
    258         @$(MAKE) check $(OBJNAME).bin
     259#       @$(MAKE) check $(OBJNAME).bin
    259260#       @$(MAKE) check $(OBJNAME).srec
     261        @$(MAKE) check $(OBJNAME).mot
    260262else
    261263#all: check
    262 all: check $(OBJNAME).bin
     264#all: check $(OBJNAME).bin
    263265#all: check $(OBJNAME).srec
     266all: check $(OBJNAME).mot
    264267endif
    265268
     
    269272#  コンフィギュレータに関する定義
    270273#
    271 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    272 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     274ifndef TINETDIR
     275  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     276  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     277                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     278else
     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 \
    273281                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    274282                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    276284                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    277285                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     286endif
    278287CFG_ASMOBJS := $(CFG_ASMOBJS)
    279288CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    421430
    422431#
     432#  並列makeのための依存関係の定義
     433#
     434$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     435$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     436                                                                                                                | offset.timestamp
     437
     438#
    423439#  特別な依存関係の定義
    424440#
     
    429445#
    430446$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    431         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     447        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    432448                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    433449                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    458474$(OBJNAME).srec: $(OBJFILE)
    459475        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     476
     477$(OBJNAME).mot: $(OBJFILE)
     478        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    460479
    461480#
  • asp3_tinet_ecnl_rx/trunk/app2_light/src/echonet_main.c

    r351 r364  
    11/*
    22 *  TOPPERS ECHONET Lite Communication Middleware
    3  * 
     3 *
    44 *  Copyright (C) 2014-2018 Cores Co., Ltd. Japan
    5  * 
     5 *
    66 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    77 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2626 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    2727 *      免責すること.
    28  * 
     28 *
    2929 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3030 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3232 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3333 *  の責任を負わない.
    34  * 
     34 *
    3535 *  @(#) $Id$
    3636 */
    3737
    38 /* 
     38/*
    3939 *  サンプルプログラム(1)の本体
    4040 */
     
    116116{
    117117        /* サイズが1以外は受け付けない */
    118         if(size != 1)
     118        if (size != 1)
    119119                return 0;
    120120
    121121        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    122122
    123         switch(*(uint8_t *)src){
     123        switch (*(uint8_t *)src) {
    124124        /* ONの場合 */
    125125        case 0x30:
     
    152152{
    153153        /* サイズが1以外は受け付けない */
    154         if(size != 1)
     154        if (size != 1)
    155155                return 0;
    156156
    157157        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    158158
    159         switch(*(uint8_t *)src){
     159        switch (*(uint8_t *)src) {
    160160        /* 異常発生ありの場合 */
    161161        case 0x41:
     
    180180
    181181        /* サイズが1以外は受け付けない */
    182         if(size != 1)
    183                 return 0;
    184 
    185         switch(*(uint8_t *)src){
     182        if (size != 1)
     183                return 0;
     184
     185        switch (*(uint8_t *)src) {
    186186        /* 自動の場合 */
    187187        case 0x41:
     
    224224        uint8_t data[2];
    225225
    226         if(size != 1)
    227                 return 0;
    228 
    229         switch(*(uint8_t *)src){
     226        if (size != 1)
     227                return 0;
     228
     229        switch (*(uint8_t *)src) {
    230230        /* 人体検出ありの場合 */
    231231        case 0x41:
     
    236236                data[1] = *(uint8_t *)src;
    237237                ret = ecn_brk_wai(data, sizeof(data));
    238                 if(ret != E_OK){
     238                if (ret != E_OK) {
    239239                        syslog(LOG_ERROR, "ecn_brk_wai");
    240240                        return 1;
     
    249249                data[1] = *(uint8_t *)src;
    250250                ret = ecn_brk_wai(data, sizeof(data));
    251                 if(ret != E_OK){
     251                if (ret != E_OK) {
    252252                        syslog(LOG_ERROR, "ecn_brk_wai");
    253253                        return 1;
     
    269269        uint8_t *p_src;
    270270
    271         if(size != 2)
     271        if (size != 2)
    272272                return 0;
    273273
     
    288288        uint8_t *p_dst;
    289289
    290         if(size != 2)
     290        if (size != 2)
    291291                return 0;
    292292
     
    306306        uint8_t *p_src;
    307307
    308         if(size != 4)
     308        if (size != 4)
    309309                return 0;
    310310
     
    326326        uint8_t *p_dst;
    327327
    328         if(size != 4)
     328        if (size != 4)
    329329                return 0;
    330330
     
    361361
    362362        ret2 = get_tim(&now);
    363         if (ret2 != E_OK){
     363        if (ret2 != E_OK) {
    364364                syslog(LOG_ERROR, "get_tim");
    365365                return;
    366366        }
    367367
    368         for(;;){
     368        for (;;) {
    369369                prev = now;
    370370
     
    374374                /* 応答電文待ち */
    375375                ret = ecn_trcv_esv(&esv, timer);
    376                 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)){
     376                if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {
    377377                        syslog(LOG_ERROR, "ecn_trcv_esv");
    378378                        break;
     
    380380
    381381                ret2 = get_tim(&now);
    382                 if (ret2 != E_OK){
     382                if (ret2 != E_OK) {
    383383                        syslog(LOG_ERROR, "get_tim");
    384384                        break;
     
    395395                        /* 領域解放 */
    396396                        ret = ecn_rel_esv(esv);
    397                         if (ret != E_OK){
     397                        if (ret != E_OK) {
    398398                                syslog(LOG_ERROR, "ecn_rel_esv");
    399399                                break;
     
    404404                        /* 応答電文待ちの割り込みデータ取得 */
    405405                        ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len);
    406                         if (ret != E_OK){
     406                        if (ret != E_OK) {
    407407                                syslog(LOG_ERROR, "ecn_get_brk_dat");
    408408                                break;
     
    414414                        /* 領域解放 */
    415415                        ret = ecn_rel_esv(esv);
    416                         if (ret != E_OK){
     416                        if (ret != E_OK) {
    417417                                syslog(LOG_ERROR, "ecn_rel_esv");
    418418                                break;
     
    425425}
    426426
    427 bool_t started = false;
    428 
    429427void echonet_change_netif_link(uint8_t link_up, uint8_t up)
    430428{
     
    434432                return;
    435433
    436         if (up && !started) {
    437                 started = true;
    438 
    439                 /* ECHONETミドルウェアを起動 */
    440                 ret = ecn_sta_svc();
    441                 if (ret != E_OK)
    442                         return;
    443 
    444                 /* ECHONETミドルウェアを起動するのを待つ */
    445                 dly_tsk(100);
     434        if (up) {
     435                /* インスタンスリスト通知の送信 */
     436                ret = ecn_ntf_inl();
     437                if (ret != E_OK) {
     438                        syslog(LOG_ERROR, "ecn_ntf_inl");
     439                }
    446440        }
    447441
     
    457451}
    458452
    459 enum main_state_t{
     453enum main_state_t {
     454        main_state_start,
    460455        main_state_idle,
    461456        main_state_search,
     
    464459int main_timer = TMO_FEVR;
    465460int main_btn_timer = TMO_FEVR;
    466 enum main_state_t main_state = main_state_idle;
     461enum main_state_t main_state = main_state_start;
    467462bool_t main_btn1_state;
    468463int main_btn1_count = 0;
     
    480475        sil_wrb_mem((uint8_t *)0x0008C02A, 0x00);
    481476
    482         /* 1秒後に人体検知センサを検索 */
    483         main_state = main_state_search;
     477        /* ECHONETミドルウェアを起動するのを待つ */
     478        main_state = main_state_start;
    484479        main_timer = 1000 * 1000;
    485480
     
    490485        btn1 = sil_reb_mem((uint8_t *)0x0008C04A);
    491486        /*btn1 = sil_reb_mem((uint8_t *)0x0008C040);*/
    492         btn2 = sil_reb_mem((uint8_t *) 0x0008C040);
     487        btn2 = sil_reb_mem((uint8_t *)0x0008C040);
    493488        main_btn1_state = (btn1 & 0x80/*0x0x20*/) != 0;
    494489        main_btn2_state = (btn2 & 0x80) != 0;
    495490
     491        /* メインタスクを起動 */
    496492        ER ret = act_tsk(MAIN_TASK);
    497493        if (ret != E_OK) {
     
    507503        int result = main_timer;
    508504
    509         if((result == TMO_FEVR)
    510                 || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))){
     505        if ((result == TMO_FEVR)
     506                || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))) {
    511507                result = main_btn_timer;
    512508        }
     
    520516static void main_progress(int interval)
    521517{
    522         if(main_timer != TMO_FEVR){
     518        if (main_timer != TMO_FEVR) {
    523519                main_timer -= interval;
    524                 if(main_timer < 0){
     520                if (main_timer < 0) {
    525521                        main_timer = 0;
    526522                }
    527523        }
    528524
    529         if(main_btn_timer != TMO_FEVR){
     525        if (main_btn_timer != TMO_FEVR) {
    530526                main_btn_timer -= interval;
    531                 if(main_btn_timer < 0){
     527                if (main_btn_timer < 0) {
    532528                        main_btn_timer = 0;
    533529                }
     
    548544
    549545        eobjid = ecn_get_eobj(esv);
    550         if(eobjid == EOBJ_NULL){
     546        if (eobjid == EOBJ_NULL) {
    551547                syslog(LOG_ERROR, "ecn_get_eobj");
    552548        }
    553549
    554550        ret = ecn_itr_ini(&enm, esv);
    555         if(ret != E_OK){
     551        if (ret != E_OK) {
    556552                syslog(LOG_ERROR, "ecn_itr_ini");
    557553                return;
    558554        }
    559555
    560         for(;;) {
    561                 while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
     556        for (;;) {
     557                while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
    562558                        switch (epc) {
    563559                        case 0xD6:
    564                                 switch(main_state){
     560                                switch (main_state) {
    565561                                case main_state_search:
    566562                                        if (eobjid == HUMAN_DETECTION_SENSER_ENOD) {
     
    574570                        }
    575571                }
    576                 if(ret != E_BOVR){
     572                if (ret != E_BOVR) {
    577573                        syslog(LOG_ERROR, "ecn_itr_nxt");
    578574                        break;
    579575                }
    580                 if(enm.is_eof)
     576                if (enm.is_eof)
    581577                        break;
    582578        }
     
    592588        ER ret;
    593589
    594         switch(main_state){
     590        switch (main_state) {
    595591        case main_state_idle:
    596592                if (len < 2)
     
    616612static void main_timeout()
    617613{
    618         if(main_timer == 0){
     614        if (main_timer == 0) {
    619615                main_ontimer();
    620616        }
    621617
    622         if(main_btn_timer == 0){
     618        if (main_btn_timer == 0) {
    623619                main_btn_ontimer();
    624620        }
     
    629625static void main_ontimer()
    630626{
    631         switch(main_state){
     627        ER ret;
     628
     629        switch (main_state) {
     630        case main_state_start:
     631                /* ECHONETミドルウェアを起動 */
     632                ret = ecn_sta_svc();
     633                if (ret != E_OK) {
     634                        syslog(LOG_ERROR, "ecn_sta_svc");
     635                }
     636
     637                /* 1秒後に人体検知センサを検索 */
     638                main_state = main_state_search;
     639                main_timer = 1000 * 1000;
     640                break;
    632641        case main_state_search:
    633642                /* 人体検知センサ再検索 */
     
    646655        /* 人体検知センサ検索 */
    647656        ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6);
    648         if(ret != E_OK){
     657        if (ret != E_OK) {
    649658                syslog(LOG_ERROR, "ecn_esv_inf_req");
    650659                return;
     
    653662        /* 電文送信 */
    654663        ret = ecn_snd_esv(esv);
    655         if(ret != E_OK){
     664        if (ret != E_OK) {
    656665                syslog(LOG_ERROR, "ecn_snd_esv");
    657666        }
     
    674683        btn1 = sil_reb_mem((uint8_t *)0x0008C04A);
    675684        /*btn1 = sil_reb_mem((uint8_t *)0x0008C040);*/
    676         btn2 = sil_reb_mem((uint8_t *) 0x0008C040);
     685        btn2 = sil_reb_mem((uint8_t *)0x0008C040);
    677686
    678687        /* ボタン1の処理 */
    679         if(((btn1 & 0x80/*0x20*/) != 0) && !main_btn1_state){
     688        if (((btn1 & 0x80/*0x20*/) != 0) && !main_btn1_state) {
    680689                main_btn1_count++;
    681                 if(main_btn1_count > 10){
     690                if (main_btn1_count > 10) {
    682691                        main_btn1_count = 0;
    683692                        main_btn1_state = true;
     
    686695                }
    687696        }
    688         else if(((btn1 & 0x80/*0x20*/) == 0) && main_btn1_state){
     697        else if (((btn1 & 0x80/*0x20*/) == 0) && main_btn1_state) {
    689698                main_btn1_count++;
    690                 if(main_btn1_count > 10){
     699                if (main_btn1_count > 10) {
    691700                        main_btn1_count = 0;
    692701                        main_btn1_state = false;
     
    697706
    698707        /* ボタン2の処理 */
    699         if(((btn2 & 0x80) != 0) && !main_btn2_state){
     708        if (((btn2 & 0x80) != 0) && !main_btn2_state) {
    700709                main_btn2_count++;
    701                 if(main_btn2_count > 10){
     710                if (main_btn2_count > 10) {
    702711                        main_btn2_count = 0;
    703712                        main_btn2_state = true;
     
    706715                }
    707716        }
    708         else if(((btn2 & 0x80) == 0) && main_btn2_state){
     717        else if (((btn2 & 0x80) == 0) && main_btn2_state) {
    709718                main_btn2_count++;
    710                 if(main_btn2_count > 10){
     719                if (main_btn2_count > 10) {
    711720                        main_btn2_count = 0;
    712721                        main_btn2_state = false;
     
    717726}
    718727
    719 enum lighting_mode_t{
     728enum lighting_mode_t {
    720729        lighting_mode_auto,             /* 自動の場合 */
    721730        lighting_mode_normal,   /* 通常灯の場合 */
     
    736745
    737746        /* 押されて戻った時に処理する */
    738         if(push)
     747        if (push)
    739748                return;
    740749
     
    745754        /* プロパティ設定電文作成 */
    746755        ret = ecn_esv_setc(&esv, GENERAL_LIGHTING_CLASS_EOBJ, 0x80, 1, p_edt);
    747         if(ret != E_OK){
     756        if (ret != E_OK) {
    748757                syslog(LOG_ERROR, "ecn_esv_setc");
    749758                return;
     
    764773
    765774        /* 押されて戻った時に処理する */
    766         if(push)
     775        if (push)
    767776                return;
    768777
    769778        /* 点灯モードの切り替え */
    770         switch(main_mode){
     779        switch (main_mode) {
    771780        /* 自動の場合 */
    772781        case lighting_mode_auto:
     
    798807        /* プロパティ設定電文作成 */
    799808        ret = ecn_esv_setc(&esv, GENERAL_LIGHTING_CLASS_EOBJ, 0xB6, 1, p_edt);
    800         if(ret != E_OK){
     809        if (ret != E_OK) {
    801810                syslog(LOG_ERROR, "ecn_esv_setc");
    802811                return;
     
    814823
    815824        /* 照明がOFFで人体検出ありの場合 */
    816         if(!main_on && state == 0x41){
     825        if (!main_on && state == 0x41) {
    817826                /* 照明をON */
    818827                main_on = true;
    819828        }
    820829        /* 照明がOFFで人体検出ありの場合 */
    821         else if(main_on && state == 0x42){
     830        else if (main_on && state == 0x42) {
    822831                /* 照明をOFF */
    823832                main_on = false;
     
    830839        /* プロパティ設定電文作成 */
    831840        ret = ecn_esv_setc(&esv, GENERAL_LIGHTING_CLASS_EOBJ, 0x80, 1, p_edt);
    832         if(ret != E_OK){
     841        if (ret != E_OK) {
    833842                syslog(LOG_ERROR, "ecn_esv_setc");
    834843                return;
  • asp3_tinet_ecnl_rx/trunk/app2_light/src/main.c

    r359 r364  
    7979
    8080ID ws_api_mailboxid = MAIN_DATAQUEUE;
     81#ifndef NOUSE_MPF_NET_BUF
    8182ID ws_mempoolid = MPF_NET_BUF_256;
     83#endif
    8284
    8385#ifdef IF_ETHER_BTUSB
     
    111113static void main_timeout();
    112114
     115extern int ntshell_exit;
     116
    113117int uart_read(char *buf, int cnt, void *extobj)
    114118{
    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;
    116153}
    117154
     
    119156{
    120157        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);
    136158}
    137159
     
    150172        main_initialize();
    151173
    152         ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);
     174        ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj);
    153175        ntshell_set_prompt(&ntshell, "NTShell>");
    154176        ntshell_execute(&ntshell);
     
    168190        ER ret;
    169191
    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);
    171198
    172199        main_obj.timer = TMO_FEVR;
  • asp3_tinet_ecnl_rx/trunk/app2_light/src/main.cfg

    r342 r364  
    5454INCLUDE("tinet/tinet_asp.cfg");
    5555INCLUDE("tinet_main.cfg");
    56 INCLUDE("netinet/ip_igmp.cfg");
    5756
    5857/* DHCP クライアント */
     
    7776INCLUDE("ffarch.cfg");
    7877
     78/* mbed */
     79INCLUDE("mbed_api.cfg");
     80
    7981#ifdef IF_ETHER_BTUSB
    8082INCLUDE("usb_hbth.cfg");
  • asp3_tinet_ecnl_rx/trunk/app3_human_detec/.cproject

    r345 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.662973646" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.2124219093" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    39                                                         <builder buildPath="${workspace_loc:/app3_human_detec}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1092580250" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     39                                                        <builder buildPath="${workspace_loc:/app3_human_detec}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1092580250" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    4040                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.1251407918" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    4141                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.2042319788" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    9191                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    9292                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    93                                 <option id="toolchain.version" value="4.8.4.201703"/>
     93                                <option id="toolchain.version" value="4.8.4.201803"/>
    9494                        </storageModule>
    9595                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    106106                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1786209800" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    107107                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1889588517" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    108                                                         <builder buildPath="${workspace_loc:/app3_human_detec}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.343570643" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     108                                                        <builder buildPath="${workspace_loc:/app3_human_detec}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.343570643" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    109109                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.40641547" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    110110                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.339929456" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    160160                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    161161                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    162                                 <option id="toolchain.version" value="4.8.4.201703"/>
     162                                <option id="toolchain.version" value="4.8.4.201803"/>
    163163                        </storageModule>
    164164                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    175175                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1389820086" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    176176                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.2042065519" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    177                                                         <builder buildPath="${workspace_loc:/app3_human_detec}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.153011758" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     177                                                        <builder buildPath="${workspace_loc:/app3_human_detec}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.153011758" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    178178                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.1795526657" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    179179                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.247280969" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    224224        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    225225        <storageModule moduleId="refreshScope" versionNumber="2">
     226                <configuration configurationName="DebugEther"/>
     227                <configuration configurationName="DebugCitrus"/>
    226228                <configuration configurationName="Debug">
    227229                        <resource resourceType="PROJECT" workspacePath="/app3_human_detec"/>
  • asp3_tinet_ecnl_rx/trunk/app3_human_detec/Debug/Makefile

    r342 r364  
    167167        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168168endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     169CDEFS := $(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
    170170INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171171        -I$(SRCDIR)/../btstack/include \
     
    175175        -I$(SRCDIR)/../usbhost/src \
    176176        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     177LDFLAGS := $(LDFLAGS) -L.
    178178LIBS := $(LIBS) $(CXXLIBS)
    179179CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    209209endif
    210210
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     211ifdef TINETDIR
     212        #
     213        #  ネットワークサービスの定義
     214        #
     215        NO_USE_TINET_LIBRARY = true
     216
     217        #  ネットワークインタフェースの選択、何れか一つ選択する。
     218        NET_IF = ether
     219
     220        #  イーサネット・ディバイスドライバの選択
     221        NET_DEV = if_btusb
     222
     223        #  ネットワーク層の選択
     224        #SUPPORT_INET6 = true
     225        SUPPORT_INET4 = true
     226
     227        #  API に組込む機能の選択
     228        #API_CFG_IP4MAPPED_ADDR = true
     229
     230        #  トランスポート層の選択
     231        SUPPORT_TCP = true
     232        SUPPORT_UDP = true
     233
     234        # IGMPを有効に設定
     235        SUPPORT_IGMP = true
     236
     237        #
     238        #  ネットワークサービスの Makefile のインクルード
     239        #
     240        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     241endif
    241242
    242243#
     
    258259all: tecs | $(DEPDIR)
    259260#       @$(MAKE) check
    260         @$(MAKE) check $(OBJNAME).bin
     261#       @$(MAKE) check $(OBJNAME).bin
    261262#       @$(MAKE) check $(OBJNAME).srec
     263        @$(MAKE) check $(OBJNAME).mot
    262264else
    263265#all: check
    264 all: check $(OBJNAME).bin
     266#all: check $(OBJNAME).bin
    265267#all: check $(OBJNAME).srec
     268all: check $(OBJNAME).mot
    266269endif
    267270
     
    271274#  コンフィギュレータに関する定義
    272275#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     276ifndef TINETDIR
     277  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     278  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     279                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     280else
     281  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     282  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275283                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276284                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278286                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279287                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     288endif
    280289CFG_ASMOBJS := $(CFG_ASMOBJS)
    281290CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423432
    424433#
     434#  並列makeのための依存関係の定義
     435#
     436$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     437$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     438                                                                                                                | offset.timestamp
     439
     440#
    425441#  特別な依存関係の定義
    426442#
     
    431447#
    432448$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     449        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434450                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435451                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    460476$(OBJNAME).srec: $(OBJFILE)
    461477        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     478
     479$(OBJNAME).mot: $(OBJFILE)
     480        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    462481
    463482#
  • asp3_tinet_ecnl_rx/trunk/app3_human_detec/DebugCitrus/Makefile

    r342 r364  
    167167        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168168endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     169CDEFS := $(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
    170170INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171171        -I$(SRCDIR)/../btstack/include \
     
    175175        -I$(SRCDIR)/../usbhost/src \
    176176        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     177LDFLAGS := $(LDFLAGS) -L.
    178178LIBS := $(LIBS) $(CXXLIBS)
    179179CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    209209endif
    210210
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     211ifdef TINETDIR
     212        #
     213        #  ネットワークサービスの定義
     214        #
     215        NO_USE_TINET_LIBRARY = true
     216
     217        #  ネットワークインタフェースの選択、何れか一つ選択する。
     218        NET_IF = ether
     219
     220        #  イーサネット・ディバイスドライバの選択
     221        NET_DEV = if_btusb
     222
     223        #  ネットワーク層の選択
     224        #SUPPORT_INET6 = true
     225        SUPPORT_INET4 = true
     226
     227        #  API に組込む機能の選択
     228        #API_CFG_IP4MAPPED_ADDR = true
     229
     230        #  トランスポート層の選択
     231        SUPPORT_TCP = true
     232        SUPPORT_UDP = true
     233
     234        # IGMPを有効に設定
     235        SUPPORT_IGMP = true
     236
     237        #
     238        #  ネットワークサービスの Makefile のインクルード
     239        #
     240        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     241endif
    241242
    242243#
     
    258259all: tecs | $(DEPDIR)
    259260#       @$(MAKE) check
    260         @$(MAKE) check $(OBJNAME).bin
     261#       @$(MAKE) check $(OBJNAME).bin
    261262#       @$(MAKE) check $(OBJNAME).srec
     263        @$(MAKE) check $(OBJNAME).mot
    262264else
    263265#all: check
    264 all: check $(OBJNAME).bin
     266#all: check $(OBJNAME).bin
    265267#all: check $(OBJNAME).srec
     268all: check $(OBJNAME).mot
    266269endif
    267270
     
    271274#  コンフィギュレータに関する定義
    272275#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     276ifndef TINETDIR
     277  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     278  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     279                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     280else
     281  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     282  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275283                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276284                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278286                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279287                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     288endif
    280289CFG_ASMOBJS := $(CFG_ASMOBJS)
    281290CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423432
    424433#
     434#  並列makeのための依存関係の定義
     435#
     436$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     437$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     438                                                                                                                | offset.timestamp
     439
     440#
    425441#  特別な依存関係の定義
    426442#
     
    431447#
    432448$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     449        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434450                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435451                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    460476$(OBJNAME).srec: $(OBJFILE)
    461477        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     478
     479$(OBJNAME).mot: $(OBJFILE)
     480        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    462481
    463482#
  • asp3_tinet_ecnl_rx/trunk/app3_human_detec/DebugEther/Makefile

    r342 r364  
    165165        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    166166endif
    167 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     167CDEFS := $(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
    168168INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    169169        -I$(SRCDIR)/../btstack/include \
     
    173173        -I$(SRCDIR)/../usbhost/src \
    174174        $(INCLUDES)
    175 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     175LDFLAGS := $(LDFLAGS) -L.
    176176LIBS := $(LIBS) $(CXXLIBS)
    177177CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    207207endif
    208208
    209 
    210 #
    211 #  ネットワークサービスの定義
    212 #
    213 NO_USE_TINET_LIBRARY = true
    214 
    215 #  ネットワークインタフェースの選択、何れか一つ選択する。
    216 NET_IF = ether
    217 
    218 #  イーサネット・ディバイスドライバの選択
     209ifdef TINETDIR
     210        #
     211        #  ネットワークサービスの定義
     212        #
     213        NO_USE_TINET_LIBRARY = true
     214
     215        #  ネットワークインタフェースの選択、何れか一つ選択する。
     216        NET_IF = ether
     217
     218        #  イーサネット・ディバイスドライバの選択
    219219        NET_DEV = if_rx62n
    220220
    221 #  ネットワーク層の選択
    222 #SUPPORT_INET6 = true
    223 SUPPORT_INET4 = true
    224 
    225 #  API に組込む機能の選択
    226 #API_CFG_IP4MAPPED_ADDR = true
    227 
    228 #  トランスポート層の選択
    229 SUPPORT_TCP = true
    230 SUPPORT_UDP = true
    231 
    232 # IGMPを有効に設定
    233 SUPPORT_IGMP = true
    234 
    235 #
    236 #  ネットワークサービスの Makefile のインクルード
    237 #
    238 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     221        #  ネットワーク層の選択
     222        #SUPPORT_INET6 = true
     223        SUPPORT_INET4 = true
     224
     225        #  API に組込む機能の選択
     226        #API_CFG_IP4MAPPED_ADDR = true
     227
     228        #  トランスポート層の選択
     229        SUPPORT_TCP = true
     230        SUPPORT_UDP = true
     231
     232        # IGMPを有効に設定
     233        SUPPORT_IGMP = true
     234
     235        #
     236        #  ネットワークサービスの Makefile のインクルード
     237        #
     238        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     239endif
    239240
    240241#
     
    256257all: tecs | $(DEPDIR)
    257258#       @$(MAKE) check
    258         @$(MAKE) check $(OBJNAME).bin
     259#       @$(MAKE) check $(OBJNAME).bin
    259260#       @$(MAKE) check $(OBJNAME).srec
     261        @$(MAKE) check $(OBJNAME).mot
    260262else
    261263#all: check
    262 all: check $(OBJNAME).bin
     264#all: check $(OBJNAME).bin
    263265#all: check $(OBJNAME).srec
     266all: check $(OBJNAME).mot
    264267endif
    265268
     
    269272#  コンフィギュレータに関する定義
    270273#
    271 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    272 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     274ifndef TINETDIR
     275  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     276  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     277                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     278else
     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 \
    273281                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    274282                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    276284                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    277285                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     286endif
    278287CFG_ASMOBJS := $(CFG_ASMOBJS)
    279288CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    421430
    422431#
     432#  並列makeのための依存関係の定義
     433#
     434$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     435$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     436                                                                                                                | offset.timestamp
     437
     438#
    423439#  特別な依存関係の定義
    424440#
     
    429445#
    430446$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    431         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     447        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    432448                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    433449                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    458474$(OBJNAME).srec: $(OBJFILE)
    459475        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     476
     477$(OBJNAME).mot: $(OBJFILE)
     478        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    460479
    461480#
  • asp3_tinet_ecnl_rx/trunk/app3_human_detec/src/echonet_main.c

    r351 r364  
    11/*
    22 *  TOPPERS ECHONET Lite Communication Middleware
    3  * 
     3 *
    44 *  Copyright (C) 2014-2018 Cores Co., Ltd. Japan
    5  * 
     5 *
    66 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    77 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2626 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    2727 *      免責すること.
    28  * 
     28 *
    2929 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3030 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3232 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3333 *  の責任を負わない.
    34  * 
     34 *
    3535 *  @(#) $Id$
    3636 */
    3737
    38 /* 
     38/*
    3939 *  サンプルプログラム(1)の本体
    4040 */
     
    8585{
    8686        /* サイズが1以外は受け付けない */
    87         if(size != 1)
     87        if (size != 1)
    8888                return 0;
    8989
    9090        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    9191
    92         switch(*(uint8_t *)src){
     92        switch (*(uint8_t *)src) {
    9393        /* ONの場合 */
    9494        case 0x30:
     
    117117{
    118118        /* サイズが1以外は受け付けない */
    119         if(size != 1)
     119        if (size != 1)
    120120                return 0;
    121121
    122122        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    123123
    124         switch(*(uint8_t *)src){
     124        switch (*(uint8_t *)src) {
    125125        /* 異常発生ありの場合 */
    126126        case 0x41:
     
    143143{
    144144        /* サイズが1以外は受け付けない */
    145         if(size != 1)
    146                 return 0;
    147 
    148         if((*(uint8_t *)src >= 0x31) && (*(uint8_t *)src <= 0x38)){
     145        if (size != 1)
     146                return 0;
     147
     148        if ((*(uint8_t *)src >= 0x31) && (*(uint8_t *)src <= 0x38)) {
    149149                *((uint8_t *)item->exinf) = *((uint8_t *)src);
    150150        }
    151151        /* 上記以外は受け付けない */
    152         else{
     152        else {
    153153                return 0;
    154154        }
     
    171171
    172172        /* サイズが1以外は受け付けない */
    173         if(size != 1)
     173        if (size != 1)
    174174                return 0;
    175175
    176176        *anno = false;
    177177
    178         if((*(uint8_t *)src >= 0x31) && (*(uint8_t *)src <= 0x38)){
     178        if ((*(uint8_t *)src >= 0x31) && (*(uint8_t *)src <= 0x38)) {
    179179                /* 以前の検知レベルを保存 */
    180180                prev_state = eobj->state;
     
    185185
    186186                /* 人体検知状態に変化があった場合 */
    187                 if((prev_state < eobj->threshold) != (eobj->state < eobj->threshold))
    188                 {
     187                if ((prev_state < eobj->threshold) != (eobj->state < eobj->threshold)) {
    189188                        /* プロパティ通知 */
    190189                        *anno = true;
     
    192191        }
    193192        /* 上記以外は受け付けない */
    194         else{
     193        else {
    195194                return 0;
    196195        }
     
    199198}
    200199
    201 /* 
     200/*
    202201 * 人体検知状態取得関数
    203202 */
     
    207206
    208207        /* 閾値より検知レベルが低い場合 */
    209         if(eobj->state < eobj->threshold){
     208        if (eobj->state < eobj->threshold) {
    210209                /* 人体検知なし */
    211210                ((uint8_t *)dst)[0] = 0x42;
    212211        }
    213212        /* 閾値より検知レベルが高い場合 */
    214         else{
     213        else {
    215214                /* 人体検知あり */
    216215                ((uint8_t *)dst)[0] = 0x41;
     
    243242
    244243        ret2 = get_tim(&now);
    245         if (ret2 != E_OK){
     244        if (ret2 != E_OK) {
    246245                syslog(LOG_ERROR, "get_tim");
    247246                return;
    248247        }
    249248
    250         for(;;){
     249        for (;;) {
    251250                prev = now;
    252251
     
    256255                /* 応答電文待ち */
    257256                ret = ecn_trcv_esv(&esv, timer);
    258                 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)){
     257                if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {
    259258                        syslog(LOG_ERROR, "ecn_trcv_esv");
    260259                        break;
     
    262261
    263262                ret2 = get_tim(&now);
    264                 if (ret2 != E_OK){
     263                if (ret2 != E_OK) {
    265264                        syslog(LOG_ERROR, "get_tim");
    266265                        break;
     
    277276                        /* 領域解放 */
    278277                        ret = ecn_rel_esv(esv);
    279                         if (ret != E_OK){
     278                        if (ret != E_OK) {
    280279                                syslog(LOG_ERROR, "ecn_rel_esv");
    281280                                break;
     
    286285                        /* 応答電文待ちの割り込みデータ取得 */
    287286                        ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len);
    288                         if (ret != E_OK){
     287                        if (ret != E_OK) {
    289288                                syslog(LOG_ERROR, "ecn_get_brk_dat");
    290289                                break;
     
    296295                        /* 領域解放 */
    297296                        ret = ecn_rel_esv(esv);
    298                         if (ret != E_OK){
     297                        if (ret != E_OK) {
    299298                                syslog(LOG_ERROR, "ecn_rel_esv");
    300299                                break;
     
    307306}
    308307
    309 bool_t started = false;
    310 
    311308void echonet_change_netif_link(uint8_t link_up, uint8_t up)
    312309{
     
    316313                return;
    317314
    318         if (up && !started) {
    319                 started = true;
    320 
    321                 /* ECHONETミドルウェアを起動 */
    322                 ret = ecn_sta_svc();
    323                 if (ret != E_OK)
    324                         return;
    325 
    326                 /* ECHONETミドルウェアを起動するのを待つ */
    327                 dly_tsk(100);
     315        if (up) {
     316                /* インスタンスリスト通知の送信 */
     317                ret = ecn_ntf_inl();
     318                if (ret != E_OK) {
     319                        syslog(LOG_ERROR, "ecn_ntf_inl");
     320                }
    328321        }
    329322
     
    339332}
    340333
    341 enum main_state_t{
     334enum main_state_t {
     335        main_state_start,
    342336        main_state_idle,
    343337};
    344338
    345339int main_timer = TMO_FEVR;
    346 enum main_state_t main_state = main_state_idle;
     340enum main_state_t main_state = main_state_start;
    347341bool_t main_btn1_state;
    348342int main_btn1_count = 0;
     
    368362        sil_wrb_mem((uint8_t *)0x0008C02A, 0x00);
    369363
    370         /* 10ms後にボタン状態を確認 */
    371         main_timer = 10 * 1000;
     364        /* ECHONETミドルウェアを起動するのを待つ */
     365        main_state = main_state_start;
     366        main_timer = 1000 * 1000;
    372367
    373368        /* 12bitADC初期化 */
     
    382377        main_btn2_state = (btn2 & 0x80) != 0;
    383378
     379        /* メインタスクを起動 */
    384380        ER ret = act_tsk(MAIN_TASK);
    385381        if (ret != E_OK) {
     
    401397static void main_progress(int interval)
    402398{
    403         if(main_timer == TMO_FEVR)
     399        if (main_timer == TMO_FEVR)
    404400                return;
    405401
    406402        main_timer -= interval;
    407         if(main_timer < 0){
     403        if (main_timer < 0) {
    408404                main_timer = 0;
    409405        }
     
    422418
    423419        ret = ecn_itr_ini(&enm, esv);
    424         if(ret != E_OK){
     420        if (ret != E_OK) {
    425421                syslog(LOG_ERROR, "ecn_itr_ini");
    426422                return;
    427423        }
    428424
    429         for(;;) {
    430                 while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
     425        for (;;) {
     426                while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
    431427                        switch (epc) {
    432428                        case 0x80:
     
    436432                        }
    437433                }
    438                 if(ret != E_BOVR){
     434                if (ret != E_BOVR) {
    439435                        syslog(LOG_ERROR, "ecn_itr_nxt");
    440436                        break;
    441437                }
    442                 if(enm.is_eof)
     438                if (enm.is_eof)
    443439                        break;
    444440        }
     
    450446static void main_break_wait(uint8_t *brkdat, int32_t len)
    451447{
    452         switch(main_state){
     448        switch (main_state) {
    453449        case main_state_idle:
    454450                break;
     
    472468static void main_timeout()
    473469{
     470        ER ret;
    474471        uint8_t btn1, btn2;
    475472        uint16_t ad_value;
    476473        uint8_t ad_level;
    477474
    478         if(main_timer != 0)
    479                 return;
    480 
    481         switch(main_state){
     475        if (main_timer != 0)
     476                return;
     477
     478        switch (main_state) {
     479        case main_state_start:
     480                /* ECHONETミドルウェアを起動 */
     481                ret = ecn_sta_svc();
     482                if (ret != E_OK) {
     483                        syslog(LOG_ERROR, "ecn_sta_svc");
     484                }
     485
     486                /* 10ms後にボタン状態を確認 */
     487                main_state = main_state_idle;
     488                main_timer = 10 * 1000;
     489                break;
    482490        case main_state_idle:
    483491                /* 10ms後にボタン状態を確認 */
     
    485493
    486494                /* ADCの変換結果取得 */
    487                 if((sil_reb_mem((uint8_t *)S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0){
     495                if ((sil_reb_mem((uint8_t *)S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0) {
    488496                        main_ad_avelage -= main_ad_table[main_ad_pos];
    489497                        ad_value = sil_reh_mem((uint16_t *)S12AD_ADDR0_ADDR);
     
    492500
    493501                        main_ad_pos++;
    494                         if(main_ad_pos >= main_ad_table_count){
     502                        if (main_ad_pos >= main_ad_table_count) {
    495503                                main_ad_pos = 0;
    496504                        }
    497505
    498506                        ad_level = (((main_ad_avelage / main_ad_table_count) >> 9) & 0x7) + 1;
    499                         if(main_ad_level != ad_level){
     507                        if (main_ad_level != ad_level) {
    500508                                /* 1秒変化が続いたら */
    501                                 if(main_count < 100){
     509                                if (main_count < 100) {
    502510                                        main_count++;
    503511                                }
    504                                 else{
     512                                else {
    505513                                        main_ad_level = ad_level;
    506514
     
    509517                                }
    510518                        }
    511                         else{
     519                        else {
    512520                                main_count = 0;
    513521                        }
     
    518526
    519527                /* ボタン状態読み込み */
    520                 btn1 = sil_reb_mem((uint8_t *) 0x0008C04A);
    521                 btn2 = sil_reb_mem((uint8_t *) 0x0008C040);
     528                btn1 = sil_reb_mem((uint8_t *)0x0008C04A);
     529                btn2 = sil_reb_mem((uint8_t *)0x0008C040);
    522530
    523531                /* ボタン1の処理 */
    524                 if(((btn1 & 0x80) != 0) && !main_btn1_state){
     532                if (((btn1 & 0x80) != 0) && !main_btn1_state) {
    525533                        main_btn1_count++;
    526                         if(main_btn1_count > 10){
     534                        if (main_btn1_count > 10) {
    527535                                main_btn1_count = 0;
    528536                                main_btn1_state = true;
     
    531539                        }
    532540                }
    533                 else if(((btn1 & 0x80) == 0) && main_btn1_state){
     541                else if (((btn1 & 0x80) == 0) && main_btn1_state) {
    534542                        main_btn1_count++;
    535                         if(main_btn1_count > 10){
     543                        if (main_btn1_count > 10) {
    536544                                main_btn1_count = 0;
    537545                                main_btn1_state = false;
     
    542550
    543551                /* ボタン2の処理 */
    544                 if(((btn2 & 0x80) != 0) && !main_btn2_state){
     552                if (((btn2 & 0x80) != 0) && !main_btn2_state) {
    545553                        main_btn2_count++;
    546                         if(main_btn2_count > 10){
     554                        if (main_btn2_count > 10) {
    547555                                main_btn2_count = 0;
    548556                                main_btn2_state = true;
     
    551559                        }
    552560                }
    553                 else if(((btn2 & 0x80) == 0) && main_btn2_state){
     561                else if (((btn2 & 0x80) == 0) && main_btn2_state) {
    554562                        main_btn2_count++;
    555                         if(main_btn2_count > 10){
     563                        if (main_btn2_count > 10) {
    556564                                main_btn2_count = 0;
    557565                                main_btn2_state = false;
     
    577585        /* プロパティ設定電文作成 */
    578586        ret = ecn_esv_setc(&esv, HUMAN_DETECTION_SENSOR_EOBJ, 0xB1, 1, p_edt);
    579         if(ret != E_OK){
     587        if (ret != E_OK) {
    580588                syslog(LOG_ERROR, "ecn_esv_setc");
    581589                return;
     
    599607
    600608        /* 押されて戻った時に処理する */
    601         if(push)
     609        if (push)
    602610                return;
    603611
    604612        /* 人体検知状態 */
    605         if(!main_rev){
     613        if (!main_rev) {
    606614                main_level--;
    607                 if(main_level < 1){
     615                if (main_level < 1) {
    608616                        main_level = 1;
    609617                        main_rev = true;
    610618                }
    611619        }
    612         else{
     620        else {
    613621                main_level++;
    614                 if(main_level > 8){
     622                if (main_level > 8) {
    615623                        main_level = 8;
    616624                        main_rev = false;
     
    622630        /* プロパティ設定電文作成 */
    623631        ret = ecn_esv_setc(&esv, HUMAN_DETECTION_SENSOR_EOBJ, 0xB1, 1, p_edt);
    624         if(ret != E_OK){
     632        if (ret != E_OK) {
    625633                syslog(LOG_ERROR, "ecn_esv_setc");
    626634                return;
     
    641649
    642650        /* 押されて戻った時に処理する */
    643         if(push)
     651        if (push)
    644652                return;
    645653
    646654        /* 人体検知状態 */
    647         if(!main_rev){
     655        if (!main_rev) {
    648656                main_level++;
    649                 if(main_level > 8){
     657                if (main_level > 8) {
    650658                        main_level = 8;
    651659                        main_rev = false;
    652660                }
    653661        }
    654         else{
     662        else {
    655663                main_level--;
    656                 if(main_level < 1){
     664                if (main_level < 1) {
    657665                        main_level = 1;
    658666                        main_rev = true;
     
    664672        /* プロパティ設定電文作成 */
    665673        ret = ecn_esv_setc(&esv, HUMAN_DETECTION_SENSOR_EOBJ, 0xB1, 1, p_edt);
    666         if(ret != E_OK){
     674        if (ret != E_OK) {
    667675                syslog(LOG_ERROR, "ecn_esv_setc");
    668676                return;
  • asp3_tinet_ecnl_rx/trunk/app3_human_detec/src/main.c

    r359 r364  
    7979
    8080ID ws_api_mailboxid = MAIN_DATAQUEUE;
     81#ifndef NOUSE_MPF_NET_BUF
    8182ID ws_mempoolid = MPF_NET_BUF_256;
     83#endif
    8284
    8385#ifdef IF_ETHER_BTUSB
     
    111113static void main_timeout();
    112114
     115extern int ntshell_exit;
     116
    113117int uart_read(char *buf, int cnt, void *extobj)
    114118{
    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;
    116153}
    117154
     
    119156{
    120157        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);
    136158}
    137159
     
    150172        main_initialize();
    151173
    152         ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);
     174        ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj);
    153175        ntshell_set_prompt(&ntshell, "NTShell>");
    154176        ntshell_execute(&ntshell);
     
    168190        ER ret;
    169191
    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);
    171198
    172199        main_obj.timer = TMO_FEVR;
  • asp3_tinet_ecnl_rx/trunk/app3_human_detec/src/main.cfg

    r342 r364  
    5454INCLUDE("tinet/tinet_asp.cfg");
    5555INCLUDE("tinet_main.cfg");
    56 INCLUDE("netinet/ip_igmp.cfg");
    5756
    5857/* DHCP クライアント */
     
    7776INCLUDE("ffarch.cfg");
    7877
     78/* mbed */
     79INCLUDE("mbed_api.cfg");
     80
    7981#ifdef IF_ETHER_BTUSB
    8082INCLUDE("usb_hbth.cfg");
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/.cproject

    r345 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.415917897" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1411531115" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    39                                                         <builder buildPath="${workspace_loc:/app4_aircon}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.414701081" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     39                                                        <builder buildPath="${workspace_loc:/app4_aircon}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.414701081" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    4040                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.164426586" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    4141                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.2048565838" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    9191                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    9292                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    93                                 <option id="toolchain.version" value="4.8.4.201703"/>
     93                                <option id="toolchain.version" value="4.8.4.201803"/>
    9494                        </storageModule>
    9595                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    106106                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1916252483" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    107107                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.2125057454" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    108                                                         <builder buildPath="${workspace_loc:/app4_aircon}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.1414769322" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     108                                                        <builder buildPath="${workspace_loc:/app4_aircon}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.1414769322" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    109109                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.431256842" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    110110                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1885500969" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    160160                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    161161                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    162                                 <option id="toolchain.version" value="4.8.4.201703"/>
     162                                <option id="toolchain.version" value="4.8.4.201803"/>
    163163                        </storageModule>
    164164                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    175175                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1958295650" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    176176                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1394526678" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    177                                                         <builder buildPath="${workspace_loc:/app4_aircon}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1946140985" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     177                                                        <builder buildPath="${workspace_loc:/app4_aircon}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1946140985" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    178178                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.284884303" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    179179                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1809039592" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    224224        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    225225        <storageModule moduleId="refreshScope" versionNumber="2">
     226                <configuration configurationName="DebugEther"/>
     227                <configuration configurationName="DebugCitrus"/>
    226228                <configuration configurationName="Debug">
    227229                        <resource resourceType="PROJECT" workspacePath="/app4_aircon"/>
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/Debug/Makefile

    r342 r364  
    155155
    156156#
     157#  gdicサービスの定義
     158#
     159
     160include $(SRCDIR)/gdic/adafruit_ssd1306/Makefile.config
     161
     162#
    157163#  共通コンパイルオプションの定義
    158164#
     
    167173        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168174endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     175CDEFS := $(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
    170176INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171177        -I$(SRCDIR)/../btstack/include \
     
    175181        -I$(SRCDIR)/../usbhost/src \
    176182        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     183LDFLAGS := $(LDFLAGS) -L.
    178184LIBS := $(LIBS) $(CXXLIBS)
    179185CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    185191APPLDIRS := $(APPLDIRS) ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src
    186192APPL_COBJS := $(APPL_COBJS) mbed_api.o netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o mmc_rspi.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
     193APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
     194APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     195APPL_CFLAGS := $(APPL_CFLAGS) -DADAFRUIT_SSD1306 -DSHNM12_FONT
    187196
    188197#
     
    209218endif
    210219
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     220ifdef TINETDIR
     221        #
     222        #  ネットワークサービスの定義
     223        #
     224        NO_USE_TINET_LIBRARY = true
     225
     226        #  ネットワークインタフェースの選択、何れか一つ選択する。
     227        NET_IF = ether
     228
     229        #  イーサネット・ディバイスドライバの選択
     230        NET_DEV = if_btusb
     231
     232        #  ネットワーク層の選択
     233        #SUPPORT_INET6 = true
     234        SUPPORT_INET4 = true
     235
     236        #  API に組込む機能の選択
     237        #API_CFG_IP4MAPPED_ADDR = true
     238
     239        #  トランスポート層の選択
     240        SUPPORT_TCP = true
     241        SUPPORT_UDP = true
     242
     243        # IGMPを有効に設定
     244        SUPPORT_IGMP = true
     245
     246        #
     247        #  ネットワークサービスの Makefile のインクルード
     248        #
     249        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     250endif
    241251
    242252#
     
    271281#  コンフィギュレータに関する定義
    272282#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     283ifndef TINETDIR
     284  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     285  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     286                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     287else
     288  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     289  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275290                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276291                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278293                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279294                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     295endif
    280296CFG_ASMOBJS := $(CFG_ASMOBJS)
    281297CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423439
    424440#
     441#  並列makeのための依存関係の定義
     442#
     443$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     444$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     445                                                                                                                | offset.timestamp
     446
     447#
    425448#  特別な依存関係の定義
    426449#
     
    431454#
    432455$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     456        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434457                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435458                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/DebugCitrus/Makefile

    r342 r364  
    155155
    156156#
     157#  gdicサービスの定義
     158#
     159
     160include $(SRCDIR)/gdic/adafruit_ssd1306/Makefile.config
     161
     162#
    157163#  共通コンパイルオプションの定義
    158164#
     
    167173        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168174endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     175CDEFS := $(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
    170176INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171177        -I$(SRCDIR)/../btstack/include \
     
    175181        -I$(SRCDIR)/../usbhost/src \
    176182        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     183LDFLAGS := $(LDFLAGS) -L.
    178184LIBS := $(LIBS) $(CXXLIBS)
    179185CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    185191APPLDIRS := $(APPLDIRS) ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src
    186192APPL_COBJS := $(APPL_COBJS) mbed_api.o netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o mmc_rspi.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
     193APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
     194APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     195APPL_CFLAGS := $(APPL_CFLAGS) -DADAFRUIT_SSD1306 -DSHNM12_FONT
    187196
    188197#
     
    209218endif
    210219
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     220ifdef TINETDIR
     221        #
     222        #  ネットワークサービスの定義
     223        #
     224        NO_USE_TINET_LIBRARY = true
     225
     226        #  ネットワークインタフェースの選択、何れか一つ選択する。
     227        NET_IF = ether
     228
     229        #  イーサネット・ディバイスドライバの選択
     230        NET_DEV = if_btusb
     231
     232        #  ネットワーク層の選択
     233        #SUPPORT_INET6 = true
     234        SUPPORT_INET4 = true
     235
     236        #  API に組込む機能の選択
     237        #API_CFG_IP4MAPPED_ADDR = true
     238
     239        #  トランスポート層の選択
     240        SUPPORT_TCP = true
     241        SUPPORT_UDP = true
     242
     243        # IGMPを有効に設定
     244        SUPPORT_IGMP = true
     245
     246        #
     247        #  ネットワークサービスの Makefile のインクルード
     248        #
     249        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     250endif
    241251
    242252#
     
    271281#  コンフィギュレータに関する定義
    272282#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     283ifndef TINETDIR
     284  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     285  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     286                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     287else
     288  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     289  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275290                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276291                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278293                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279294                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     295endif
    280296CFG_ASMOBJS := $(CFG_ASMOBJS)
    281297CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423439
    424440#
     441#  並列makeのための依存関係の定義
     442#
     443$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     444$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     445                                                                                                                | offset.timestamp
     446
     447#
    425448#  特別な依存関係の定義
    426449#
     
    431454#
    432455$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     456        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434457                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435458                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/DebugEther/Makefile

    r342 r364  
    153153
    154154#
     155#  gdicサービスの定義
     156#
     157
     158include $(SRCDIR)/gdic/adafruit_ssd1306/Makefile.config
     159
     160#
    155161#  共通コンパイルオプションの定義
    156162#
     
    165171        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    166172endif
    167 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     173CDEFS := $(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
    168174INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    169175        -I$(SRCDIR)/../btstack/include \
     
    173179        -I$(SRCDIR)/../usbhost/src \
    174180        $(INCLUDES)
    175 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     181LDFLAGS := $(LDFLAGS) -L.
    176182LIBS := $(LIBS) $(CXXLIBS)
    177183CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    183189APPLDIRS := $(APPLDIRS) ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src
    184190APPL_COBJS := $(APPL_COBJS) mbed_api.o netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o mmc_rspi.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
     191APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
     192APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     193APPL_CFLAGS := $(APPL_CFLAGS) -DADAFRUIT_SSD1306 -DSHNM12_FONT
    185194
    186195#
     
    207216endif
    208217
    209 
    210 #
    211 #  ネットワークサービスの定義
    212 #
    213 NO_USE_TINET_LIBRARY = true
    214 
    215 #  ネットワークインタフェースの選択、何れか一つ選択する。
    216 NET_IF = ether
    217 
    218 #  イーサネット・ディバイスドライバの選択
     218ifdef TINETDIR
     219        #
     220        #  ネットワークサービスの定義
     221        #
     222        NO_USE_TINET_LIBRARY = true
     223
     224        #  ネットワークインタフェースの選択、何れか一つ選択する。
     225        NET_IF = ether
     226
     227        #  イーサネット・ディバイスドライバの選択
    219228        NET_DEV = if_rx62n
    220229
    221 #  ネットワーク層の選択
    222 #SUPPORT_INET6 = true
    223 SUPPORT_INET4 = true
    224 
    225 #  API に組込む機能の選択
    226 #API_CFG_IP4MAPPED_ADDR = true
    227 
    228 #  トランスポート層の選択
    229 SUPPORT_TCP = true
    230 SUPPORT_UDP = true
    231 
    232 # IGMPを有効に設定
    233 SUPPORT_IGMP = true
    234 
    235 #
    236 #  ネットワークサービスの Makefile のインクルード
    237 #
    238 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     230        #  ネットワーク層の選択
     231        #SUPPORT_INET6 = true
     232        SUPPORT_INET4 = true
     233
     234        #  API に組込む機能の選択
     235        #API_CFG_IP4MAPPED_ADDR = true
     236
     237        #  トランスポート層の選択
     238        SUPPORT_TCP = true
     239        SUPPORT_UDP = true
     240
     241        # IGMPを有効に設定
     242        SUPPORT_IGMP = true
     243
     244        #
     245        #  ネットワークサービスの Makefile のインクルード
     246        #
     247        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     248endif
    239249
    240250#
     
    269279#  コンフィギュレータに関する定義
    270280#
    271 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    272 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     281ifndef TINETDIR
     282  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     283  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     284                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     285else
     286  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     287  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    273288                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    274289                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    276291                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    277292                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     293endif
    278294CFG_ASMOBJS := $(CFG_ASMOBJS)
    279295CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    421437
    422438#
     439#  並列makeのための依存関係の定義
     440#
     441$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     442$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     443                                                                                                                | offset.timestamp
     444
     445#
    423446#  特別な依存関係の定義
    424447#
     
    429452#
    430453$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    431         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     454        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    432455                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    433456                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/src/echonet_main.c

    r351 r364  
    11/*
    22 *  TOPPERS ECHONET Lite Communication Middleware
    3  * 
    4  *  Copyright (C) 2014 Cores Co., Ltd. Japan
    5  * 
     3 *
     4 *  Copyright (C) 2014-2018 Cores Co., Ltd. Japan
     5 *
    66 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    77 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2626 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    2727 *      免責すること.
    28  * 
     28 *
    2929 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3030 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3232 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3333 *  の責任を負わない.
    34  * 
     34 *
    3535 *  @(#) $Id$
    3636 */
    3737
    38 /* 
     38/*
    3939 *  サンプルプログラム(1)の本体
    4040 */
     
    5151#include "echonet_cfg.h"
    5252#include "target_kernel_impl.h"
     53#include "adafruit_ssd1306.h"
     54#include "draw_font.h"
    5355
    5456/* TODO: メーカーコードを設定 */
     
    180182
    181183        /* サイズが1以外は受け付けない */
    182         if(size != 1)
     184        if (size != 1)
    183185                return 0;
    184186
    185187        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    186188
    187         switch(*(uint8_t *)src){
     189        switch (*(uint8_t *)src) {
    188190        /* ONの場合 */
    189191        case 0x30:
     
    194196                data[0] = 0x80;
    195197                ret = ecn_brk_wai(data, sizeof(data));
    196                 if(ret != E_OK){
     198                if (ret != E_OK) {
    197199                        syslog(LOG_ERROR, "ecn_brk_wai");
    198200                        return 2;
     
    213215{
    214216        /* サイズが1以外は受け付けない */
    215         if(size != 1)
     217        if (size != 1)
    216218                return 0;
    217219
    218220        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    219221
    220         switch(*(uint8_t *)src){
     222        switch (*(uint8_t *)src) {
    221223        /* 異常発生ありの場合 */
    222224        case 0x41:
     
    242244
    243245        /* サイズが1以外は受け付けない */
    244         if(size != 1)
     246        if (size != 1)
    245247                return 0;
    246248
    247         switch(*(uint8_t *)src){
     249        switch (*(uint8_t *)src) {
    248250        /* 自動の場合 */
    249251        case 0x41:
     
    262264                data[0] = 0xB0;
    263265                ret = ecn_brk_wai(data, sizeof(data));
    264                 if(ret != E_OK){
     266                if (ret != E_OK) {
    265267                        syslog(LOG_ERROR, "ecn_brk_wai");
    266268                        return 2;
     
    284286
    285287        /* サイズが1以外は受け付けない */
    286         if(size != 1)
     288        if (size != 1)
    287289                return 0;
    288290
    289291        /* 0℃~50℃ */
    290         if((*(uint8_t *)src >= 0x00) && (*(uint8_t *)src <= 0x32)){
     292        if ((*(uint8_t *)src >= 0x00) && (*(uint8_t *)src <= 0x32)) {
    291293                *((uint8_t *)item->exinf) = *((uint8_t *)src);
    292294                /* メインタスクに通知 */
    293295                data[0] = 0xB3;
    294296                ret = ecn_brk_wai(data, sizeof(data));
    295                 if(ret != E_OK){
     297                if (ret != E_OK) {
    296298                        syslog(LOG_ERROR, "ecn_brk_wai");
    297299                        return 2;
     
    299301        }
    300302        /* 上記以外は受け付けない */
    301         else{
     303        else {
    302304                return 0;
    303305        }
     
    329331
    330332        ret2 = get_tim(&now);
    331         if (ret2 != E_OK){
     333        if (ret2 != E_OK) {
    332334                syslog(LOG_ERROR, "get_tim");
    333335                return;
    334336        }
    335337
    336         for(;;){
     338        for (;;) {
    337339                prev = now;
    338340
     
    342344                /* 応答電文待ち */
    343345                ret = ecn_trcv_esv(&esv, timer);
    344                 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)){
     346                if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {
    345347                        syslog(LOG_ERROR, "ecn_trcv_esv");
    346348                        break;
     
    348350
    349351                ret2 = get_tim(&now);
    350                 if (ret2 != E_OK){
     352                if (ret2 != E_OK) {
    351353                        syslog(LOG_ERROR, "get_tim");
    352354                        break;
     
    363365                        /* 領域解放 */
    364366                        ret = ecn_rel_esv(esv);
    365                         if (ret != E_OK){
     367                        if (ret != E_OK) {
    366368                                syslog(LOG_ERROR, "ecn_rel_esv");
    367369                                break;
     
    372374                        /* 応答電文待ちの割り込みデータ取得 */
    373375                        ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len);
    374                         if (ret != E_OK){
     376                        if (ret != E_OK) {
    375377                                syslog(LOG_ERROR, "ecn_get_brk_dat");
    376378                                break;
     
    382384                        /* 領域解放 */
    383385                        ret = ecn_rel_esv(esv);
    384                         if (ret != E_OK){
     386                        if (ret != E_OK) {
    385387                                syslog(LOG_ERROR, "ecn_rel_esv");
    386388                                break;
     
    393395}
    394396
    395 bool_t started = false;
    396 
    397397void echonet_change_netif_link(uint8_t link_up, uint8_t up)
    398398{
     
    402402                return;
    403403
    404         if (up && !started) {
    405                 started = true;
    406 
    407                 /* ECHONETミドルウェアを起動 */
    408                 ret = ecn_sta_svc();
    409                 if (ret != E_OK)
    410                         return;
    411 
    412                 /* ECHONETミドルウェアを起動するのを待つ */
    413                 dly_tsk(100);
     404        if (up) {
     405                /* インスタンスリスト通知の送信 */
     406                ret = ecn_ntf_inl();
     407                if (ret != E_OK) {
     408                        syslog(LOG_ERROR, "ecn_ntf_inl");
     409                }
    414410        }
    415411
     
    425421}
    426422
    427 enum main_state_t{
     423enum main_state_t {
     424        main_state_start,
    428425        main_state_idle,
    429426        main_state_search,
     
    436433
    437434int main_timer = TMO_FEVR;
    438 enum main_state_t main_state = main_state_idle;
     435enum main_state_t main_state = main_state_start;
    439436int16_t main_ave_templ;
    440437bool_t main_tmp_fan_on;
     
    443440int main_btn_timer = TMO_FEVR;
    444441
    445 enum main_led_state_t{
    446         main_led_state_idle,
    447         main_led_state_on_o,
    448         main_led_state_on_n,
    449         main_led_state_off_o,
    450         main_led_state_off_f1,
    451         main_led_state_off_f2,
    452         main_led_state_space1,
    453         main_led_state_templ_10,
    454         main_led_state_templ_1,
    455         main_led_state_space2,
    456         main_led_state_ave_templ_10,
    457         main_led_state_ave_templ_1,
    458         main_led_state_space3,
    459         main_led_state_mode,
    460         main_led_state_space4,
    461 };
    462 
    463 int main_led_timer = TMO_FEVR;
    464 enum main_led_state_t main_led_state = main_led_state_idle;
    465 bool_t main_led_update;
     442int main_lcd_timer = TMO_FEVR;
     443int main_lcd_state = 0;
    466444
    467445bool_t main_btn1_state;
     
    470448int main_btn2_count = 0;
    471449
    472 enum main_rly_state_t{
     450LCD_Handler_t lcd;
     451
     452enum main_rly_state_t {
    473453        main_rly_state_off,
    474454        main_rly_state_on
     
    486466        uint8_t btn1, btn2;
    487467
    488         /* 7segを"0"と表示 */
    489         sil_wrb_mem((uint8_t *)0x0008C02D, 0xC0);
    490 
    491         /* 1秒後に温度センサーを探す */
     468        /* ECHONETミドルウェアを起動するのを待つ */
     469        main_state = main_state_start;
    492470        main_timer = 1000 * 1000;
    493471
    494472        /* 10ms後にボタン状態を確認 */
    495473        main_btn_timer = 10 * 1000;
    496 
    497         if(home_air_conditioner_data.property80 == 0x30)
    498                 main_led_state = main_led_state_on_o;
    499         else
    500                 main_led_state = main_led_state_off_o;
    501         main_led_timer = 0;
    502474
    503475        /* ボタン状態読み込み */
     
    507479        main_btn2_state = (btn2 & 0x80) != 0;
    508480
     481        i2c_init(&lcd.i2c, I2C_SDA, I2C_SCL);
     482        i2c_frequency(&lcd.i2c, 100000);
     483
     484        lcd_init3(&lcd, NC);
     485
     486        lcd_begin(&lcd, SSD1306_SWITCHCAPVCC, SSD1306_I2C_ADDRESS, true);
     487
     488        lcd_clearDisplay(&lcd);
     489
     490        lcd_display(&lcd);
     491
     492        /* 1秒後にLCD表示を更新 */
     493        main_lcd_state = 10;
     494        main_lcd_timer = 1000 * 1000;
     495
     496        /* メインタスクを起動 */
    509497        ER ret = act_tsk(MAIN_TASK);
    510498        if (ret != E_OK) {
     
    520508        int result = main_timer;
    521509
    522         if((result == TMO_FEVR)
    523                 || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))){
     510        if ((result == TMO_FEVR)
     511                || ((main_btn_timer != TMO_FEVR) && (main_btn_timer < result))) {
    524512                result = main_btn_timer;
    525513        }
    526514
    527         if((result == TMO_FEVR)
    528                 || ((main_led_timer != TMO_FEVR) && (main_led_timer < result))){
    529                 result = main_led_timer;
    530         }
    531 
    532         if((result == TMO_FEVR)
    533                 || ((main_rly_timer != TMO_FEVR) && (main_rly_timer < result))){
     515        if ((result == TMO_FEVR)
     516                || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) {
     517                result = main_lcd_timer;
     518        }
     519
     520        if ((result == TMO_FEVR)
     521                || ((main_rly_timer != TMO_FEVR) && (main_rly_timer < result))) {
    534522                result = main_rly_timer;
    535523        }
     
    543531static void main_progress(int interval)
    544532{
    545         if(main_timer != TMO_FEVR){
     533        if (main_timer != TMO_FEVR) {
    546534                main_timer -= interval;
    547                 if(main_timer < 0){
     535                if (main_timer < 0) {
    548536                        main_timer = 0;
    549537                }
    550538        }
    551539
    552         if(main_btn_timer != TMO_FEVR){
     540        if (main_btn_timer != TMO_FEVR) {
    553541                main_btn_timer -= interval;
    554                 if(main_btn_timer < 0){
     542                if (main_btn_timer < 0) {
    555543                        main_btn_timer = 0;
    556544                }
    557545        }
    558546
    559         if(main_led_timer != TMO_FEVR){
    560                 main_led_timer -= interval;
    561                 if(main_led_timer < 0){
    562                         main_led_timer = 0;
    563                 }
    564         }
    565 
    566         if(main_rly_timer != TMO_FEVR){
     547        if (main_lcd_timer != TMO_FEVR) {
     548                main_lcd_timer -= interval;
     549                if (main_lcd_timer < 0) {
     550                        main_lcd_timer = 0;
     551                }
     552        }
     553
     554        if (main_rly_timer != TMO_FEVR) {
    567555                main_rly_timer -= interval;
    568                 if(main_rly_timer < 0){
     556                if (main_rly_timer < 0) {
    569557                        main_rly_timer = 0;
    570558                }
     
    588576
    589577        eobjid = ecn_get_eobj(esv);
    590         if(eobjid == EOBJ_NULL){
     578        if (eobjid == EOBJ_NULL) {
    591579                syslog(LOG_ERROR, "ecn_get_eobj");
    592580        }
    593581
    594582        ret = ecn_itr_ini(&enm, esv);
    595         if(ret != E_OK){
     583        if (ret != E_OK) {
    596584                syslog(LOG_ERROR, "ecn_itr_ini");
    597585                return;
    598586        }
    599587
    600         for(;;) {
    601                 while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
     588        for (;;) {
     589                while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
    602590                        switch (epc) {
    603591                        case 0xD6:
    604                                 switch(main_state){
     592                                switch (main_state) {
    605593                                case main_state_idle:
    606594                                case main_state_search:
     
    613601                                break;
    614602                        case 0xE0:
    615                                 switch(main_state){
     603                                switch (main_state) {
    616604                                case main_state_survey_01:
    617605                                        /* 温度センサー2温度監視 */
     
    643631                        }
    644632                }
    645                 if(ret != E_BOVR){
     633                if (ret != E_BOVR) {
    646634                        syslog(LOG_ERROR, "ecn_itr_nxt");
    647635                        break;
    648636                }
    649                 if(enm.is_eof)
     637                if (enm.is_eof)
    650638                        break;
    651639        }
     
    668656        /* 温度センサー動作状態取得電文作成 */
    669657        ret = ecn_esv_get(&esv, senserids[no - 1], 0x80);
    670         if(ret != E_OK){
     658        if (ret != E_OK) {
    671659                syslog(LOG_ERROR, "ecn_esv_get");
    672660                return;
     
    675663        /* 温度計測値取得追加 */
    676664        ret = ecn_add_epc(esv, 0xE0);
    677         if(ret != E_OK){
     665        if (ret != E_OK) {
    678666                syslog(LOG_ERROR, "ecn_add_epc");
    679667
    680668                ret = ecn_rel_esv(esv);
    681                 if(ret != E_OK){
     669                if (ret != E_OK) {
    682670                        syslog(LOG_ERROR, "ecn_rel_esv");
    683671                }
     
    687675        /* 電文送信 */
    688676        ret = ecn_snd_esv(esv);
    689         if(ret != E_OK){
     677        if (ret != E_OK) {
    690678                syslog(LOG_ERROR, "ecn_snd_esv");
    691679        }
     
    700688        int templ = 0;
    701689
    702         if(temp_sensor_01_data.property80 == 0x30){
     690        if (temp_sensor_01_data.property80 == 0x30) {
    703691                templ += ((((uint16_t)temp_sensor_01_data.propertyE0) & 0xFF) << 8)
    704692                        | ((((uint16_t)temp_sensor_01_data.propertyE0) & 0xFF00) >> 8);
    705693                count++;
    706694        }
    707         if(temp_sensor_02_data.property80 == 0x30){
     695        if (temp_sensor_02_data.property80 == 0x30) {
    708696                templ += ((((uint16_t)temp_sensor_02_data.propertyE0) & 0xFF) << 8)
    709697                        | ((((uint16_t)temp_sensor_02_data.propertyE0) & 0xFF00) >> 8);
    710698                count++;
    711699        }
    712         if(temp_sensor_03_data.property80 == 0x30){
     700        if (temp_sensor_03_data.property80 == 0x30) {
    713701                templ += ((((uint16_t)temp_sensor_03_data.propertyE0) & 0xFF) << 8)
    714702                        | ((((uint16_t)temp_sensor_03_data.propertyE0) & 0xFF00) >> 8);
    715703                count++;
    716704        }
    717         if(temp_sensor_04_data.property80 == 0x30){
     705        if (temp_sensor_04_data.property80 == 0x30) {
    718706                templ += ((((uint16_t)temp_sensor_04_data.propertyE0) & 0xFF) << 8)
    719707                        | ((((uint16_t)temp_sensor_04_data.propertyE0) & 0xFF00) >> 8);
     
    721709        }
    722710
    723         if(count > 0){
     711        if (count > 0) {
    724712                templ = templ / count;
    725                 if(templ < -2732)
     713                if (templ < -2732)
    726714                        main_ave_templ = 0x8000;
    727                 else if(templ > 32766)
     715                else if (templ > 32766)
    728716                        main_ave_templ = 0x7FFF;
    729717                else
     
    731719
    732720                /* FANが停止中の場合 */
    733                 if(!main_tmp_fan_on){
    734                         if(main_ave_templ > (10 * home_air_conditioner_data.propertyB3 + 5)){
     721                if (!main_tmp_fan_on) {
     722                        if (main_ave_templ > (10 * home_air_conditioner_data.propertyB3 + 5)) {
    735723                                main_tmp_fan_on = true;
    736724
     
    741729                }
    742730                /* FANが稼働中の場合 */
    743                 else{
    744                         if(main_ave_templ < (10 * home_air_conditioner_data.propertyB3 - 5)){
     731                else {
     732                        if (main_ave_templ < (10 * home_air_conditioner_data.propertyB3 - 5)) {
    745733                                main_tmp_fan_on = false;
    746734
     
    760748static void main_break_wait(uint8_t *brkdat, int32_t len)
    761749{
    762         switch(main_led_state){
    763         case main_led_state_idle:
    764                 switch (brkdat[0]) {
    765                 case 0x01:
    766                         // Link up/down
    767                         break;
    768                 case 0x80:
    769                 case 0xB0:
    770                 case 0xB3:
    771                         if(home_air_conditioner_data.property80 == 0x30)
    772                                 main_led_state = main_led_state_on_o;
    773                         else
    774                                 main_led_state = main_led_state_off_o;
    775                         main_led_timer = 0;
    776                         break;
    777                 }
    778                 break;
    779         default:
    780                 main_led_update = true;
    781                 break;
     750        bool_t prev;
     751
     752        if (brkdat[0] == 0x01) {
     753                // Link up/down
     754                return;
    782755        }
    783756
    784757        /* 運転モードが送風の場合、温度によらずFANをON */
    785         if (*brkdat == 0xB0) {
    786                 bool_t prev = main_ctl_fan_on;
     758        switch (*brkdat) {
     759        case 0x80:
     760                if (main_ctl_fan_on) {
     761                        /* リレー出力をON/OFF */
     762                        main_rly_onoff(home_air_conditioner_data.property80 == 0x30);
     763                }
     764                break;
     765        case 0xB0:
     766                prev = main_ctl_fan_on;
    787767                main_ctl_fan_on = home_air_conditioner_data.propertyB0 == 0x45;
    788768
    789769                if (prev != main_ctl_fan_on) {
    790770                        if (main_ctl_fan_on) {
    791                                 /* リレー出力をON */
    792                                 if (!main_tmp_fan_on)
    793                                         main_rly_onoff(true);
     771                                /* リレー出力をON/OFF */
     772                                main_rly_onoff(home_air_conditioner_data.property80 == 0x30);
    794773                        }
    795774                        else {
    796                                 /* リレー出力をOFF */
    797                                 if (!main_tmp_fan_on)
    798                                         main_rly_onoff(false);
     775                                /* リレー出力をON/OFF */
     776                                main_rly_onoff(main_tmp_fan_on);
    799777                        }
    800778                }
     
    804782static void main_ontimer();
    805783static void main_btn_ontimer();
    806 static void main_led_ontimer();
     784static void main_lcd_ontimer();
    807785static void main_rly_ontimer();
    808786
     
    812790static void main_timeout()
    813791{
    814         if(main_timer == 0){
     792        if (main_timer == 0) {
    815793                main_ontimer();
    816794        }
    817795
    818         if(main_btn_timer == 0){
     796        if (main_btn_timer == 0) {
    819797                main_btn_ontimer();
    820798        }
    821799
    822         if(main_led_timer == 0){
    823                 main_led_ontimer();
    824         }
    825 
    826         if(main_rly_timer == 0){
     800        if (main_lcd_timer == 0) {
     801                main_lcd_ontimer();
     802        }
     803
     804        if (main_rly_timer == 0) {
    827805                main_rly_ontimer();
    828806        }
     
    833811static void main_ontimer()
    834812{
    835         switch(main_state){
     813        ER ret;
     814
     815        switch (main_state) {
     816        case main_state_start:
     817                /* ECHONETミドルウェアを起動 */
     818                ret = ecn_sta_svc();
     819                if (ret != E_OK) {
     820                        syslog(LOG_ERROR, "ecn_sta_svc");
     821                }
     822
     823                /* 1秒後に温度センサーを探す */
     824                main_state = main_state_idle;
     825                main_timer = 1000 * 1000;
     826                break;
    836827        case main_state_idle:
    837828        case main_state_search:
     
    890881        /* 温度センサー検索 */
    891882        ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6);
    892         if(ret != E_OK){
     883        if (ret != E_OK) {
    893884                syslog(LOG_ERROR, "ecn_esv_inf_req");
    894885                return;
     
    897888        /* 電文送信 */
    898889        ret = ecn_snd_esv(esv);
    899         if(ret != E_OK){
     890        if (ret != E_OK) {
    900891                syslog(LOG_ERROR, "ecn_snd_esv");
    901892        }
     
    917908
    918909        /* ボタン1の処理 */
    919         if(((btn1 & 0x20) != 0) && !main_btn1_state){
     910        if (((btn1 & 0x20) != 0) && !main_btn1_state) {
    920911                main_btn1_count++;
    921                 if(main_btn1_count > 10){
     912                if (main_btn1_count > 10) {
    922913                        main_btn1_count = 0;
    923914                        main_btn1_state = true;
     
    926917                }
    927918        }
    928         else if(((btn1 & 0x20) == 0) && main_btn1_state){
     919        else if (((btn1 & 0x20) == 0) && main_btn1_state) {
    929920                main_btn1_count++;
    930                 if(main_btn1_count > 10){
     921                if (main_btn1_count > 10) {
    931922                        main_btn1_count = 0;
    932923                        main_btn1_state = false;
     
    937928
    938929        /* ボタン2の処理 */
    939         if(((btn2 & 0x80) != 0) && !main_btn2_state){
     930        if (((btn2 & 0x80) != 0) && !main_btn2_state) {
    940931                main_btn2_count++;
    941                 if(main_btn2_count > 10){
     932                if (main_btn2_count > 10) {
    942933                        main_btn2_count = 0;
    943934                        main_btn2_state = true;
     
    946937                }
    947938        }
    948         else if(((btn2 & 0x80) == 0) && main_btn2_state){
     939        else if (((btn2 & 0x80) == 0) && main_btn2_state) {
    949940                main_btn2_count++;
    950                 if(main_btn2_count > 10){
     941                if (main_btn2_count > 10) {
    951942                        main_btn2_count = 0;
    952943                        main_btn2_state = false;
     
    957948}
    958949
    959 uint8_t led_num[] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 };
    960 uint8_t led_onf[] = { 0xA3, 0xAB, 0x8E };
    961 uint8_t led_abcdef[] = { 0xF7, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E };
    962 
    963 static void main_led_ontimer()
    964 {
     950static void main_lcd_ontimer()
     951{
     952        char power[] = "電源:off";
     953        char temp1[] = "設定温度:+00℃";
     954        char temp2[] = "測定温度:+00.0℃";
     955        char mode[] = "運転モード:自動  ";
     956        char *mode_texts[] = { "その他", "自動  ", "冷房  ", "暖房  ", "除湿  ", "送風  " };
     957        char *btn_texts[] = { "none  ", "down  ", "left  ", "select", "up    ", "right " };
    965958        int temp;
    966959
    967         switch(main_led_state){
    968         case main_led_state_idle:
    969                 /* 7segに' 'を表示 */
    970                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    971                 main_led_timer = TMO_FEVR;
    972                 return;
    973         case main_led_state_on_o:
    974                 /* 7segに'o'を表示 */
    975                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[0]);
    976                 main_led_state = main_led_state_on_n;
    977                 break;
    978         case main_led_state_on_n:
    979                 /* 7segに'n'を表示 */
    980                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[1]);
    981                 main_led_state = main_led_state_space1;
    982                 break;
    983         case main_led_state_off_o:
    984                 /* 7segに'o'を表示 */
    985                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[0]);
    986                 main_led_state = main_led_state_off_f1;
    987                 break;
    988         case main_led_state_off_f1:
    989                 /* 7segに'f'を表示 */
    990                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[2]);
    991                 main_led_state = main_led_state_off_f2;
    992                 break;
    993         case main_led_state_off_f2:
    994                 /* 7segに'f'を表示 */
    995                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[2]);
    996                 main_led_state = main_led_state_space1;
    997                 break;
    998         case main_led_state_space1:
    999                 /* 7segに' 'を表示 */
    1000                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    1001                 main_led_state = main_led_state_templ_10;
    1002                 break;
    1003         case main_led_state_templ_10:
     960        switch (main_lcd_state) {
     961        case 0:
     962                if (home_air_conditioner_data.property80 == 0x30) {
     963                        power[9] = 'o';
     964                        power[10] = 'n';
     965                        power[11] = ' ';
     966                }
     967                else {
     968                        power[9] = 'o';
     969                        power[10] = 'f';
     970                        power[11] = 'f';
     971                }
     972                lcd_drawString(&lcd, &power[9], X_LINE_HALF_TO_PIX(&lcd, 6), Y_ROW_TO_PIX(&lcd, main_lcd_state + 1), WHITE, BLACK);
     973                main_lcd_state++;
     974                break;
     975        case 1:
     976                temp1[15] = (home_air_conditioner_data.propertyB3 >= 0) ? ' ' : '-';
    1004977                temp = (home_air_conditioner_data.propertyB3 / 10) % 10;
    1005                 if(temp < 0)
     978                if (temp < 0)
    1006979                        temp = -temp;
    1007                 /* 7segに温度設定10の位を表示 */
    1008                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp]);
    1009                 main_led_state = main_led_state_templ_1;
    1010                 break;
    1011         case main_led_state_templ_1:
     980                temp1[16] = '0' + temp;
    1012981                temp = (home_air_conditioner_data.propertyB3 / 1) % 10;
    1013                 if(temp < 0)
     982                if (temp < 0)
    1014983                        temp = -temp;
    1015                 /* 7segに温度設定1の位を表示 */
    1016                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp] & (~0x80));
    1017                 main_led_state = main_led_state_space2;
    1018                 break;
    1019         case main_led_state_space2:
    1020                 /* 7segに' 'を表示 */
    1021                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    1022                 main_led_state = main_led_state_ave_templ_10;
    1023                 break;
    1024         case main_led_state_ave_templ_10:
     984                temp1[17] = '0' + temp;
     985                lcd_drawString(&lcd, &temp1[15], X_LINE_HALF_TO_PIX(&lcd, 10), Y_ROW_TO_PIX(&lcd, main_lcd_state + 1), WHITE, BLACK);
     986                main_lcd_state++;
     987                break;
     988        case 2:
     989                temp2[15] = (main_ave_templ >= 0) ? ' ' : '-';
    1025990                temp = (main_ave_templ / 100) % 10;
    1026                 if(temp < 0)
     991                if (temp < 0)
    1027992                        temp = -temp;
    1028                 /* 7segに温度計測値10の位を表示 */
    1029                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp]);
    1030                 main_led_state = main_led_state_ave_templ_1;
    1031                 break;
    1032         case main_led_state_ave_templ_1:
     993                temp2[16] = '0' + temp;
    1033994                temp = (main_ave_templ / 10) % 10;
    1034                 if(temp < 0)
     995                if (temp < 0)
    1035996                        temp = -temp;
    1036                 /* 7segに温度計測値1の位を表示 */
    1037                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp] & (~0x80));
    1038                 main_led_state = main_led_state_space3;
    1039                 break;
    1040         case main_led_state_space3:
    1041                 /* 7segに' 'を表示 */
    1042                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    1043                 main_led_state = main_led_state_mode;
    1044                 break;
    1045         case main_led_state_mode:
     997                temp2[17] = '0' + temp;
     998                temp = (main_ave_templ / 1) % 10;
     999                if (temp < 0)
     1000                        temp = -temp;
     1001                temp2[19] = '0' + temp;
     1002                lcd_drawString(&lcd, &temp2[15], X_LINE_HALF_TO_PIX(&lcd, 10), Y_ROW_TO_PIX(&lcd, main_lcd_state + 1), WHITE, BLACK);
     1003                main_lcd_state++;
     1004                break;
     1005        case 3:
    10461006                temp = home_air_conditioner_data.propertyB0 - 0x40;
    1047                 /* 7segに運転モードを表示 */
    1048                 sil_wrb_mem((uint8_t *)0x0008C02D, led_abcdef[temp]);
    1049                 main_led_state = main_led_state_space4;
    1050                 break;
    1051         case main_led_state_space4:
    1052                 if(home_air_conditioner_data.property80 == 0x30)
    1053                         /* 7segに'.'を表示 */
    1054                         sil_wrb_mem((uint8_t *)0x0008C02D, 0x7F);
    1055                 else
    1056                         /* 7segに' 'を表示 */
    1057                         sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    1058 
    1059                 if(main_led_update){
    1060                         main_led_update = false;
    1061 
    1062                         if(home_air_conditioner_data.property80 == 0x30)
    1063                                 main_led_state = main_led_state_on_o;
    1064                         else
    1065                                 main_led_state = main_led_state_off_o;
    1066                 }
    1067                 else{
    1068                         main_led_state = main_led_state_idle;
    1069                         main_led_timer = TMO_FEVR;
    1070                         return;
    1071                 }
     1007                lcd_drawString(&lcd, mode_texts[temp], X_LINE_HALF_TO_PIX(&lcd, 12), Y_ROW_TO_PIX(&lcd, main_lcd_state + 1), WHITE, BLACK);
     1008                main_lcd_state++;
     1009                break;
     1010        case 4:
     1011        case 5:
     1012        case 6:
     1013                main_lcd_state++;
     1014                break;
     1015        case 9:
     1016                lcd_display(&lcd);
     1017                main_lcd_state = 0;
     1018                break;
     1019        case 10:
     1020                lcd_drawString(&lcd, "エアコン", X_LINE_TO_PIX(&lcd, 6), Y_ROW_TO_PIX(&lcd, 0), WHITE, BLACK);
     1021                lcd_drawString(&lcd, power, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 0 + 1), WHITE, BLACK);
     1022                lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 1 + 1), WHITE, BLACK);
     1023                lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 2 + 1), WHITE, BLACK);
     1024                lcd_drawString(&lcd, mode, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 3 + 1), WHITE, BLACK);
     1025                lcd_display(&lcd);
     1026                main_lcd_state = 0;
    10721027                break;
    10731028        default:
    1074                 /* 7segに' 'を表示 */
    1075                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    1076                 main_led_state = main_led_state_idle;
    1077                 main_led_timer = TMO_FEVR;
    1078                 return;
    1079         }
    1080 
    1081         main_led_timer = 500 * 1000;
     1029                main_lcd_state++;
     1030                break;
     1031        }
     1032
     1033        /* 100ms後にLCD表示を更新 */
     1034        main_lcd_timer = 100 * 1000;
    10821035}
    10831036
     
    10941047
    10951048        /* 押されて戻った時に処理する */
    1096         if(push)
     1049        if (push)
    10971050                return;
    10981051
    10991052        /* 設定温度 */
    1100         if(main_templ > 0)
     1053        if (main_templ > 0)
    11011054                main_templ--;   /* - 1℃ */
    11021055
     
    11051058        /* プロパティ設定電文作成 */
    11061059        ret = ecn_esv_seti(&esv, HOME_AIR_CONDITIONER_EOBJ, 0xB3, 1, p_edt);
    1107         if(ret != E_OK){
     1060        if (ret != E_OK) {
    11081061                syslog(LOG_ERROR, "ecn_esv_seti");
    11091062                return;
     
    11111064
    11121065        /* 電文送信 */
    1113         ecn_snd_esv(esv);
    1114         if(ret != E_OK){
     1066        ret = ecn_snd_esv(esv);
     1067        if (ret != E_OK) {
    11151068                syslog(LOG_ERROR, "ecn_snd_esv");
    11161069        }
     
    11271080
    11281081        /* 押されて戻った時に処理する */
    1129         if(push)
     1082        if (push)
    11301083                return;
    11311084
    11321085        /* 設定温度 */
    1133         if(main_templ < 50)
     1086        if (main_templ < 50)
    11341087                main_templ++;   /* + 1.0℃ */
    11351088
     
    11381091        /* プロパティ設定電文作成 */
    11391092        ret = ecn_esv_seti(&esv, HOME_AIR_CONDITIONER_EOBJ, 0xB3, 1, p_edt);
    1140         if(ret != E_OK){
     1093        if (ret != E_OK) {
    11411094                syslog(LOG_ERROR, "ecn_esv_seti");
    11421095                return;
     
    11441097
    11451098        /* 電文送信 */
    1146         ecn_snd_esv(esv);
    1147         if(ret != E_OK){
     1099        ret = ecn_snd_esv(esv);
     1100        if (ret != E_OK) {
    11481101                syslog(LOG_ERROR, "ecn_snd_esv");
    11491102        }
     
    11521105static void main_rly_onoff(bool_t onoff)
    11531106{
    1154         if(onoff){
     1107        if (onoff) {
    11551108                /* リレー出力をON */
    11561109                sil_wrb_mem((uint8_t *)0x0008C022, sil_reb_mem((uint8_t *)0x0008C022) | 0x20);
    11571110        }
    1158         else{
     1111        else {
    11591112                /* リレー出力をOFF */
    11601113                sil_wrb_mem((uint8_t *)0x0008C022, sil_reb_mem((uint8_t *)0x0008C022) & ~0x20);
     
    11821135static void main_rly_ontimer()
    11831136{
    1184         switch(main_rly_state)
    1185         {
     1137        switch (main_rly_state) {
    11861138        case main_rly_state_off:
    11871139                main_rly_timer = TMO_FEVR;
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/src/main.c

    r359 r364  
    7979
    8080ID ws_api_mailboxid = MAIN_DATAQUEUE;
     81#ifndef NOUSE_MPF_NET_BUF
    8182ID ws_mempoolid = MPF_NET_BUF_256;
     83#endif
    8284
    8385#ifdef IF_ETHER_BTUSB
     
    111113static void main_timeout();
    112114
     115extern int ntshell_exit;
     116
    113117int uart_read(char *buf, int cnt, void *extobj)
    114118{
    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;
    116153}
    117154
     
    119156{
    120157        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);
    136158}
    137159
     
    150172        main_initialize();
    151173
    152         ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);
     174        ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj);
    153175        ntshell_set_prompt(&ntshell, "NTShell>");
    154176        ntshell_execute(&ntshell);
     
    168190        ER ret;
    169191
    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);
    171198
    172199        main_obj.timer = TMO_FEVR;
  • asp3_tinet_ecnl_rx/trunk/app4_aircon/src/main.cfg

    r342 r364  
    5454INCLUDE("tinet/tinet_asp.cfg");
    5555INCLUDE("tinet_main.cfg");
    56 INCLUDE("netinet/ip_igmp.cfg");
    5756
    5857/* DHCP クライアント */
     
    7776INCLUDE("ffarch.cfg");
    7877
     78/* mbed */
     79INCLUDE("mbed_api.cfg");
     80
    7981#ifdef IF_ETHER_BTUSB
    8082INCLUDE("usb_hbth.cfg");
  • asp3_tinet_ecnl_rx/trunk/app5_temp_sensor/.cproject

    r345 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1780467547" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1563250286" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    39                                                         <builder buildPath="${workspace_loc:/app5_temp_sensor}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1575069720" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     39                                                        <builder buildPath="${workspace_loc:/app5_temp_sensor}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1575069720" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    4040                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.208699470" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    4141                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1089825677" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    9191                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    9292                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    93                                 <option id="toolchain.version" value="4.8.4.201703"/>
     93                                <option id="toolchain.version" value="4.8.4.201803"/>
    9494                        </storageModule>
    9595                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    106106                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.881482763" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    107107                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.391802059" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    108                                                         <builder buildPath="${workspace_loc:/app5_temp_sensor}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.224601891" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     108                                                        <builder buildPath="${workspace_loc:/app5_temp_sensor}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.224601891" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    109109                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.847507658" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    110110                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.371365316" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    160160                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    161161                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    162                                 <option id="toolchain.version" value="4.8.4.201703"/>
     162                                <option id="toolchain.version" value="4.8.4.201803"/>
    163163                        </storageModule>
    164164                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    175175                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.751823232" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    176176                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.381079413" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    177                                                         <builder buildPath="${workspace_loc:/app5_temp_sensor}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1878313362" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     177                                                        <builder buildPath="${workspace_loc:/app5_temp_sensor}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1878313362" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    178178                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.1422598921" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    179179                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1459601745" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    224224        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    225225        <storageModule moduleId="refreshScope" versionNumber="2">
     226                <configuration configurationName="DebugEther"/>
     227                <configuration configurationName="DebugCitrus"/>
    226228                <configuration configurationName="Debug">
    227229                        <resource resourceType="PROJECT" workspacePath="/app5_temp_sensor"/>
     
    231233                </configuration>
    232234        </storageModule>
     235        <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
    233236</cproject>
  • asp3_tinet_ecnl_rx/trunk/app5_temp_sensor/Debug/Makefile

    r342 r364  
    155155
    156156#
     157#  gdicサービスの定義
     158#
     159
     160include $(SRCDIR)/gdic/adafruit_ssd1306/Makefile.config
     161
     162#
    157163#  共通コンパイルオプションの定義
    158164#
     
    167173        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168174endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     175CDEFS := $(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
    170176INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171177        -I$(SRCDIR)/../btstack/include \
     
    175181        -I$(SRCDIR)/../usbhost/src \
    176182        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     183LDFLAGS := $(LDFLAGS) -L.
    178184LIBS := $(LIBS) $(CXXLIBS)
    179185CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    185191APPLDIRS := $(APPLDIRS) ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src
    186192APPL_COBJS := $(APPL_COBJS) mbed_api.o netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o mmc_rspi.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
     193APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
     194APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     195APPL_CFLAGS := $(APPL_CFLAGS) -DADAFRUIT_SSD1306 -DSHNM12_FONT
    187196
    188197#
     
    209218endif
    210219
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     220ifdef TINETDIR
     221        #
     222        #  ネットワークサービスの定義
     223        #
     224        NO_USE_TINET_LIBRARY = true
     225
     226        #  ネットワークインタフェースの選択、何れか一つ選択する。
     227        NET_IF = ether
     228
     229        #  イーサネット・ディバイスドライバの選択
     230        NET_DEV = if_btusb
     231
     232        #  ネットワーク層の選択
     233        #SUPPORT_INET6 = true
     234        SUPPORT_INET4 = true
     235
     236        #  API に組込む機能の選択
     237        #API_CFG_IP4MAPPED_ADDR = true
     238
     239        #  トランスポート層の選択
     240        SUPPORT_TCP = true
     241        SUPPORT_UDP = true
     242
     243        # IGMPを有効に設定
     244        SUPPORT_IGMP = true
     245
     246        #
     247        #  ネットワークサービスの Makefile のインクルード
     248        #
     249        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     250endif
    241251
    242252#
     
    258268all: tecs | $(DEPDIR)
    259269#       @$(MAKE) check
    260         @$(MAKE) check $(OBJNAME).bin
     270#       @$(MAKE) check $(OBJNAME).bin
    261271#       @$(MAKE) check $(OBJNAME).srec
     272        @$(MAKE) check $(OBJNAME).mot
    262273else
    263274#all: check
    264 all: check $(OBJNAME).bin
     275#all: check $(OBJNAME).bin
    265276#all: check $(OBJNAME).srec
     277all: check $(OBJNAME).mot
    266278endif
    267279
     
    271283#  コンフィギュレータに関する定義
    272284#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     285ifndef TINETDIR
     286  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     287  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     288                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     289else
     290  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     291  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275292                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276293                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278295                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279296                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     297endif
    280298CFG_ASMOBJS := $(CFG_ASMOBJS)
    281299CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423441
    424442#
     443#  並列makeのための依存関係の定義
     444#
     445$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     446$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     447                                                                                                                | offset.timestamp
     448
     449#
    425450#  特別な依存関係の定義
    426451#
     
    431456#
    432457$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     458        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434459                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435460                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    460485$(OBJNAME).srec: $(OBJFILE)
    461486        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     487
     488$(OBJNAME).mot: $(OBJFILE)
     489        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    462490
    463491#
  • asp3_tinet_ecnl_rx/trunk/app5_temp_sensor/DebugCitrus/Makefile

    r342 r364  
    155155
    156156#
     157#  gdicサービスの定義
     158#
     159
     160include $(SRCDIR)/gdic/adafruit_ssd1306/Makefile.config
     161
     162#
    157163#  共通コンパイルオプションの定義
    158164#
     
    167173        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168174endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     175CDEFS := $(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
    170176INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171177        -I$(SRCDIR)/../btstack/include \
     
    175181        -I$(SRCDIR)/../usbhost/src \
    176182        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     183LDFLAGS := $(LDFLAGS) -L.
    178184LIBS := $(LIBS) $(CXXLIBS)
    179185CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    185191APPLDIRS := $(APPLDIRS) ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src
    186192APPL_COBJS := $(APPL_COBJS) mbed_api.o netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o mmc_rspi.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
     193APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
     194APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     195APPL_CFLAGS := $(APPL_CFLAGS) -DADAFRUIT_SSD1306 -DSHNM12_FONT
    187196
    188197#
     
    209218endif
    210219
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     220ifdef TINETDIR
     221        #
     222        #  ネットワークサービスの定義
     223        #
     224        NO_USE_TINET_LIBRARY = true
     225
     226        #  ネットワークインタフェースの選択、何れか一つ選択する。
     227        NET_IF = ether
     228
     229        #  イーサネット・ディバイスドライバの選択
     230        NET_DEV = if_btusb
     231
     232        #  ネットワーク層の選択
     233        #SUPPORT_INET6 = true
     234        SUPPORT_INET4 = true
     235
     236        #  API に組込む機能の選択
     237        #API_CFG_IP4MAPPED_ADDR = true
     238
     239        #  トランスポート層の選択
     240        SUPPORT_TCP = true
     241        SUPPORT_UDP = true
     242
     243        # IGMPを有効に設定
     244        SUPPORT_IGMP = true
     245
     246        #
     247        #  ネットワークサービスの Makefile のインクルード
     248        #
     249        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     250endif
    241251
    242252#
     
    258268all: tecs | $(DEPDIR)
    259269#       @$(MAKE) check
    260         @$(MAKE) check $(OBJNAME).bin
     270#       @$(MAKE) check $(OBJNAME).bin
    261271#       @$(MAKE) check $(OBJNAME).srec
     272        @$(MAKE) check $(OBJNAME).mot
    262273else
    263274#all: check
    264 all: check $(OBJNAME).bin
     275#all: check $(OBJNAME).bin
    265276#all: check $(OBJNAME).srec
     277all: check $(OBJNAME).mot
    266278endif
    267279
     
    271283#  コンフィギュレータに関する定義
    272284#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     285ifndef TINETDIR
     286  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     287  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     288                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     289else
     290  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     291  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275292                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276293                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278295                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279296                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     297endif
    280298CFG_ASMOBJS := $(CFG_ASMOBJS)
    281299CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423441
    424442#
     443#  並列makeのための依存関係の定義
     444#
     445$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     446$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     447                                                                                                                | offset.timestamp
     448
     449#
    425450#  特別な依存関係の定義
    426451#
     
    431456#
    432457$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     458        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434459                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435460                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    460485$(OBJNAME).srec: $(OBJFILE)
    461486        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     487
     488$(OBJNAME).mot: $(OBJFILE)
     489        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    462490
    463491#
  • asp3_tinet_ecnl_rx/trunk/app5_temp_sensor/DebugEther/Makefile

    r342 r364  
    153153
    154154#
     155#  gdicサービスの定義
     156#
     157
     158include $(SRCDIR)/gdic/adafruit_ssd1306/Makefile.config
     159
     160#
    155161#  共通コンパイルオプションの定義
    156162#
     
    165171        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    166172endif
    167 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     173CDEFS := $(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
    168174INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    169175        -I$(SRCDIR)/../btstack/include \
     
    173179        -I$(SRCDIR)/../usbhost/src \
    174180        $(INCLUDES)
    175 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     181LDFLAGS := $(LDFLAGS) -L.
    176182LIBS := $(LIBS) $(CXXLIBS)
    177183CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    183189APPLDIRS := $(APPLDIRS) ../../ntshell/tlsf ../../ntshell/fatfs ../../ntshell/ntshell ../../ntshell/ntshell/core ../../ntshell/ntshell/util ../../ntshell/src
    184190APPL_COBJS := $(APPL_COBJS) mbed_api.o netcmd.o fdtable.o io_stub.o socket_stub.o ffarch.o diskio.o ff.o mmc_rspi.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
     191APPLDIRS := $(APPLDIRS) ../../ntshell/lcd
     192APPL_COBJS := $(APPL_COBJS) draw_font.o shnm12_font.o
     193APPL_CFLAGS := $(APPL_CFLAGS) -DADAFRUIT_SSD1306 -DSHNM12_FONT
    185194
    186195#
     
    207216endif
    208217
    209 
    210 #
    211 #  ネットワークサービスの定義
    212 #
    213 NO_USE_TINET_LIBRARY = true
    214 
    215 #  ネットワークインタフェースの選択、何れか一つ選択する。
    216 NET_IF = ether
    217 
    218 #  イーサネット・ディバイスドライバの選択
     218ifdef TINETDIR
     219        #
     220        #  ネットワークサービスの定義
     221        #
     222        NO_USE_TINET_LIBRARY = true
     223
     224        #  ネットワークインタフェースの選択、何れか一つ選択する。
     225        NET_IF = ether
     226
     227        #  イーサネット・ディバイスドライバの選択
    219228        NET_DEV = if_rx62n
    220229
    221 #  ネットワーク層の選択
    222 #SUPPORT_INET6 = true
    223 SUPPORT_INET4 = true
    224 
    225 #  API に組込む機能の選択
    226 #API_CFG_IP4MAPPED_ADDR = true
    227 
    228 #  トランスポート層の選択
    229 SUPPORT_TCP = true
    230 SUPPORT_UDP = true
    231 
    232 # IGMPを有効に設定
    233 SUPPORT_IGMP = true
    234 
    235 #
    236 #  ネットワークサービスの Makefile のインクルード
    237 #
    238 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     230        #  ネットワーク層の選択
     231        #SUPPORT_INET6 = true
     232        SUPPORT_INET4 = true
     233
     234        #  API に組込む機能の選択
     235        #API_CFG_IP4MAPPED_ADDR = true
     236
     237        #  トランスポート層の選択
     238        SUPPORT_TCP = true
     239        SUPPORT_UDP = true
     240
     241        # IGMPを有効に設定
     242        SUPPORT_IGMP = true
     243
     244        #
     245        #  ネットワークサービスの Makefile のインクルード
     246        #
     247        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     248endif
    239249
    240250#
     
    256266all: tecs | $(DEPDIR)
    257267#       @$(MAKE) check
    258         @$(MAKE) check $(OBJNAME).bin
     268#       @$(MAKE) check $(OBJNAME).bin
    259269#       @$(MAKE) check $(OBJNAME).srec
     270        @$(MAKE) check $(OBJNAME).mot
    260271else
    261272#all: check
    262 all: check $(OBJNAME).bin
     273#all: check $(OBJNAME).bin
    263274#all: check $(OBJNAME).srec
     275all: check $(OBJNAME).mot
    264276endif
    265277
     
    269281#  コンフィギュレータに関する定義
    270282#
    271 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    272 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     283ifndef TINETDIR
     284  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     285  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     286                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     287else
     288  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     289  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    273290                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    274291                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    276293                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    277294                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     295endif
    278296CFG_ASMOBJS := $(CFG_ASMOBJS)
    279297CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    421439
    422440#
     441#  並列makeのための依存関係の定義
     442#
     443$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     444$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     445                                                                                                                | offset.timestamp
     446
     447#
    423448#  特別な依存関係の定義
    424449#
     
    429454#
    430455$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    431         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     456        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    432457                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    433458                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    458483$(OBJNAME).srec: $(OBJFILE)
    459484        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     485
     486$(OBJNAME).mot: $(OBJFILE)
     487        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    460488
    461489#
  • asp3_tinet_ecnl_rx/trunk/app5_temp_sensor/src/echonet_main.c

    r351 r364  
    11/*
    22 *  TOPPERS ECHONET Lite Communication Middleware
    3  * 
     3 *
    44 *  Copyright (C) 2014-2018 Cores Co., Ltd. Japan
    5  * 
     5 *
    66 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    77 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2626 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    2727 *      免責すること.
    28  * 
     28 *
    2929 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3030 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3232 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3333 *  の責任を負わない.
    34  * 
     34 *
    3535 *  @(#) $Id$
    3636 */
    3737
    38 /* 
     38/*
    3939 *  サンプルプログラム(1)の本体
    4040 */
     
    5151#include "echonet_cfg.h"
    5252#include "target_kernel_impl.h"
     53#include "adafruit_ssd1306.h"
     54#include "draw_font.h"
    5355
    5456/* TODO: メーカーコードを設定 */
     
    107109
    108110        /* サイズが1以外は受け付けない */
    109         if(size != 1)
     111        if (size != 1)
    110112                return 0;
    111113
    112114        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    113115
    114         switch(*(uint8_t *)src){
     116        switch (*(uint8_t *)src) {
    115117        /* ONの場合 */
    116118        case 0x30:
     
    122124                data[1] = *(uint8_t *)src;
    123125                ret = ecn_brk_wai(data, sizeof(data));
    124                 if(ret != E_OK){
     126                if (ret != E_OK) {
    125127                        syslog(LOG_ERROR, "ecn_brk_wai");
    126128                        return 1;
     
    141143{
    142144        /* サイズが1以外は受け付けない */
    143         if(size != 1)
     145        if (size != 1)
    144146                return 0;
    145147
    146148        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    147149
    148         switch(*(uint8_t *)src){
     150        switch (*(uint8_t *)src) {
    149151        /* 異常発生ありの場合 */
    150152        case 0x41:
     
    172174
    173175        /* サイズが2以外は受け付けない */
    174         if(size != 2)
     176        if (size != 2)
    175177                return 0;
    176178
    177179        value = (((uint8_t *)src)[0] << 8) | (((uint8_t *)src)[1] & 0xFF);
    178180
    179         if((value >= -2732) && (value <= 32766)){
     181        if ((value >= -2732) && (value <= 32766)) {
    180182                eobj->propertyE0 = value;
    181183                /* メインタスクに通知 */
    182184                data[0] = 0xE0;
    183185                ret = ecn_brk_wai(data, sizeof(data));
    184                 if(ret != E_OK){
     186                if (ret != E_OK) {
    185187                        syslog(LOG_ERROR, "ecn_brk_wai");
    186188                        return 2;
     
    188190        }
    189191        /* 上記以外は受け付けない */
    190         else{
     192        else {
    191193                return 0;
    192194        }
     
    195197}
    196198
    197 /* 
     199/*
    198200 * 温度計測値取得関数
    199201 */
     
    204206
    205207        /* サイズが2以外は受け付けない */
    206         if(size != 2)
     208        if (size != 2)
    207209                return 0;
    208210
     
    236238
    237239        ret2 = get_tim(&now);
    238         if (ret2 != E_OK){
     240        if (ret2 != E_OK) {
    239241                syslog(LOG_ERROR, "get_tim");
    240242                return;
    241243        }
    242244
    243         for(;;){
     245        for (;;) {
    244246                prev = now;
    245247
     
    249251                /* 応答電文待ち */
    250252                ret = ecn_trcv_esv(&esv, timer);
    251                 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)){
     253                if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {
    252254                        syslog(LOG_ERROR, "ecn_trcv_esv");
    253255                        break;
     
    255257
    256258                ret2 = get_tim(&now);
    257                 if (ret2 != E_OK){
     259                if (ret2 != E_OK) {
    258260                        syslog(LOG_ERROR, "get_tim");
    259261                        break;
     
    270272                        /* 領域解放 */
    271273                        ret = ecn_rel_esv(esv);
    272                         if (ret != E_OK){
     274                        if (ret != E_OK) {
    273275                                syslog(LOG_ERROR, "ecn_rel_esv");
    274276                                break;
     
    279281                        /* 応答電文待ちの割り込みデータ取得 */
    280282                        ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len);
    281                         if (ret != E_OK){
     283                        if (ret != E_OK) {
    282284                                syslog(LOG_ERROR, "ecn_get_brk_dat");
    283285                                break;
     
    289291                        /* 領域解放 */
    290292                        ret = ecn_rel_esv(esv);
    291                         if (ret != E_OK){
     293                        if (ret != E_OK) {
    292294                                syslog(LOG_ERROR, "ecn_rel_esv");
    293295                                break;
     
    300302}
    301303
    302 bool_t started = false;
    303 
    304304void echonet_change_netif_link(uint8_t link_up, uint8_t up)
    305305{
     
    309309                return;
    310310
    311         if (up && !started) {
    312                 started = true;
    313 
    314                 /* ECHONETミドルウェアを起動 */
    315                 ret = ecn_sta_svc();
    316                 if (ret != E_OK)
    317                         return;
    318 
    319                 /* ECHONETミドルウェアを起動するのを待つ */
    320                 dly_tsk(100);
     311        if (up) {
     312                /* インスタンスリスト通知の送信 */
     313                ret = ecn_ntf_inl();
     314                if (ret != E_OK) {
     315                        syslog(LOG_ERROR, "ecn_ntf_inl");
     316                }
    321317        }
    322318
     
    332328}
    333329
    334 enum main_state_t{
     330enum main_state_t {
     331        main_state_start,
    335332        main_state_idle,
    336333};
    337334
    338335int main_timer = TMO_FEVR;
    339 enum main_state_t main_state = main_state_idle;
    340 
    341 enum main_led_state_t{
    342         main_led_state_idle,
    343         main_led_state_on_o,
    344         main_led_state_on_n,
    345         main_led_state_off_o,
    346         main_led_state_off_f1,
    347         main_led_state_off_f2,
    348         main_led_state_space1,
    349         main_led_state_tmpr_minus,
    350         main_led_state_tmpr_100,
    351         main_led_state_tmpr_10,
    352         main_led_state_tmpr_1,
    353         main_led_state_space2,
    354         main_led_state_humid_10,
    355         main_led_state_humid_1,
    356         main_led_state_space3,
    357 };
    358 
    359 int main_led_timer = TMO_FEVR;
    360 enum main_led_state_t main_led_state = main_led_state_idle;
    361 bool_t main_led_update;
     336enum main_state_t main_state = main_state_start;
     337
     338int main_lcd_timer = TMO_FEVR;
     339int main_lcd_state = 0;
    362340
    363341bool_t main_btn1_state;
     
    365343bool_t main_btn2_state;
    366344int main_btn2_count = 0;
     345
     346LCD_Handler_t lcd;
    367347
    368348/*
     
    387367        sil_wrb_mem((uint8_t *)0x0008C02D, 0xC0);
    388368
    389         /* 10ms後にボタン状態を確認 */
    390         main_timer = 10 * 1000;
     369        /* ECHONETミドルウェアを起動するのを待つ */
     370        main_state = main_state_start;
     371        main_timer = 1000 * 1000;
    391372
    392373        /* 12bitADC初期化 */
    393374        sil_wrh_mem((uint16_t *)S12AD_ADEXICR_ADDR, 0x0000);    /* 温度センサ出力、内部基準電圧非選択 */
    394         sil_wrh_mem((uint16_t *)S12AD_ADANS0_ADDR, 0x0001);             /* 変換ポートAN000選択、AN001~AN015非選択 */
     375        sil_wrh_mem((uint16_t *)S12AD_ADANS0_ADDR, 0x0007);             /* 変換ポートAN000選択、AN001~AN015非選択 */
    395376        sil_wrh_mem((uint16_t *)S12AD_ADANS1_ADDR, 0x0000);             /* 変換ポートAN016~AN020非選択 */
    396 
    397         if(temperature_sensor1_data.property80 == 0x30)
    398                 main_led_state = main_led_state_on_o;
    399         else
    400                 main_led_state = main_led_state_off_o;
    401         main_led_timer = 0;
    402377
    403378        /* ボタン状態読み込み */
     
    407382        main_btn2_state = (btn2 & 0x80) != 0;
    408383
     384        i2c_init(&lcd.i2c, I2C_SDA, I2C_SCL);
     385        i2c_frequency(&lcd.i2c, 100000);
     386
     387        lcd_init3(&lcd, NC);
     388
     389        lcd_begin(&lcd, SSD1306_SWITCHCAPVCC, SSD1306_I2C_ADDRESS, true);
     390
     391        lcd_clearDisplay(&lcd);
     392
     393        lcd_display(&lcd);
     394
     395        /* 1秒後にLCD表示を更新 */
     396        main_lcd_state = 10;
     397        main_lcd_timer = 1000 * 1000;
     398
     399        /* メインタスクを起動 */
    409400        ER ret = act_tsk(MAIN_TASK);
    410401        if (ret != E_OK) {
     
    420411        int result = main_timer;
    421412
    422         if((result == TMO_FEVR)
    423                 || ((main_led_timer != TMO_FEVR) && (main_led_timer < result))){
    424                 result = main_led_timer;
     413        if ((result == TMO_FEVR)
     414                || ((main_lcd_timer != TMO_FEVR) && (main_lcd_timer < result))) {
     415                result = main_lcd_timer;
    425416        }
    426417
     
    433424static void main_progress(int interval)
    434425{
    435         if(main_timer != TMO_FEVR){
     426        if (main_timer != TMO_FEVR) {
    436427                main_timer -= interval;
    437                 if(main_timer < 0){
     428                if (main_timer < 0) {
    438429                        main_timer = 0;
    439430                }
    440431        }
    441432
    442         if(main_led_timer != TMO_FEVR){
    443                 main_led_timer -= interval;
    444                 if(main_led_timer < 0){
    445                         main_led_timer = 0;
     433        if (main_lcd_timer != TMO_FEVR) {
     434                main_lcd_timer -= interval;
     435                if (main_lcd_timer < 0) {
     436                        main_lcd_timer = 0;
    446437                }
    447438        }
     
    463454
    464455        ret = ecn_itr_ini(&enm, esv);
    465         if(ret != E_OK){
     456        if (ret != E_OK) {
    466457                syslog(LOG_ERROR, "ecn_itr_ini");
    467458                return;
    468459        }
    469460
    470         for(;;) {
    471                 while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
     461        for (;;) {
     462                while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
    472463                        switch (epc) {
    473464                        case 0xE0:
    474                                 if(in_get && (esv->hdr.edata.esv == ESV_SET_GET_RES)){
     465                                if (in_get && (esv->hdr.edata.esv == ESV_SET_GET_RES)) {
    475466                                        check_response(pdc, p_edt);
    476467                                }
     
    478469                        }
    479470                }
    480                 if(ret != E_BOVR){
     471                if (ret != E_BOVR) {
    481472                        syslog(LOG_ERROR, "ecn_itr_nxt");
    482473                        break;
    483474                }
    484                 if(enm.is_eof)
     475                if (enm.is_eof)
    485476                        break;
    486477
     
    501492
    502493        if ((len == 2) && (brkdat[0] == 0x80)) {
    503                 switch(brkdat[1]){
     494                switch (brkdat[1]) {
    504495                /* ONの場合 */
    505496                case 0x30:
     
    514505                }
    515506        }
    516 
    517         switch(main_led_state){
    518         case main_led_state_idle:
    519                 if(temperature_sensor1_data.property80 == 0x30)
    520                         main_led_state = main_led_state_on_o;
    521                 else
    522                         main_led_state = main_led_state_off_o;
    523                 main_led_timer = 0;
    524                 break;
    525         default:
    526                 main_led_update = true;
    527                 break;
    528         }
    529507}
    530508
    531509static void main_ontimer();
    532 static void main_led_ontimer();
     510static void main_lcd_ontimer();
    533511
    534512/*
     
    537515static void main_timeout()
    538516{
    539         if(main_timer == 0){
     517        if (main_timer == 0) {
    540518                main_ontimer();
    541519        }
    542520
    543         if(main_led_timer == 0){
    544                 main_led_ontimer();
    545         }
    546 }
    547 
    548 static int16_t main_ad_tempr = 200;
    549 static uint16_t main_ad_table[64];
    550 #define main_ad_table_count (sizeof(main_ad_table) / sizeof(main_ad_table[0]))
     521        if (main_lcd_timer == 0) {
     522                main_lcd_ontimer();
     523        }
     524}
     525
     526#define main_ad_count 3
     527#define main_ad_table_count 64
     528static int16_t main_ad_tempr[main_ad_count] = { 200, 200, 200 };
     529static uint16_t main_ad_table[main_ad_count][main_ad_table_count];
    551530static int main_ad_pos = 0;
    552 static uint32_t main_ad_avelage;
    553 static int main_count;
    554 
    555 static void main_ad_change();
     531static uint32_t main_ad_avelage[main_ad_count];
     532static int main_count[main_ad_count];
     533
     534static void main_ad_change(int no, int adv);
    556535static void main_btn1_change(bool_t push);
    557536static void main_btn2_change(bool_t push);
    558537
    559 uint8_t led_disp[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
    560 
    561538static void main_ontimer()
    562539{
     540        ER ret;
    563541        uint8_t btn1, btn2;
    564542        uint16_t ad_value;
    565543        int16_t ad_tempr;
    566         uint8_t sseg = sil_reb_mem((uint8_t *)0x0008C02A) & ~0x07;
    567 
    568         switch(main_state){
     544
     545        switch (main_state) {
     546        case main_state_start:
     547                /* ECHONETミドルウェアを起動 */
     548                ret = ecn_sta_svc();
     549                if (ret != E_OK) {
     550                        syslog(LOG_ERROR, "ecn_sta_svc");
     551                }
     552
     553                /* 10ms後にボタン状態を確認 */
     554                main_state = main_state_idle;
     555                main_timer = 10 * 1000;
     556                break;
    569557        case main_state_idle:
    570558                /* 10ms後にボタン状態を確認 */
     
    572560
    573561                /* ADCの変換結果取得 */
    574                 if((sil_reb_mem((uint8_t *)S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0){
    575                         main_ad_avelage -= main_ad_table[main_ad_pos];
    576                         ad_value = sil_reh_mem((uint16_t *)S12AD_ADDR0_ADDR);
    577                         main_ad_table[main_ad_pos] = ad_value;
    578                         main_ad_avelage += ad_value;
     562                if ((sil_reb_mem((uint8_t *)S12AD_ADCSR_ADDR) & S12AD_ADCSR_ADST_BIT) == 0) {
     563                        for (int i = 0; i < main_ad_count; i++) {
     564                                main_ad_avelage[i] -= main_ad_table[i][main_ad_pos];
     565                                ad_value = sil_reh_mem(&((uint16_t *)S12AD_ADDR0_ADDR)[i]);
     566                                main_ad_table[i][main_ad_pos] = ad_value;
     567                                main_ad_avelage[i] += ad_value;
     568                        }
    579569
    580570                        main_ad_pos++;
    581                         if(main_ad_pos >= main_ad_table_count){
     571                        if (main_ad_pos >= main_ad_table_count) {
    582572                                main_ad_pos = 0;
    583573                        }
    584574
    585                         ad_tempr = ((int16_t)(((main_ad_avelage / main_ad_table_count) >> 3) & 0x1FF)) - 100;
    586                         if(main_ad_tempr != ad_tempr){
    587                                 /* 1秒変化が続いたら */
    588                                 if(main_count < 100){
    589                                         main_count++;
     575                        for (int i = 0; i < main_ad_count; i++) {
     576                                ad_tempr = ((int16_t)(((main_ad_avelage[i] / main_ad_table_count) >> 3) & 0x1FF)) - 100;
     577                                if (main_ad_tempr[i] != ad_tempr) {
     578                                        /* 1秒変化が続いたら */
     579                                        if (main_count[i] < 100) {
     580                                                main_count[i]++;
     581                                        }
     582                                        else {
     583                                                main_count[i] = 0;
     584                                                main_ad_tempr[i] = ad_tempr;
     585
     586                                                /* ADC状態変化処理 */
     587                                                main_ad_change(i + 1, ad_tempr);
     588                                        }
    590589                                }
    591                                 else{
    592                                         main_ad_tempr = ad_tempr;
    593 
    594                                         /* ADC状態変化処理 */
    595                                         main_ad_change();
     590                                else {
     591                                        main_count[i] = 0;
    596592                                }
    597                         }
    598                         else{
    599                                 main_count = 0;
    600                         }
    601 
    602                         /* LEDに温度計測値を表示 */
    603                         sil_wrb_mem((uint8_t *)0x0008C02A, sseg | led_disp[(main_ad_avelage / main_ad_table_count) >> 9]);
    604 
    605                         /* 変換開始(シングルスキャンモード) */
    606                         sil_wrb_mem((uint8_t *)S12AD_ADCSR_ADDR, S12AD_ADCSR_ADST_BIT);
     593
     594                                /* 変換開始(シングルスキャンモード) */
     595                                sil_wrb_mem((uint8_t *)S12AD_ADCSR_ADDR, S12AD_ADCSR_ADST_BIT);
     596                        }
    607597                }
    608598
     
    612602
    613603                /* ボタン1の処理 */
    614                 if(((btn1 & 0x20) != 0) && !main_btn1_state){
     604                if (((btn1 & 0x20) != 0) && !main_btn1_state) {
    615605                        main_btn1_count++;
    616                         if(main_btn1_count > 10){
     606                        if (main_btn1_count > 10) {
    617607                                main_btn1_count = 0;
    618608                                main_btn1_state = true;
     
    621611                        }
    622612                }
    623                 else if(((btn1 & 0x20) == 0) && main_btn1_state){
     613                else if (((btn1 & 0x20) == 0) && main_btn1_state) {
    624614                        main_btn1_count++;
    625                         if(main_btn1_count > 10){
     615                        if (main_btn1_count > 10) {
    626616                                main_btn1_count = 0;
    627617                                main_btn1_state = false;
     
    632622
    633623                /* ボタン2の処理 */
    634                 if(((btn2 & 0x80) != 0) && !main_btn2_state){
     624                if (((btn2 & 0x80) != 0) && !main_btn2_state) {
    635625                        main_btn2_count++;
    636                         if(main_btn2_count > 10){
     626                        if (main_btn2_count > 10) {
    637627                                main_btn2_count = 0;
    638628                                main_btn2_state = true;
     
    641631                        }
    642632                }
    643                 else if(((btn2 & 0x80) == 0) && main_btn2_state){
     633                else if (((btn2 & 0x80) == 0) && main_btn2_state) {
    644634                        main_btn2_count++;
    645                         if(main_btn2_count > 10){
     635                        if (main_btn2_count > 10) {
    646636                                main_btn2_count = 0;
    647637                                main_btn2_state = false;
     
    654644}
    655645
    656 uint8_t led_num[] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 };
    657 uint8_t led_onf[] = { 0xA3, 0xAB, 0x8E };
    658 
    659 static void main_led_ontimer()
     646static char temp1[] = "温度1:+000.0℃";
     647static char temp2[] = "温度2:+000.0℃";
     648static char humid[] = "湿度 :+000.0%";
     649
     650static void main_lcd_ontimer()
    660651{
    661652        int temp;
    662653
    663         switch(main_led_state){
    664         case main_led_state_idle:
    665                 /* 7segに' 'を表示 */
    666                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    667                 main_led_timer = TMO_FEVR;
    668                 return;
    669         case main_led_state_on_o:
    670                 /* 7segに'o'を表示 */
    671                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[0]);
    672                 main_led_state = main_led_state_on_n;
    673                 break;
    674         case main_led_state_on_n:
    675                 /* 7segに'n'を表示 */
    676                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[1]);
    677                 main_led_state = main_led_state_space1;
    678                 break;
    679         case main_led_state_off_o:
    680                 /* 7segに'o'を表示 */
    681                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[0]);
    682                 main_led_state = main_led_state_off_f1;
    683                 break;
    684         case main_led_state_off_f1:
    685                 /* 7segに'f'を表示 */
    686                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[2]);
    687                 main_led_state = main_led_state_off_f2;
    688                 break;
    689         case main_led_state_off_f2:
    690                 /* 7segに'f'を表示 */
    691                 sil_wrb_mem((uint8_t *)0x0008C02D, led_onf[2]);
    692                 main_led_state = main_led_state_space1;
    693                 break;
    694         case main_led_state_space1:
    695                 /* 7segに' 'を表示 */
    696                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    697                 if(temperature_sensor1_data.propertyE0 >= 0){
    698                         main_led_state = main_led_state_tmpr_10;
    699                 }
    700                 else{
    701                         main_led_state = main_led_state_tmpr_minus;
    702                 }
    703                 break;
    704         case main_led_state_tmpr_minus:
    705                 /* 7segに'-'を表示 */
    706                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xBF);
    707                 if((temperature_sensor1_data.propertyE0 >= 100)
    708                         || (temperature_sensor1_data.propertyE0 <= -100))
    709                         main_led_state = main_led_state_tmpr_100;
    710                 else
    711                         main_led_state = main_led_state_tmpr_10;
    712                 break;
    713         case main_led_state_tmpr_100:
     654        switch (main_lcd_state) {
     655        case 0:
     656                temp1[10] = (temperature_sensor1_data.propertyE0 >= 0) ? ' ' : '-';
    714657                temp = (temperature_sensor1_data.propertyE0 / 1000) % 10;
    715                 if(temp < 0)
     658                if (temp < 0)
    716659                        temp = -temp;
    717                 /* 7segに温度計測値10の位を表示 */
    718                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp]);
    719                 main_led_state = main_led_state_tmpr_10;
    720                 break;
    721         case main_led_state_tmpr_10:
     660                temp1[11] = '0' + temp;
    722661                temp = (temperature_sensor1_data.propertyE0 / 100) % 10;
    723                 if(temp < 0)
     662                if (temp < 0)
    724663                        temp = -temp;
    725                 /* 7segに温度計測値10の位を表示 */
    726                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp]);
    727                 main_led_state = main_led_state_tmpr_1;
    728                 break;
    729         case main_led_state_tmpr_1:
     664                temp1[12] = '0' + temp;
    730665                temp = (temperature_sensor1_data.propertyE0 / 10) % 10;
    731                 if(temp < 0)
     666                if (temp < 0)
    732667                        temp = -temp;
    733                 /* 7segに温度計測値10の位を表示 */
    734                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp] & (~0x80));
    735                 main_led_state = main_led_state_space2;
    736                 break;
    737         case main_led_state_space2:
    738                 /* 7segに' 'を表示 */
    739                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    740                 main_led_state = main_led_state_humid_10;
    741                 break;
    742         case main_led_state_humid_10:
    743                 temp = humidity_sensor_data.propertyE0 / 10;
    744                 /* 7segに湿度計測値10の位を表示 */
    745                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp]);
    746                 main_led_state = main_led_state_humid_1;
    747                 break;
    748         case main_led_state_humid_1:
    749                 temp = humidity_sensor_data.propertyE0 % 10;
    750                 /* 7segに湿度計測値10の位を表示 */
    751                 sil_wrb_mem((uint8_t *)0x0008C02D, led_num[temp] & (~0x80));
    752                 main_led_state = main_led_state_space3;
    753                 break;
    754         case main_led_state_space3:
    755                 /* 7segに' 'を表示 */
    756                 if(temperature_sensor1_data.property80 == 0x30)
    757                         /* 7segに'.'を表示 */
    758                         sil_wrb_mem((uint8_t *)0x0008C02D, 0x7F);
    759                 else
    760                         /* 7segに' 'を表示 */
    761                         sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    762 
    763                 if(main_led_update){
    764                         main_led_update = false;
    765 
    766                         if(temperature_sensor1_data.property80 == 0x30)
    767                                 main_led_state = main_led_state_on_o;
    768                         else
    769                                 main_led_state = main_led_state_off_o;
    770                 }
    771                 else{
    772                         main_led_state = main_led_state_idle;
    773                         main_led_timer = TMO_FEVR;
    774                         return;
    775                 }
     668                temp1[13] = '0' + temp;
     669                temp = (temperature_sensor1_data.propertyE0 / 1) % 10;
     670                if (temp < 0)
     671                        temp = -temp;
     672                temp1[15] = '0' + temp;
     673                lcd_drawString(&lcd, &temp1[10], X_LINE_HALF_TO_PIX(&lcd, 7), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), WHITE, BLACK);
     674                main_lcd_state++;
     675                break;
     676        case 1:
     677                temp2[10] = (temperature_sensor2_data.propertyE0 >= 0) ? ' ' : '-';
     678                temp = (temperature_sensor2_data.propertyE0 / 1000) % 10;
     679                if (temp < 0)
     680                        temp = -temp;
     681                temp2[11] = '0' + temp;
     682                temp = (temperature_sensor2_data.propertyE0 / 100) % 10;
     683                if (temp < 0)
     684                        temp = -temp;
     685                temp2[12] = '0' + temp;
     686                temp = (temperature_sensor2_data.propertyE0 / 10) % 10;
     687                if (temp < 0)
     688                        temp = -temp;
     689                temp2[13] = '0' + temp;
     690                temp = (temperature_sensor2_data.propertyE0 / 1) % 10;
     691                if (temp < 0)
     692                        temp = -temp;
     693                temp2[15] = '0' + temp;
     694                lcd_drawString(&lcd, &temp2[10], X_LINE_HALF_TO_PIX(&lcd, 7), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), WHITE, BLACK);
     695                main_lcd_state++;
     696                break;
     697        case 2:
     698                humid[10] = ' ';
     699                humid[11] = ' ';
     700                temp = (humidity_sensor_data.propertyE0 / 100) % 10;
     701                humid[12] = '0' + temp;
     702                temp = (humidity_sensor_data.propertyE0 / 10) % 10;
     703                humid[13] = '0' + temp;
     704                temp = (humidity_sensor_data.propertyE0 / 1) % 10;
     705                humid[15] = '0' + temp;
     706                lcd_drawString(&lcd, &humid[10], X_LINE_HALF_TO_PIX(&lcd, 7), Y_ROW_TO_PIX(&lcd, main_lcd_state + 2), WHITE, BLACK);
     707                main_lcd_state++;
     708                break;
     709        case 3:
     710        case 4:
     711        case 5:
     712        case 6:
     713        case 7:
     714        case 8:
     715                main_lcd_state++;
     716                break;
     717        case 9:
     718                lcd_display(&lcd);
     719                main_lcd_state = 0;
     720                break;
     721        case 10:
     722                lcd_drawString(&lcd, "温度湿度計", X_LINE_TO_PIX(&lcd, 5), Y_ROW_TO_PIX(&lcd, 0), WHITE, BLACK);
     723                lcd_drawString(&lcd, temp1, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 0 + 2), WHITE, BLACK);
     724                lcd_drawString(&lcd, temp2, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 1 + 2), WHITE, BLACK);
     725                lcd_drawString(&lcd, humid, X_LINE_TO_PIX(&lcd, 0), Y_ROW_TO_PIX(&lcd, 2 + 2), WHITE, BLACK);
     726                lcd_display(&lcd);
     727                main_lcd_state = 0;
    776728                break;
    777729        default:
    778                 /* 7segに' 'を表示 */
    779                 sil_wrb_mem((uint8_t *)0x0008C02D, 0xFF);
    780                 main_led_state = main_led_state_idle;
    781                 main_led_timer = TMO_FEVR;
    782                 return;
    783         }
    784 
    785         main_led_timer = 500 * 1000;
     730                main_lcd_state = 10;
     731                break;
     732        }
     733
     734        /* 100ms後にLCD表示を更新 */
     735        main_lcd_timer = 100 * 1000;
    786736}
    787737
     
    789739 * ADC状態変化処理
    790740 */
    791 static void main_ad_change()
     741static void main_ad_change(int no, int adv)
    792742{
    793743        ER ret;
    794744        T_EDATA *esv;
    795745        uint8_t p_edt[2];
    796 
    797         p_edt[0] = ((uint16_t)main_ad_tempr) >> 8;
    798         p_edt[1] = ((uint16_t)main_ad_tempr) & 0xFF;
     746        uint8_t eobj;
     747
     748        switch (no) {
     749        case 1:
     750                eobj = TEMP_SENSOR_01_EOBJ;
     751                break;
     752        case 2:
     753                eobj = TEMP_SENSOR_02_EOBJ;
     754                break;
     755        case 3:
     756                eobj = HUMIDITY_SENSOR_EOBJ;
     757                break;
     758        default:
     759                return;
     760        }
     761
     762        p_edt[0] = ((uint16_t)adv) >> 8;
     763        p_edt[1] = ((uint16_t)adv) & 0xFF;
    799764
    800765        /* プロパティ設定電文作成 */
    801         ret = ecn_esv_setc(&esv, TEMP_SENSOR_01_EOBJ, 0xE0, 2, p_edt);
    802         if(ret != E_OK){
     766        ret = ecn_esv_setc(&esv, eobj, 0xE0, 2, p_edt);
     767        if (ret != E_OK) {
    803768                syslog(LOG_ERROR, "ecn_esv_setc");
    804769                return;
     
    806771
    807772        /* 電文送信 */
    808         ecn_snd_esv(esv);
     773        ret = ecn_snd_esv(esv);
     774        if (ret != E_OK) {
     775                syslog(LOG_ERROR, "ecn_snd_esv");
     776        }
    809777}
    810778
     
    822790
    823791        /* 押されて戻った時に処理する */
    824         if(push)
     792        if (push)
    825793                return;
    826794
    827795        /* 温度計測値 */
    828796        main_tmpr -= 10;        /* - 1.0℃ */
    829         if(main_tmpr < -100)    /* -10.0℃までとする */
     797        if (main_tmpr < -100)   /* -10.0℃までとする */
    830798                main_tmpr = -100;
    831799
     
    835803        /* プロパティ値書き込み・読み出し要求電文作成 */
    836804        ret = ecn_esv_set_get(&esv, TEMP_SENSOR_02_EOBJ, 0xE0, 2, p_edt);
    837         if(ret != E_OK){
     805        if (ret != E_OK) {
    838806                syslog(LOG_ERROR, "ecn_esv_setc");
    839807                return;
     
    844812        /* 書き込みプロパティ追加 */
    845813        ret = ecn_add_edt(esv, 0x80, 1, p_edt);
    846         if(ret) {
     814        if (ret) {
    847815                syslog(LOG_ERROR, "ecn_add_edt");
    848816                goto error;
     
    851819        /* プロパティ値書き込み・読み出し要求電文作成:折り返し指定 */
    852820        ret = ecn_trn_set_get(esv, &trn_pos);
    853         if(ret) {
     821        if (ret) {
    854822                syslog(LOG_ERROR, "ecn_trn_set_get");
    855823                goto error;
     
    858826        /* 読み出しプロパティ追加 */
    859827        ret = ecn_add_epc(esv, 0xE0);
    860         if(ret) {
     828        if (ret) {
    861829                syslog(LOG_ERROR, "ecn_add_epc");
    862830                goto error;
     
    865833        /* プロパティ値書き込み・読み出し要求電文作成:終了指定 */
    866834        ret = ecn_end_set_get(esv, trn_pos);
    867         if(ret) {
     835        if (ret) {
    868836                syslog(LOG_ERROR, "ecn_end_set_get");
    869837                goto error;
     
    872840        /* 電文送信 */
    873841        ret = ecn_snd_esv(esv);
    874         if(ret != E_OK){
     842        if (ret != E_OK) {
    875843                syslog(LOG_ERROR, "ecn_snd_esv");
    876844        }
     
    879847        /* 領域解放 */
    880848        ret = ecn_rel_esv(esv);
    881         if (ret != E_OK){
     849        if (ret != E_OK) {
    882850                syslog(LOG_ERROR, "ecn_rel_esv");
    883851        }
     
    895863
    896864        /* 押されて戻った時に処理する */
    897         if(push)
     865        if (push)
    898866                return;
    899867
    900868        /* 温度計測値 */
    901869        main_tmpr += 10;        /* + 1.0℃ */
    902         if(main_tmpr > 400)     /* +40.0℃までとする */
     870        if (main_tmpr > 400)    /* +40.0℃までとする */
    903871                main_tmpr = 400;
    904872
     
    908876        /* プロパティ値書き込み・読み出し要求電文作成 */
    909877        ret = ecn_esv_set_get(&esv, TEMP_SENSOR_02_EOBJ, 0xE0, 2, p_edt);
    910         if(ret != E_OK){
     878        if (ret != E_OK) {
    911879                syslog(LOG_ERROR, "ecn_esv_setc");
    912880                return;
     
    917885        /* 書き込みプロパティ追加 */
    918886        ret = ecn_add_edt(esv, 0x80, 1, p_edt);
    919         if(ret) {
     887        if (ret) {
    920888                syslog(LOG_ERROR, "ecn_add_edt");
    921889                goto error;
     
    924892        /* プロパティ値書き込み・読み出し要求電文作成:折り返し指定 */
    925893        ret = ecn_trn_set_get(esv, &trn_pos);
    926         if(ret) {
     894        if (ret) {
    927895                syslog(LOG_ERROR, "ecn_trn_set_get");
    928896                goto error;
     
    931899        /* 読み出しプロパティ追加 */
    932900        ret = ecn_add_epc(esv, 0xE0);
    933         if(ret) {
     901        if (ret) {
    934902                syslog(LOG_ERROR, "ecn_add_epc");
    935903                goto error;
     
    938906        /* プロパティ値書き込み・読み出し要求電文作成:終了指定 */
    939907        ret = ecn_end_set_get(esv, trn_pos);
    940         if(ret) {
     908        if (ret) {
    941909                syslog(LOG_ERROR, "ecn_end_set_get");
    942910                goto error;
     
    945913        /* 電文送信 */
    946914        ret = ecn_snd_esv(esv);
    947         if(ret != E_OK){
     915        if (ret != E_OK) {
    948916                syslog(LOG_ERROR, "ecn_snd_esv");
    949917        }
     
    952920        /* 領域解放 */
    953921        ret = ecn_rel_esv(esv);
    954         if (ret != E_OK){
     922        if (ret != E_OK) {
    955923                syslog(LOG_ERROR, "ecn_rel_esv");
    956924        }
     
    962930static bool_t check_response(uint8_t pdc, uint8_t *p_edt)
    963931{
    964         if((pdc != 2)
     932        if ((pdc != 2)
    965933                || (p_edt[0] != ((uint16_t)main_tmpr) >> 8)
    966                 || (p_edt[1] != ((uint16_t)main_tmpr) & 0xFF))
    967         {
     934                || (p_edt[1] != ((uint16_t)main_tmpr) & 0xFF)) {
    968935                syslog(LOG_WARNING, "epc_set_get response NG");
    969936                return false;
  • asp3_tinet_ecnl_rx/trunk/app5_temp_sensor/src/main.c

    r359 r364  
    7979
    8080ID ws_api_mailboxid = MAIN_DATAQUEUE;
     81#ifndef NOUSE_MPF_NET_BUF
    8182ID ws_mempoolid = MPF_NET_BUF_256;
     83#endif
    8284
    8385#ifdef IF_ETHER_BTUSB
     
    111113static void main_timeout();
    112114
     115extern int ntshell_exit;
     116
    113117int uart_read(char *buf, int cnt, void *extobj)
    114118{
    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;
    116153}
    117154
     
    119156{
    120157        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);
    136158}
    137159
     
    150172        main_initialize();
    151173
    152         ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);
     174        ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj);
    153175        ntshell_set_prompt(&ntshell, "NTShell>");
    154176        ntshell_execute(&ntshell);
     
    168190        ER ret;
    169191
    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);
    171198
    172199        main_obj.timer = TMO_FEVR;
  • asp3_tinet_ecnl_rx/trunk/app5_temp_sensor/src/main.cfg

    r342 r364  
    5454INCLUDE("tinet/tinet_asp.cfg");
    5555INCLUDE("tinet_main.cfg");
    56 INCLUDE("netinet/ip_igmp.cfg");
    5756
    5857/* DHCP クライアント */
     
    7776INCLUDE("ffarch.cfg");
    7877
     78/* mbed */
     79INCLUDE("mbed_api.cfg");
     80
    7981#ifdef IF_ETHER_BTUSB
    8082INCLUDE("usb_hbth.cfg");
  • asp3_tinet_ecnl_rx/trunk/app6_hot_water_pot/.cproject

    r345 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1216939361" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.540335225" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    39                                                         <builder buildPath="${workspace_loc:/app6_hot_water_pot}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.439102208" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     39                                                        <builder buildPath="${workspace_loc:/app6_hot_water_pot}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.439102208" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    4040                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.1024280160" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    4141                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1144202648" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    9191                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    9292                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    93                                 <option id="toolchain.version" value="4.8.4.201703"/>
     93                                <option id="toolchain.version" value="4.8.4.201803"/>
    9494                        </storageModule>
    9595                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    106106                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1168710633" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    107107                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1876106175" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    108                                                         <builder buildPath="${workspace_loc:/app6_hot_water_pot}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.1796295428" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     108                                                        <builder buildPath="${workspace_loc:/app6_hot_water_pot}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.1796295428" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    109109                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.1665728023" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    110110                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1889854330" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    160160                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    161161                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    162                                 <option id="toolchain.version" value="4.8.4.201703"/>
     162                                <option id="toolchain.version" value="4.8.4.201803"/>
    163163                        </storageModule>
    164164                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    175175                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.927887230" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    176176                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.796976276" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    177                                                         <builder buildPath="${workspace_loc:/app6_hot_water_pot}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.505980419" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     177                                                        <builder buildPath="${workspace_loc:/app6_hot_water_pot}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.505980419" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    178178                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.1631836614" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    179179                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1777057244" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    224224        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    225225        <storageModule moduleId="refreshScope" versionNumber="2">
     226                <configuration configurationName="DebugEther"/>
     227                <configuration configurationName="DebugCitrus"/>
    226228                <configuration configurationName="Debug">
    227229                        <resource resourceType="PROJECT" workspacePath="/app6_hot_water_pot"/>
  • asp3_tinet_ecnl_rx/trunk/app6_hot_water_pot/Debug/Makefile

    r342 r364  
    167167        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168168endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     169CDEFS := $(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
    170170INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171171        -I$(SRCDIR)/../btstack/include \
     
    175175        -I$(SRCDIR)/../usbhost/src \
    176176        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     177LDFLAGS := $(LDFLAGS) -L.
    178178LIBS := $(LIBS) $(CXXLIBS)
    179179CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    209209endif
    210210
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     211ifdef TINETDIR
     212        #
     213        #  ネットワークサービスの定義
     214        #
     215        NO_USE_TINET_LIBRARY = true
     216
     217        #  ネットワークインタフェースの選択、何れか一つ選択する。
     218        NET_IF = ether
     219
     220        #  イーサネット・ディバイスドライバの選択
     221        NET_DEV = if_btusb
     222
     223        #  ネットワーク層の選択
     224        #SUPPORT_INET6 = true
     225        SUPPORT_INET4 = true
     226
     227        #  API に組込む機能の選択
     228        #API_CFG_IP4MAPPED_ADDR = true
     229
     230        #  トランスポート層の選択
     231        SUPPORT_TCP = true
     232        SUPPORT_UDP = true
     233
     234        # IGMPを有効に設定
     235        SUPPORT_IGMP = true
     236
     237        #
     238        #  ネットワークサービスの Makefile のインクルード
     239        #
     240        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     241endif
    241242
    242243#
     
    258259all: tecs | $(DEPDIR)
    259260#       @$(MAKE) check
    260         @$(MAKE) check $(OBJNAME).bin
     261#       @$(MAKE) check $(OBJNAME).bin
    261262#       @$(MAKE) check $(OBJNAME).srec
     263        @$(MAKE) check $(OBJNAME).mot
    262264else
    263265#all: check
    264 all: check $(OBJNAME).bin
     266#all: check $(OBJNAME).bin
    265267#all: check $(OBJNAME).srec
     268all: check $(OBJNAME).mot
    266269endif
    267270
     
    271274#  コンフィギュレータに関する定義
    272275#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     276ifndef TINETDIR
     277  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     278  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     279                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     280else
     281  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     282  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275283                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276284                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278286                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279287                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     288endif
    280289CFG_ASMOBJS := $(CFG_ASMOBJS)
    281290CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423432
    424433#
     434#  並列makeのための依存関係の定義
     435#
     436$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     437$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     438                                                                                                                | offset.timestamp
     439
     440#
    425441#  特別な依存関係の定義
    426442#
     
    431447#
    432448$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     449        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434450                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435451                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    460476$(OBJNAME).srec: $(OBJFILE)
    461477        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     478
     479$(OBJNAME).mot: $(OBJFILE)
     480        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    462481
    463482#
  • asp3_tinet_ecnl_rx/trunk/app6_hot_water_pot/DebugCitrus/Makefile

    r342 r364  
    167167        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168168endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     169CDEFS := $(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
    170170INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171171        -I$(SRCDIR)/../btstack/include \
     
    175175        -I$(SRCDIR)/../usbhost/src \
    176176        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     177LDFLAGS := $(LDFLAGS) -L.
    178178LIBS := $(LIBS) $(CXXLIBS)
    179179CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    209209endif
    210210
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     211ifdef TINETDIR
     212        #
     213        #  ネットワークサービスの定義
     214        #
     215        NO_USE_TINET_LIBRARY = true
     216
     217        #  ネットワークインタフェースの選択、何れか一つ選択する。
     218        NET_IF = ether
     219
     220        #  イーサネット・ディバイスドライバの選択
     221        NET_DEV = if_btusb
     222
     223        #  ネットワーク層の選択
     224        #SUPPORT_INET6 = true
     225        SUPPORT_INET4 = true
     226
     227        #  API に組込む機能の選択
     228        #API_CFG_IP4MAPPED_ADDR = true
     229
     230        #  トランスポート層の選択
     231        SUPPORT_TCP = true
     232        SUPPORT_UDP = true
     233
     234        # IGMPを有効に設定
     235        SUPPORT_IGMP = true
     236
     237        #
     238        #  ネットワークサービスの Makefile のインクルード
     239        #
     240        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     241endif
    241242
    242243#
     
    258259all: tecs | $(DEPDIR)
    259260#       @$(MAKE) check
    260         @$(MAKE) check $(OBJNAME).bin
     261#       @$(MAKE) check $(OBJNAME).bin
    261262#       @$(MAKE) check $(OBJNAME).srec
     263        @$(MAKE) check $(OBJNAME).mot
    262264else
    263265#all: check
    264 all: check $(OBJNAME).bin
     266#all: check $(OBJNAME).bin
    265267#all: check $(OBJNAME).srec
     268all: check $(OBJNAME).mot
    266269endif
    267270
     
    271274#  コンフィギュレータに関する定義
    272275#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     276ifndef TINETDIR
     277  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     278  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     279                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     280else
     281  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     282  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275283                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276284                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278286                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279287                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     288endif
    280289CFG_ASMOBJS := $(CFG_ASMOBJS)
    281290CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423432
    424433#
     434#  並列makeのための依存関係の定義
     435#
     436$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     437$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     438                                                                                                                | offset.timestamp
     439
     440#
    425441#  特別な依存関係の定義
    426442#
     
    431447#
    432448$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     449        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434450                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435451                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    460476$(OBJNAME).srec: $(OBJFILE)
    461477        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     478
     479$(OBJNAME).mot: $(OBJFILE)
     480        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    462481
    463482#
  • asp3_tinet_ecnl_rx/trunk/app6_hot_water_pot/DebugEther/Makefile

    r342 r364  
    165165        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    166166endif
    167 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     167CDEFS := $(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
    168168INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    169169        -I$(SRCDIR)/../btstack/include \
     
    173173        -I$(SRCDIR)/../usbhost/src \
    174174        $(INCLUDES)
    175 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     175LDFLAGS := $(LDFLAGS) -L.
    176176LIBS := $(LIBS) $(CXXLIBS)
    177177CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    207207endif
    208208
    209 
    210 #
    211 #  ネットワークサービスの定義
    212 #
    213 NO_USE_TINET_LIBRARY = true
    214 
    215 #  ネットワークインタフェースの選択、何れか一つ選択する。
    216 NET_IF = ether
    217 
    218 #  イーサネット・ディバイスドライバの選択
     209ifdef TINETDIR
     210        #
     211        #  ネットワークサービスの定義
     212        #
     213        NO_USE_TINET_LIBRARY = true
     214
     215        #  ネットワークインタフェースの選択、何れか一つ選択する。
     216        NET_IF = ether
     217
     218        #  イーサネット・ディバイスドライバの選択
    219219        NET_DEV = if_rx62n
    220220
    221 #  ネットワーク層の選択
    222 #SUPPORT_INET6 = true
    223 SUPPORT_INET4 = true
    224 
    225 #  API に組込む機能の選択
    226 #API_CFG_IP4MAPPED_ADDR = true
    227 
    228 #  トランスポート層の選択
    229 SUPPORT_TCP = true
    230 SUPPORT_UDP = true
    231 
    232 # IGMPを有効に設定
    233 SUPPORT_IGMP = true
    234 
    235 #
    236 #  ネットワークサービスの Makefile のインクルード
    237 #
    238 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     221        #  ネットワーク層の選択
     222        #SUPPORT_INET6 = true
     223        SUPPORT_INET4 = true
     224
     225        #  API に組込む機能の選択
     226        #API_CFG_IP4MAPPED_ADDR = true
     227
     228        #  トランスポート層の選択
     229        SUPPORT_TCP = true
     230        SUPPORT_UDP = true
     231
     232        # IGMPを有効に設定
     233        SUPPORT_IGMP = true
     234
     235        #
     236        #  ネットワークサービスの Makefile のインクルード
     237        #
     238        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     239endif
    239240
    240241#
     
    256257all: tecs | $(DEPDIR)
    257258#       @$(MAKE) check
    258         @$(MAKE) check $(OBJNAME).bin
     259#       @$(MAKE) check $(OBJNAME).bin
    259260#       @$(MAKE) check $(OBJNAME).srec
     261        @$(MAKE) check $(OBJNAME).mot
    260262else
    261263#all: check
    262 all: check $(OBJNAME).bin
     264#all: check $(OBJNAME).bin
    263265#all: check $(OBJNAME).srec
     266all: check $(OBJNAME).mot
    264267endif
    265268
     
    269272#  コンフィギュレータに関する定義
    270273#
    271 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    272 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     274ifndef TINETDIR
     275  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     276  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     277                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     278else
     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 \
    273281                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    274282                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    276284                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    277285                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     286endif
    278287CFG_ASMOBJS := $(CFG_ASMOBJS)
    279288CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    421430
    422431#
     432#  並列makeのための依存関係の定義
     433#
     434$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     435$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     436                                                                                                                | offset.timestamp
     437
     438#
    423439#  特別な依存関係の定義
    424440#
     
    429445#
    430446$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    431         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     447        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    432448                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    433449                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    458474$(OBJNAME).srec: $(OBJFILE)
    459475        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     476
     477$(OBJNAME).mot: $(OBJFILE)
     478        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    460479
    461480#
  • asp3_tinet_ecnl_rx/trunk/app6_hot_water_pot/src/echonet_main.c

    r351 r364  
    318318}
    319319
    320 bool_t started = false;
    321 
    322320void echonet_change_netif_link(uint8_t link_up, uint8_t up)
    323321{
     
    327325                return;
    328326
    329         if (up && !started) {
    330                 started = true;
    331 
    332                 /* ECHONETミドルウェアを起動 */
    333                 ret = ecn_sta_svc();
    334                 if (ret != E_OK)
    335                         return;
    336 
    337                 /* ECHONETミドルウェアを起動するのを待つ */
    338                 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                }
    339333        }
    340334
     
    342336        uint8_t data[2];
    343337        data[0] = 0x01;
    344         data[1] = up ? 0x01 : 0x02;
    345338        ret = ecn_brk_wai(data, sizeof(data));
    346339        if (ret != E_OK) {
     
    351344
    352345enum main_state_t{
     346        main_state_start,
    353347        main_state_idle,
    354348        main_state_search,
     
    357351
    358352int main_timer = TMO_FEVR;
    359 enum main_state_t main_state = main_state_idle;
     353enum main_state_t main_state = main_state_start;
    360354int main_retry;
    361355
     
    377371        sil_wrb_mem((uint8_t *)0x0008C02A, 0x7F);
    378372
    379         /* 1秒後にブザーを検索 */
    380         main_state = main_state_search;
     373        /* ECHONETミドルウェアを起動するのを待つ */
     374        main_state = main_state_start;
    381375        main_timer = 1000 * 1000;
    382376
     
    390384        main_btn2_state = (btn2 & 0x80) != 0;
    391385
     386        /* メインタスクを起動 */
    392387        ER ret = act_tsk(MAIN_TASK);
    393388        if (ret != E_OK) {
     
    557552
    558553        switch(main_state){
     554        case main_state_start:
     555                /* ECHONETミドルウェアを起動 */
     556                ret = ecn_sta_svc();
     557                if (ret != E_OK) {
     558                        syslog(LOG_ERROR, "ecn_sta_svc");
     559                }
     560
     561                /* 1秒後にブザーを検索 */
     562                main_state = main_state_search;
     563                main_timer = 1000 * 1000;
     564                break;
    559565        case main_state_idle:
    560566                syslog(LOG_ERROR, "timeout faild on main_state_idle");
  • asp3_tinet_ecnl_rx/trunk/app6_hot_water_pot/src/main.c

    r359 r364  
    7979
    8080ID ws_api_mailboxid = MAIN_DATAQUEUE;
     81#ifndef NOUSE_MPF_NET_BUF
    8182ID ws_mempoolid = MPF_NET_BUF_256;
     83#endif
    8284
    8385#ifdef IF_ETHER_BTUSB
     
    111113static void main_timeout();
    112114
     115extern int ntshell_exit;
     116
    113117int uart_read(char *buf, int cnt, void *extobj)
    114118{
    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;
    116153}
    117154
     
    119156{
    120157        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);
    136158}
    137159
     
    150172        main_initialize();
    151173
    152         ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);
     174        ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj);
    153175        ntshell_set_prompt(&ntshell, "NTShell>");
    154176        ntshell_execute(&ntshell);
     
    168190        ER ret;
    169191
    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);
    171198
    172199        main_obj.timer = TMO_FEVR;
  • asp3_tinet_ecnl_rx/trunk/app6_hot_water_pot/src/main.cfg

    r342 r364  
    5454INCLUDE("tinet/tinet_asp.cfg");
    5555INCLUDE("tinet_main.cfg");
    56 INCLUDE("netinet/ip_igmp.cfg");
    5756
    5857/* DHCP クライアント */
     
    7776INCLUDE("ffarch.cfg");
    7877
     78/* mbed */
     79INCLUDE("mbed_api.cfg");
     80
    7981#ifdef IF_ETHER_BTUSB
    8082INCLUDE("usb_hbth.cfg");
  • asp3_tinet_ecnl_rx/trunk/app7_buzzer/.cproject

    r345 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.22052017" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.809811830" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    39                                                         <builder buildPath="${workspace_loc:/app7_buzzer}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1219406240" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     39                                                        <builder buildPath="${workspace_loc:/app7_buzzer}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1219406240" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    4040                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.55394195" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    4141                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.29306339" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    9191                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    9292                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    93                                 <option id="toolchain.version" value="4.8.4.201703"/>
     93                                <option id="toolchain.version" value="4.8.4.201803"/>
    9494                        </storageModule>
    9595                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    106106                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.220056680" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    107107                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1058738126" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    108                                                         <builder buildPath="${workspace_loc:/app7_buzzer}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.819853925" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     108                                                        <builder buildPath="${workspace_loc:/app7_buzzer}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.819853925" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    109109                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.177325841" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    110110                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.316212372" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    160160                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    161161                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    162                                 <option id="toolchain.version" value="4.8.4.201703"/>
     162                                <option id="toolchain.version" value="4.8.4.201803"/>
    163163                        </storageModule>
    164164                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    175175                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1163476113" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    176176                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.425808681" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    177                                                         <builder buildPath="${workspace_loc:/app7_buzzer}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1541555009" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     177                                                        <builder buildPath="${workspace_loc:/app7_buzzer}/DebugEther" id="com.renesas.cdt.managedbuild.gcc.core.builder.1541555009" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    178178                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.646094520" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    179179                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1827999297" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    224224        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    225225        <storageModule moduleId="refreshScope" versionNumber="2">
     226                <configuration configurationName="DebugEther"/>
     227                <configuration configurationName="DebugCitrus"/>
    226228                <configuration configurationName="Debug">
    227229                        <resource resourceType="PROJECT" workspacePath="/app7_buzzer"/>
  • asp3_tinet_ecnl_rx/trunk/app7_buzzer/Debug/Makefile

    r342 r364  
    167167        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168168endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     169CDEFS := $(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
    170170INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171171        -I$(SRCDIR)/../btstack/include \
     
    175175        -I$(SRCDIR)/../usbhost/src \
    176176        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     177LDFLAGS := $(LDFLAGS) -L.
    178178LIBS := $(LIBS) $(CXXLIBS)
    179179CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    209209endif
    210210
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     211ifdef TINETDIR
     212        #
     213        #  ネットワークサービスの定義
     214        #
     215        NO_USE_TINET_LIBRARY = true
     216
     217        #  ネットワークインタフェースの選択、何れか一つ選択する。
     218        NET_IF = ether
     219
     220        #  イーサネット・ディバイスドライバの選択
     221        NET_DEV = if_btusb
     222
     223        #  ネットワーク層の選択
     224        #SUPPORT_INET6 = true
     225        SUPPORT_INET4 = true
     226
     227        #  API に組込む機能の選択
     228        #API_CFG_IP4MAPPED_ADDR = true
     229
     230        #  トランスポート層の選択
     231        SUPPORT_TCP = true
     232        SUPPORT_UDP = true
     233
     234        # IGMPを有効に設定
     235        SUPPORT_IGMP = true
     236
     237        #
     238        #  ネットワークサービスの Makefile のインクルード
     239        #
     240        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     241endif
    241242
    242243#
     
    258259all: tecs | $(DEPDIR)
    259260#       @$(MAKE) check
    260         @$(MAKE) check $(OBJNAME).bin
     261#       @$(MAKE) check $(OBJNAME).bin
    261262#       @$(MAKE) check $(OBJNAME).srec
     263        @$(MAKE) check $(OBJNAME).mot
    262264else
    263265#all: check
    264 all: check $(OBJNAME).bin
     266#all: check $(OBJNAME).bin
    265267#all: check $(OBJNAME).srec
     268all: check $(OBJNAME).mot
    266269endif
    267270
     
    271274#  コンフィギュレータに関する定義
    272275#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     276ifndef TINETDIR
     277  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     278  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     279                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     280else
     281  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     282  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275283                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276284                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278286                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279287                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     288endif
    280289CFG_ASMOBJS := $(CFG_ASMOBJS)
    281290CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423432
    424433#
     434#  並列makeのための依存関係の定義
     435#
     436$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     437$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     438                                                                                                                | offset.timestamp
     439
     440#
    425441#  特別な依存関係の定義
    426442#
     
    431447#
    432448$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     449        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434450                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435451                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    460476$(OBJNAME).srec: $(OBJFILE)
    461477        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     478
     479$(OBJNAME).mot: $(OBJFILE)
     480        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    462481
    463482#
  • asp3_tinet_ecnl_rx/trunk/app7_buzzer/DebugCitrus/Makefile

    r342 r364  
    167167        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    168168endif
    169 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     169CDEFS := $(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
    170170INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    171171        -I$(SRCDIR)/../btstack/include \
     
    175175        -I$(SRCDIR)/../usbhost/src \
    176176        $(INCLUDES)
    177 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     177LDFLAGS := $(LDFLAGS) -L.
    178178LIBS := $(LIBS) $(CXXLIBS)
    179179CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    209209endif
    210210
    211 
    212 #
    213 #  ネットワークサービスの定義
    214 #
    215 NO_USE_TINET_LIBRARY = true
    216 
    217 #  ネットワークインタフェースの選択、何れか一つ選択する。
    218 NET_IF = ether
    219 
    220 #  イーサネット・ディバイスドライバの選択
    221 NET_DEV = if_btusb
    222 
    223 #  ネットワーク層の選択
    224 #SUPPORT_INET6 = true
    225 SUPPORT_INET4 = true
    226 
    227 #  API に組込む機能の選択
    228 #API_CFG_IP4MAPPED_ADDR = true
    229 
    230 #  トランスポート層の選択
    231 SUPPORT_TCP = true
    232 SUPPORT_UDP = true
    233 
    234 # IGMPを有効に設定
    235 SUPPORT_IGMP = true
    236 
    237 #
    238 #  ネットワークサービスの Makefile のインクルード
    239 #
    240 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     211ifdef TINETDIR
     212        #
     213        #  ネットワークサービスの定義
     214        #
     215        NO_USE_TINET_LIBRARY = true
     216
     217        #  ネットワークインタフェースの選択、何れか一つ選択する。
     218        NET_IF = ether
     219
     220        #  イーサネット・ディバイスドライバの選択
     221        NET_DEV = if_btusb
     222
     223        #  ネットワーク層の選択
     224        #SUPPORT_INET6 = true
     225        SUPPORT_INET4 = true
     226
     227        #  API に組込む機能の選択
     228        #API_CFG_IP4MAPPED_ADDR = true
     229
     230        #  トランスポート層の選択
     231        SUPPORT_TCP = true
     232        SUPPORT_UDP = true
     233
     234        # IGMPを有効に設定
     235        SUPPORT_IGMP = true
     236
     237        #
     238        #  ネットワークサービスの Makefile のインクルード
     239        #
     240        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     241endif
    241242
    242243#
     
    258259all: tecs | $(DEPDIR)
    259260#       @$(MAKE) check
    260         @$(MAKE) check $(OBJNAME).bin
     261#       @$(MAKE) check $(OBJNAME).bin
    261262#       @$(MAKE) check $(OBJNAME).srec
     263        @$(MAKE) check $(OBJNAME).mot
    262264else
    263265#all: check
    264 all: check $(OBJNAME).bin
     266#all: check $(OBJNAME).bin
    265267#all: check $(OBJNAME).srec
     268all: check $(OBJNAME).mot
    266269endif
    267270
     
    271274#  コンフィギュレータに関する定義
    272275#
    273 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    274 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     276ifndef TINETDIR
     277  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     278  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     279                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     280else
     281  CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
     282  CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
    275283                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    276284                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    278286                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    279287                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     288endif
    280289CFG_ASMOBJS := $(CFG_ASMOBJS)
    281290CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    423432
    424433#
     434#  並列makeのための依存関係の定義
     435#
     436$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     437$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     438                                                                                                                | offset.timestamp
     439
     440#
    425441#  特別な依存関係の定義
    426442#
     
    431447#
    432448$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    433         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     449        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    434450                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    435451                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    460476$(OBJNAME).srec: $(OBJFILE)
    461477        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     478
     479$(OBJNAME).mot: $(OBJFILE)
     480        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    462481
    463482#
  • asp3_tinet_ecnl_rx/trunk/app7_buzzer/DebugEther/Makefile

    r342 r364  
    165165        CDEFS := -DTOPPERS_OMIT_TECS $(CDEFS)
    166166endif
    167 CDEFS := $(CDEFS) -DDHCP4_CLI_CFG -DUSE_PING -DUSE_RESOLVER -DUSE_NETAPP_SUBR -DECHONET_USE_MALLOC -DRamDisk=binary_______ntshell_src_rom_fs_bin_start
     167CDEFS := $(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
    168168INCLUDES := -I. -I$(SRCDIR)/include -I$(SRCDIR) \
    169169        -I$(SRCDIR)/../btstack/include \
     
    173173        -I$(SRCDIR)/../usbhost/src \
    174174        $(INCLUDES)
    175 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     175LDFLAGS := $(LDFLAGS) -L.
    176176LIBS := $(LIBS) $(CXXLIBS)
    177177CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    207207endif
    208208
    209 
    210 #
    211 #  ネットワークサービスの定義
    212 #
    213 NO_USE_TINET_LIBRARY = true
    214 
    215 #  ネットワークインタフェースの選択、何れか一つ選択する。
    216 NET_IF = ether
    217 
    218 #  イーサネット・ディバイスドライバの選択
     209ifdef TINETDIR
     210        #
     211        #  ネットワークサービスの定義
     212        #
     213        NO_USE_TINET_LIBRARY = true
     214
     215        #  ネットワークインタフェースの選択、何れか一つ選択する。
     216        NET_IF = ether
     217
     218        #  イーサネット・ディバイスドライバの選択
    219219        NET_DEV = if_rx62n
    220220
    221 #  ネットワーク層の選択
    222 #SUPPORT_INET6 = true
    223 SUPPORT_INET4 = true
    224 
    225 #  API に組込む機能の選択
    226 #API_CFG_IP4MAPPED_ADDR = true
    227 
    228 #  トランスポート層の選択
    229 SUPPORT_TCP = true
    230 SUPPORT_UDP = true
    231 
    232 # IGMPを有効に設定
    233 SUPPORT_IGMP = true
    234 
    235 #
    236 #  ネットワークサービスの Makefile のインクルード
    237 #
    238 include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     221        #  ネットワーク層の選択
     222        #SUPPORT_INET6 = true
     223        SUPPORT_INET4 = true
     224
     225        #  API に組込む機能の選択
     226        #API_CFG_IP4MAPPED_ADDR = true
     227
     228        #  トランスポート層の選択
     229        SUPPORT_TCP = true
     230        SUPPORT_UDP = true
     231
     232        # IGMPを有効に設定
     233        SUPPORT_IGMP = true
     234
     235        #
     236        #  ネットワークサービスの Makefile のインクルード
     237        #
     238        include $(SRCDIR)/$(TINETDIR)/Makefile.tinet
     239endif
    239240
    240241#
     
    256257all: tecs | $(DEPDIR)
    257258#       @$(MAKE) check
    258         @$(MAKE) check $(OBJNAME).bin
     259#       @$(MAKE) check $(OBJNAME).bin
    259260#       @$(MAKE) check $(OBJNAME).srec
     261        @$(MAKE) check $(OBJNAME).mot
    260262else
    261263#all: check
    262 all: check $(OBJNAME).bin
     264#all: check $(OBJNAME).bin
    263265#all: check $(OBJNAME).srec
     266all: check $(OBJNAME).mot
    264267endif
    265268
     
    269272#  コンフィギュレータに関する定義
    270273#
    271 CFG_TRB := -T $(TINET_ROOT)/tinet.trb:tcpip -T ../../ntshell/echonet/echonet.trb:echonet -T $(TARGETDIR)/target_kernel.trb:kernel
    272 CFG_TABS := --api-table $(TINET_ROOT)/tcpip_api.def:tcpip \
     274ifndef TINETDIR
     275  CFG_TRB := -T $(TARGETDIR)/target_kernel.trb
     276  CFG_TABS := --api-table $(SRCDIR)/kernel/kernel_api.def \
     277                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     278else
     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 \
    273281                        --api-table ../../ntshell/echonet/echonet_api.def:echonet \
    274282                        --api-table $(SRCDIR)/kernel/kernel_api.def:kernel \
     
    276284                        --symval-table ../../ntshell/echonet/echonet_sym.def \
    277285                        --symval-table $(SRCDIR)/kernel/kernel_sym.def $(CFG_TABS)
     286endif
    278287CFG_ASMOBJS := $(CFG_ASMOBJS)
    279288CFG_COBJS := kernel_cfg.o echonet_cfg.o $(CFG_COBJS)
     
    421430
    422431#
     432#  並列makeのための依存関係の定義
     433#
     434$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     435$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     436                                                                                                                | offset.timestamp
     437
     438#
    423439#  特別な依存関係の定義
    424440#
     
    429445#
    430446$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    431         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     447        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    432448                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    433449                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    458474$(OBJNAME).srec: $(OBJFILE)
    459475        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     476
     477$(OBJNAME).mot: $(OBJFILE)
     478        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    460479
    461480#
  • asp3_tinet_ecnl_rx/trunk/app7_buzzer/src/echonet_main.c

    r351 r364  
    11/*
    22 *  TOPPERS ECHONET Lite Communication Middleware
    3  * 
     3 *
    44 *  Copyright (C) 2014-2018 Cores Co., Ltd. Japan
    5  * 
     5 *
    66 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    77 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2626 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    2727 *      免責すること.
    28  * 
     28 *
    2929 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3030 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3232 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3333 *  の責任を負わない.
    34  * 
     34 *
    3535 *  @(#) $Id$
    3636 */
    3737
    38 /* 
     38/*
    3939 *  サンプルプログラム(1)の本体
    4040 */
     
    106106{
    107107        /* サイズが1以外は受け付けない */
    108         if(size != 1)
     108        if (size != 1)
    109109                return 0;
    110110
    111111        *anno = *((uint8_t*)item->exinf) != *((uint8_t*)src);
    112112
    113         switch(*(uint8_t *)src){
     113        switch (*(uint8_t *)src) {
    114114        /* ONの場合 */
    115115        case 0x30:
     
    138138{
    139139        /* サイズが1以外は受け付けない */
    140         if(size != 1)
     140        if (size != 1)
    141141                return 0;
    142142
    143143        *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src);
    144144
    145         switch(*(uint8_t *)src){
     145        switch (*(uint8_t *)src) {
    146146        /* 異常発生ありの場合 */
    147147        case 0x41:
     
    166166
    167167        /* サイズが1以外は受け付けない */
    168         if(size != 1)
    169                 return 0;
    170 
    171         switch(*(uint8_t *)src){
     168        if (size != 1)
     169                return 0;
     170
     171        switch (*(uint8_t *)src) {
    172172        /* 音発生有の場合 */
    173173        case 0x41:
     
    199199
    200200        /* サイズが1以外は受け付けない */
    201         if(size != 1)
     201        if (size != 1)
    202202                return 0;
    203203
     
    208208        data[1] = (*((uint8_t *)src) == 0x41) ? 0x01 : 0x00;
    209209        ret = ecn_brk_wai(data, sizeof(data));
    210         if(ret != E_OK){
     210        if (ret != E_OK) {
    211211                syslog(LOG_ERROR, "ecn_brk_wai");
    212212        }
     
    224224
    225225        /* サイズが1以外は受け付けない */
    226         if(size != 1)
     226        if (size != 1)
    227227                return 0;
    228228
     
    233233        data[1] = (*((uint8_t *)src) == 0x41) ? 0x01 : 0x00;
    234234        ret = ecn_brk_wai(data, sizeof(data));
    235         if(ret != E_OK){
     235        if (ret != E_OK) {
    236236                syslog(LOG_ERROR, "ecn_brk_wai");
    237237        }
     
    263263
    264264        ret2 = get_tim(&now);
    265         if (ret2 != E_OK){
     265        if (ret2 != E_OK) {
    266266                syslog(LOG_ERROR, "get_tim");
    267267                return;
    268268        }
    269269
    270         for(;;){
     270        for (;;) {
    271271                prev = now;
    272272
     
    276276                /* 応答電文待ち */
    277277                ret = ecn_trcv_esv(&esv, timer);
    278                 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)){
     278                if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {
    279279                        syslog(LOG_ERROR, "ecn_trcv_esv");
    280280                        break;
     
    282282
    283283                ret2 = get_tim(&now);
    284                 if (ret2 != E_OK){
     284                if (ret2 != E_OK) {
    285285                        syslog(LOG_ERROR, "get_tim");
    286286                        break;
     
    297297                        /* 領域解放 */
    298298                        ret = ecn_rel_esv(esv);
    299                         if (ret != E_OK){
     299                        if (ret != E_OK) {
    300300                                syslog(LOG_ERROR, "ecn_rel_esv");
    301301                                break;
     
    306306                        /* 応答電文待ちの割り込みデータ取得 */
    307307                        ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len);
    308                         if (ret != E_OK){
     308                        if (ret != E_OK) {
    309309                                syslog(LOG_ERROR, "ecn_get_brk_dat");
    310310                                break;
     
    316316                        /* 領域解放 */
    317317                        ret = ecn_rel_esv(esv);
    318                         if (ret != E_OK){
     318                        if (ret != E_OK) {
    319319                                syslog(LOG_ERROR, "ecn_rel_esv");
    320320                                break;
     
    327327}
    328328
    329 bool_t started = false;
    330 
    331329void echonet_change_netif_link(uint8_t link_up, uint8_t up)
    332330{
     
    336334                return;
    337335
    338         if (up && !started) {
    339                 started = true;
    340 
    341                 /* ECHONETミドルウェアを起動 */
    342                 ret = ecn_sta_svc();
    343                 if (ret != E_OK)
    344                         return;
    345 
    346                 /* ECHONETミドルウェアを起動するのを待つ */
    347                 dly_tsk(100);
     336        if (up) {
     337                /* インスタンスリスト通知の送信 */
     338                ret = ecn_ntf_inl();
     339                if (ret != E_OK) {
     340                        syslog(LOG_ERROR, "ecn_ntf_inl");
     341                }
    348342        }
    349343
     
    351345        uint8_t data[2];
    352346        data[0] = 0x01;
    353         data[1] = up ? 0x01 : 0x02;
    354347        ret = ecn_brk_wai(data, sizeof(data));
    355348        if (ret != E_OK) {
     
    359352}
    360353
    361 enum main_state_t{
     354enum main_state_t {
     355        main_state_start,
    362356        main_state_idle,
    363357        main_state_search,
     
    366360
    367361int main_timer = TMO_FEVR;
    368 enum main_state_t main_state = main_state_idle;
     362enum main_state_t main_state = main_state_start;
    369363
    370364int main_nop_timer = TMO_FEVR;
     
    378372        sil_wrb_mem((uint8_t *)0x0008C02A, 0x00);
    379373
    380         /* 1秒後にブザーを検索 */
    381         main_state = main_state_search;
     374        /* ECHONETミドルウェアを起動するのを待つ */
     375        main_state = main_state_start;
    382376        main_timer = 1000 * 1000;
    383377
     378        /* メインタスクを起動 */
    384379        ER ret = act_tsk(MAIN_TASK);
    385380        if (ret != E_OK) {
     
    395390        int result = main_timer;
    396391
    397         if((result == TMO_FEVR)
    398                 || ((main_nop_timer != TMO_FEVR) && (main_nop_timer < result))){
     392        if ((result == TMO_FEVR)
     393                || ((main_nop_timer != TMO_FEVR) && (main_nop_timer < result))) {
    399394                result = main_nop_timer;
    400395        }
     
    408403static void main_progress(int interval)
    409404{
    410         if(main_timer != TMO_FEVR){
     405        if (main_timer != TMO_FEVR) {
    411406                main_timer -= interval;
    412                 if(main_timer < 0){
     407                if (main_timer < 0) {
    413408                        main_timer = 0;
    414409                }
    415410        }
    416411
    417         if(main_nop_timer != TMO_FEVR){
     412        if (main_nop_timer != TMO_FEVR) {
    418413                main_nop_timer -= interval;
    419                 if(main_nop_timer < 0){
     414                if (main_nop_timer < 0) {
    420415                        main_nop_timer = 0;
    421416                }
     
    436431
    437432        eobjid = ecn_get_eobj(esv);
    438         if(eobjid == EOBJ_NULL){
     433        if (eobjid == EOBJ_NULL) {
    439434                syslog(LOG_ERROR, "ecn_get_eobj");
    440435                return;
     
    442437
    443438        ret = ecn_itr_ini(&enm, esv);
    444         if(ret != E_OK){
     439        if (ret != E_OK) {
    445440                syslog(LOG_ERROR, "ecn_itr_ini");
    446441                return;
    447442        }
    448443
    449         for(;;) {
    450                 while((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
     444        for (;;) {
     445                while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {
    451446                        switch (epc) {
    452447                        case 0xD6:
    453                                 switch(main_state){
     448                                switch (main_state) {
    454449                                case main_state_search:
    455450                                        if (eobjid == POT_NODE_EOBJ) {
     
    463458                        }
    464459                }
    465                 if(ret != E_BOVR){
     460                if (ret != E_BOVR) {
    466461                        syslog(LOG_ERROR, "ecn_itr_nxt");
    467462                        break;
    468463                }
    469                 if(enm.is_eof)
     464                if (enm.is_eof)
    470465                        break;
    471466        }
     
    478473        uint8_t p_edt[1];
    479474
    480         switch(main_state){
     475        switch (main_state) {
    481476        case main_state_idle:
    482477                p_edt[0] = 0x41; /* 音発生有 */
     
    484479                /* プロパティ設定電文作成 */
    485480                ret = ecn_esv_seti(&esv, BUZZER_EOBJ, 0xB1, 1, p_edt);
    486                 if(ret != E_OK){
     481                if (ret != E_OK) {
    487482                        syslog(LOG_ERROR, "ecn_esv_seti");
    488483                        break;
     
    491486                /* 電文送信 */
    492487                ecn_snd_esv(esv);
    493                 if(ret != E_OK){
     488                if (ret != E_OK) {
    494489                        syslog(LOG_ERROR, "ecn_snd_esv");
    495490                        break;
     
    511506        uint8_t p_edt[1];
    512507
    513         switch(main_state){
     508        switch (main_state) {
    514509        case main_state_buzzer_on:
    515510                p_edt[0] = 0x42; /* 音発生無 */
     
    517512                /* プロパティ設定電文作成 */
    518513                ret = ecn_esv_seti(&esv, BUZZER_EOBJ, 0xB1, 1, p_edt);
    519                 if(ret != E_OK){
     514                if (ret != E_OK) {
    520515                        syslog(LOG_ERROR, "ecn_esv_seti");
    521516                        break;
     
    524519                /* 電文送信 */
    525520                ecn_snd_esv(esv);
    526                 if(ret != E_OK){
     521                if (ret != E_OK) {
    527522                        syslog(LOG_ERROR, "ecn_snd_esv");
    528523                        break;
     
    545540        }
    546541
    547         if(len < 2)
    548                 return;
    549 
    550         switch(brkdat[0]){
     542        if (len < 2)
     543                return;
     544
     545        switch (brkdat[0]) {
    551546        case 0x01:
    552                 if(brkdat[1] != 0)
     547                if (brkdat[1] != 0)
    553548                        main_buzzer_on();
    554549                else
     
    556551                break;
    557552        case 0x02:
    558                 if(brkdat[1] == 0)
     553                if (brkdat[1] == 0)
    559554                        main_nop_timer = 5000 * 1000; /* 5秒後にブザーON */
    560555                break;
     
    570565static void main_timeout()
    571566{
    572         if(main_timer == 0){
     567        if (main_timer == 0) {
    573568                main_ontimer();
    574569        }
    575570
    576         if(main_nop_timer == 0){
     571        if (main_nop_timer == 0) {
    577572                main_nop_timeout();
    578573        }
     
    583578static void main_ontimer()
    584579{
    585         switch (main_state)
    586         {
     580        ER ret;
     581
     582        switch (main_state) {
     583        case main_state_start:
     584                /* ECHONETミドルウェアを起動 */
     585                ret = ecn_sta_svc();
     586                if (ret != E_OK) {
     587                        syslog(LOG_ERROR, "ecn_sta_svc");
     588                }
     589
     590                /* 1秒後にブザーを検索 */
     591                main_state = main_state_search;
     592                main_timer = 1000 * 1000;
     593                break;
    587594        case main_state_search:
    588595                /* 電気ポット再検索 */
     
    608615        /* 電気ポット検索 */
    609616        ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6);
    610         if(ret != E_OK){
     617        if (ret != E_OK) {
    611618                syslog(LOG_ERROR, "ecn_esv_inf_req");
    612619                return;
     
    615622        /* 電文送信 */
    616623        ret = ecn_snd_esv(esv);
    617         if(ret != E_OK){
     624        if (ret != E_OK) {
    618625                syslog(LOG_ERROR, "ecn_snd_esv");
    619626        }
  • asp3_tinet_ecnl_rx/trunk/app7_buzzer/src/main.c

    r359 r364  
    7979
    8080ID ws_api_mailboxid = MAIN_DATAQUEUE;
     81#ifndef NOUSE_MPF_NET_BUF
    8182ID ws_mempoolid = MPF_NET_BUF_256;
     83#endif
    8284
    8385#ifdef IF_ETHER_BTUSB
     
    111113static void main_timeout();
    112114
     115extern int ntshell_exit;
     116
    113117int uart_read(char *buf, int cnt, void *extobj)
    114118{
    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;
    116153}
    117154
     
    119156{
    120157        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);
    136158}
    137159
     
    150172        main_initialize();
    151173
    152         ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);
     174        ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj);
    153175        ntshell_set_prompt(&ntshell, "NTShell>");
    154176        ntshell_execute(&ntshell);
     
    168190        ER ret;
    169191
    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);
    171198
    172199        main_obj.timer = TMO_FEVR;
  • asp3_tinet_ecnl_rx/trunk/app7_buzzer/src/main.cfg

    r342 r364  
    5454INCLUDE("tinet/tinet_asp.cfg");
    5555INCLUDE("tinet_main.cfg");
    56 INCLUDE("netinet/ip_igmp.cfg");
    5756
    5857/* DHCP クライアント */
     
    7776INCLUDE("ffarch.cfg");
    7877
     78/* mbed */
     79INCLUDE("mbed_api.cfg");
     80
    7981#ifdef IF_ETHER_BTUSB
    8082INCLUDE("usb_hbth.cfg");
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/.cproject

    r345 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.240222967" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.635282713" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    39                                                         <builder buildPath="${workspace_loc:/asp3_dcre}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1294414176" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     39                                                        <builder buildPath="${workspace_loc:/asp3_dcre}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1294414176" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    4040                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.946367481" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    4141                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1170480133" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    6565                                        </folderInfo>
    6666                                        <sourceEntries>
    67                                                 <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
     67                                                <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
    6868                                        </sourceEntries>
    6969                                </configuration>
     
    7777                                                <entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/asp3_dcre"/>
    7878                                                <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/asp3_dcre/Debug"/>
     79                                                <entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/asp3_dcre/DebugCitrus"/>
    7980                                                <entry flags="RESOLVED" kind="libraryFile" name="asp3_dcre" srcPrefixMapping="" srcRootPath=""/>
    8081                                        </externalSetting>
     
    9192                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    9293                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    93                                 <option id="toolchain.version" value="4.8.4.201703"/>
     94                                <option id="toolchain.version" value="4.8.4.201803"/>
    9495                        </storageModule>
    9596                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    106107                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1083888317" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    107108                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.570033485" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    108                                                         <builder buildPath="${workspace_loc:/asp3_dcre}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.1961458105" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     109                                                        <builder buildPath="${workspace_loc:/asp3_dcre}/DebugCitrus" id="com.renesas.cdt.managedbuild.gcc.core.builder.1961458105" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    109110                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.1465675052" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    110111                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.1037533987" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
     
    134135                                        </folderInfo>
    135136                                        <sourceEntries>
    136                                                 <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
     137                                                <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
    137138                                        </sourceEntries>
    138139                                </configuration>
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/Debug/Makefile

    r342 r364  
    5656SRCLANG = c
    5757ifeq ($(SRCLANG),c)
    58         LIBS = -lmusl
     58        LIBS = $(SRCDIR)/../musl-1.1.18/Debug/libmusl.a
    5959endif
    6060ifeq ($(SRCLANG),c++)
    6161        USE_CXX = true
    62         CXXLIBS = -lstdc++ -lmusl
     62        CXXLIBS = -lstdc++ $(SRCDIR)/../musl-1.1.18/Debug/libmusl.a
    6363        CXXRTS = cxxrt.o newlibrt.o
    6464endif
     
    150150endif
    151151
     152TINETDIR =
     153
    152154#
    153155#  共通コンパイルオプションの定義
     
    165167CDEFS := $(CDEFS)
    166168INCLUDES := -I. -I$(SRCDIR)/include $(INCLUDES) -I$(SRCDIR)
    167 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L$(SRCDIR)/../musl-1.1.18/Debug
     169LDFLAGS := $(LDFLAGS) -L.
    168170LIBS := $(LIBS) $(CXXLIBS)
    169171CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    186188endif
    187189APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o
    188 APPL_CFLAGS := $(APPL_CFLAGS)
     190APPL_CFLAGS := $(APPL_CFLAGS) -nostdinc
    189191ifdef APPLDIRS
    190192        INCLUDES := $(INCLUDES) $(foreach dir,$(APPLDIRS),-I$(dir))
    191193endif
    192194
    193 TINETDIR =
    194195ifdef TINETDIR
    195196        #
     
    242243all: tecs | $(DEPDIR)
    243244#       @$(MAKE) check
    244         @$(MAKE) check $(OBJNAME).bin
     245#       @$(MAKE) check $(OBJNAME).bin
    245246#       @$(MAKE) check $(OBJNAME).srec
     247        @$(MAKE) check $(OBJNAME).mot
    246248else
    247249#all: check
    248 all: check $(OBJNAME).bin
     250#all: check $(OBJNAME).bin
    249251#all: check $(OBJNAME).srec
     252all: check $(OBJNAME).mot
    250253endif
    251254
     
    329332vpath %.cfg $(APPL_DIRS)
    330333vpath %.cdl $(APPL_DIRS)
     334vpath %.bin $(APPL_DIRS)
    331335
    332336#
     
    335339KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS)
    336340SYSSVC_OBJS = $(SYSSVC_ASMOBJS) $(SYSSVC_COBJS) $(HIDDEN_OBJS)
    337 APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS)
     341APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS) $(APPL_BINOBJS)
    338342ALL_OBJS = $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    339343                                                                                        $(END_OBJS) $(HIDDEN_OBJS)
     
    410414
    411415#
     416#  並列makeのための依存関係の定義
     417#
     418$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     419$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     420                                                                                                                | offset.timestamp
     421
     422#
    412423#  特別な依存関係の定義
    413424#
     
    418429#
    419430$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    420         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     431        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    421432                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    422                         $(ALL_LIBS) $(END_OBJS)
     433                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
    423434
    424435#
     
    447458$(OBJNAME).srec: $(OBJFILE)
    448459        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     460
     461$(OBJNAME).mot: $(OBJFILE)
     462        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    449463
    450464#
     
    591605        $(CC) -c -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
    592606
     607$(APPL_BINOBJS): %.o: %.bin
     608        $(OBJCOPY) -B rx -I binary -O elf32-rx-le --rename-section .data=.rodata $< $*.o
     609
    593610#
    594611#  デフォルトコンパイルルールを上書き
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/DebugCitrus/Makefile

    r342 r364  
    5656SRCLANG = c
    5757ifeq ($(SRCLANG),c)
    58         LIBS = -lmusl
     58        LIBS = $(SRCDIR)/../musl-1.1.18/Debug/libmusl.a
    5959endif
    6060ifeq ($(SRCLANG),c++)
    6161        USE_CXX = true
    62         CXXLIBS = -lstdc++ -lmusl
     62        CXXLIBS = -lstdc++ $(SRCDIR)/../musl-1.1.18/Debug/libmusl.a
    6363        CXXRTS = cxxrt.o newlibrt.o
    6464endif
     
    150150endif
    151151
     152TINETDIR =
     153
    152154#
    153155#  共通コンパイルオプションの定義
     
    165167CDEFS := $(CDEFS)
    166168INCLUDES := -I. -I$(SRCDIR)/include $(INCLUDES) -I$(SRCDIR)
    167 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L$(SRCDIR)/../musl-1.1.18/Debug
     169LDFLAGS := $(LDFLAGS) -L.
    168170LIBS := $(LIBS) $(CXXLIBS)
    169171CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    186188endif
    187189APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o
    188 APPL_CFLAGS := $(APPL_CFLAGS)
     190APPL_CFLAGS := $(APPL_CFLAGS) -nostdinc
    189191ifdef APPLDIRS
    190192        INCLUDES := $(INCLUDES) $(foreach dir,$(APPLDIRS),-I$(dir))
    191193endif
    192194
    193 TINETDIR =
    194195ifdef TINETDIR
    195196        #
     
    242243all: tecs | $(DEPDIR)
    243244#       @$(MAKE) check
    244         @$(MAKE) check $(OBJNAME).bin
     245#       @$(MAKE) check $(OBJNAME).bin
    245246#       @$(MAKE) check $(OBJNAME).srec
     247        @$(MAKE) check $(OBJNAME).mot
    246248else
    247249#all: check
    248 all: check $(OBJNAME).bin
     250#all: check $(OBJNAME).bin
    249251#all: check $(OBJNAME).srec
     252all: check $(OBJNAME).mot
    250253endif
    251254
     
    329332vpath %.cfg $(APPL_DIRS)
    330333vpath %.cdl $(APPL_DIRS)
     334vpath %.bin $(APPL_DIRS)
    331335
    332336#
     
    335339KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS)
    336340SYSSVC_OBJS = $(SYSSVC_ASMOBJS) $(SYSSVC_COBJS) $(HIDDEN_OBJS)
    337 APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS)
     341APPL_OBJS = $(APPL_ASMOBJS) $(APPL_COBJS) $(APPL_CXXOBJS) $(APPL_BINOBJS)
    338342ALL_OBJS = $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    339343                                                                                        $(END_OBJS) $(HIDDEN_OBJS)
     
    410414
    411415#
     416#  並列makeのための依存関係の定義
     417#
     418$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     419$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     420                                                                                                                | offset.timestamp
     421
     422#
    412423#  特別な依存関係の定義
    413424#
     
    418429#
    419430$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    420         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     431        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    421432                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    422                         $(ALL_LIBS) $(END_OBJS)
     433                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
    423434
    424435#
     
    447458$(OBJNAME).srec: $(OBJFILE)
    448459        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     460
     461$(OBJNAME).mot: $(OBJFILE)
     462        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    449463
    450464#
     
    591605        $(CC) -c -MD -MP -MF $(DEPDIR)/$*.d $(CFLAGS) $(APPL_CFLAGS) $<
    592606
     607$(APPL_BINOBJS): %.o: %.bin
     608        $(OBJCOPY) -B rx -I binary -O elf32-rx-le --rename-section .data=.rodata $< $*.o
     609
    593610#
    594611#  デフォルトコンパイルルールを上書き
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/arch/rx630_gcc/prc_kernel_impl.c

    r359 r364  
    237237#endif /* OMIT_DEFAULT_EXC_HANDLER */
    238238
    239 void _start_c(char **args);
     239void _start_c(char * const*args);
    240240
    241241void
     
    243243{
    244244        const char *const args[] = {
    245                 1,
     245                (char *)1,
    246246                "asp3",
    247247                0,
     
    268268
    269269__attribute__((weak))
    270 void SYS_set_tid_address()
    271 {
    272         return 0;//-ENOSYS;
    273 }
    274 
    275 __attribute__((weak))
    276 void SYS_mmap2()
     270long SYS_set_tid_address()
     271{
     272        return 0;//-ENOSYS;
     273}
     274
     275__attribute__((weak))
     276long SYS_gettid()
     277{
     278        return 0;//-ENOSYS;
     279}
     280
     281__attribute__((weak))
     282long SYS_rt_sigprocmask()
     283{
     284        return 0;//-ENOSYS;
     285}
     286
     287__attribute__((weak))
     288long SYS_mmap2()
     289{
     290        return 0;//-ENOSYS;
     291}
     292
     293__attribute__((weak))
     294long SYS_tkill()
    277295{
    278296        return 0;//-ENOSYS;
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/arch/rx630_gcc/prc_rename.def

    r337 r364  
    1818exception
    1919
    20 # rx610_kernel_impl.c
     20# rx630_kernel_impl.c
    2121ipr_reg_addr
    2222ier_reg_addr
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/arch/rx630_gcc/prc_support.S

    r337 r364  
    410410dispatcher_idle_loop:
    411411        setpsw  i                                                       ; 全割込み許可
     412        wait
    412413        clrpsw  i                                                       ; 全割込み禁止
    413414
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/arch/rx630_gcc/rx630.h

    r337 r364  
    12121212#define ICU_IPR254_ADDR                 ( ( volatile uint8_t __evenaccess * )0x000873FE )
    12131213#define ICU_IPR255_ADDR                 ( ( volatile uint8_t __evenaccess * )0x000873FF )
    1214 #define ICU_IPR_BIT                             ( 7U << 0U )
    1215 
     1214#define ICU_IPR_OFFSET                  ( 0U )
     1215#define ICU_IPR_MASK                    ( 0xFU << ICU_IPR_OFFSET )
    12161216
    12171217/*
     
    13231323#define SCI6_SCMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A0C6 )
    13241324#define SCI6_SEMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A0C7 )
     1325#define SCI7_SMR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A0E0 )
     1326#define SCI7_BRR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A0E1 )
     1327#define SCI7_SCR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A0E2 )
     1328#define SCI7_TDR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A0E3 )
     1329#define SCI7_SSR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A0E4 )
     1330#define SCI7_RDR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A0E5 )
     1331#define SCI7_SCMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A0E6 )
     1332#define SCI7_SEMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A0E7 )
     1333#define SCI8_SMR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A100 )
     1334#define SCI8_BRR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A101 )
     1335#define SCI8_SCR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A102 )
     1336#define SCI8_TDR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A103 )
     1337#define SCI8_SSR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A104 )
     1338#define SCI8_RDR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A105 )
     1339#define SCI8_SCMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A106 )
     1340#define SCI8_SEMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A107 )
     1341#define SCI9_SMR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A120 )
     1342#define SCI9_BRR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A121 )
     1343#define SCI9_SCR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A122 )
     1344#define SCI9_TDR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A123 )
     1345#define SCI9_SSR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A124 )
     1346#define SCI9_RDR_ADDR                   ( ( volatile uint8_t __evenaccess * )0x0008A125 )
     1347#define SCI9_SCMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A126 )
     1348#define SCI9_SEMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A127 )
     1349#define SCI10_SMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A140 )
     1350#define SCI10_BRR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A141 )
     1351#define SCI10_SCR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A142 )
     1352#define SCI10_TDR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A143 )
     1353#define SCI10_SSR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A144 )
     1354#define SCI10_RDR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A145 )
     1355#define SCI10_SCMR_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008A146 )
     1356#define SCI10_SEMR_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008A147 )
     1357#define SCI11_SMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A160 )
     1358#define SCI11_BRR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A161 )
     1359#define SCI11_SCR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A162 )
     1360#define SCI11_TDR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A163 )
     1361#define SCI11_SSR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A164 )
     1362#define SCI11_RDR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A165 )
     1363#define SCI11_SCMR_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008A166 )
     1364#define SCI11_SEMR_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008A167 )
     1365#define SCI12_SMR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A300 )
     1366#define SCI12_BRR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A301 )
     1367#define SCI12_SCR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A302 )
     1368#define SCI12_TDR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A303 )
     1369#define SCI12_SSR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A304 )
     1370#define SCI12_RDR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x0008A305 )
     1371#define SCI12_SCMR_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008A306 )
     1372#define SCI12_SEMR_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008A307 )
    13251373#define SCI_SMR_CKS_BIT                 ( 3U << 0U )
    13261374#define SCI_SMR_STOP_BIT                ( 1U << 3U )
     
    15151563#define PORTG_ODR1_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008C0A1 )
    15161564#define PORTJ_ODR1_ADDR                 ( ( volatile uint8_t __evenaccess * )0x0008C0A5 )
     1565#define PORT_ODR_Pm0_OFFSET             ( 0U )
     1566#define PORT_ODR_Pm0_MASK               ( 0x3U << PORT_ODR_Pm0_OFFSET )
     1567#define PORT_ODR_Pm1_OFFSET             ( 2U )
     1568#define PORT_ODR_Pm1_MASK               ( 0x3U << PORT_ODR_Pm1_OFFSET )
     1569#define PORT_ODR_Pm2_OFFSET             ( 4U )
     1570#define PORT_ODR_Pm2_MASK               ( 0x3U << PORT_ODR_Pm2_OFFSET )
     1571#define PORT_ODR_Pm3_OFFSET             ( 6U )
     1572#define PORT_ODR_Pm3_MASK               ( 0x3U << PORT_ODR_Pm3_OFFSET )
     1573#define PORT_ODR_Pm4_OFFSET             ( 0U )
     1574#define PORT_ODR_Pm4_MASK               ( 0x3U << PORT_ODR_Pm4_OFFSET )
     1575#define PORT_ODR_Pm5_OFFSET             ( 2U )
     1576#define PORT_ODR_Pm5_MASK               ( 0x3U << PORT_ODR_Pm5_OFFSET )
     1577#define PORT_ODR_Pm6_OFFSET             ( 4U )
     1578#define PORT_ODR_Pm6_MASK               ( 0x3U << PORT_ODR_Pm6_OFFSET )
     1579#define PORT_ODR_Pm7_OFFSET             ( 6U )
     1580#define PORT_ODR_Pm7_MASK               ( 0x3U << PORT_ODR_Pm7_OFFSET )
     1581#define PORT_ODR_CMOS                   ( 0U )
     1582#define PORT_ODR_NCH_OPEN_DRAIN ( 1U )
     1583#define PORT_ODR_PCH_OPEN_DRAIN ( 2U )
    15171584
    15181585/*
     
    17281795#define TPU10_TMDR_ADDR                 ( ( volatile uint8_t __evenaccess * )0x000881C1 )
    17291796#define TPU11_TMDR_ADDR                 ( ( volatile uint8_t __evenaccess * )0x000881D1 )
     1797#define TPU_TMDR_MD_OFFSET              ( 0U )
     1798#define TPU_TMDR_MD_MASK                ( 0xFU << TPU_TMDR_MD_OFFSET )
     1799#define TPU_TMDR_BFA_BIT                ( 0x10 )
     1800#define TPU_TMDR_BFB_BIT                ( 0x20 )
     1801#define TPU_TMDR_ICSELB_BIT             ( 0x40 )
     1802#define TPU_TMDR_ICSELD_BIT             ( 0x80 )
    17301803
    17311804#define TPU0_TIOR_ADDR                  ( ( volatile uint8_t __evenaccess * )0x000881C0 )
     
    17461819#define TPU10_TIOR_ADDR                 ( ( volatile uint8_t __evenaccess * )0x000881C2 )
    17471820#define TPU11_TIOR_ADDR                 ( ( volatile uint8_t __evenaccess * )0x000881D2 )
    1748 #define TPU_TIORL_IOA_OFFSET    ( 0U )
    1749 #define TPU_TIORL_IOA_MASK              ( 0xFU << TPU_TIORL_IOA_OFFSET )
    1750 #define TPU_TIORL_IOB_OFFSET    ( 4U )
    1751 #define TPU_TIORL_IOB_MASK              ( 0xFU << TPU_TIORL_IOB_OFFSET )
     1821#define TPU_TIOR_IOA_OFFSET     ( 0U )
     1822#define TPU_TIOR_IOA_MASK               ( 0xFU << TPU_TIOR_IOA_OFFSET )
     1823#define TPU_TIOR_IOB_OFFSET     ( 4U )
     1824#define TPU_TIOR_IOB_MASK               ( 0xFU << TPU_TIOR_IOB_OFFSET )
     1825#define TPU_TIORH_IOA_OFFSET    ( 0U )
     1826#define TPU_TIORH_IOA_MASK              ( 0xFU << TPU_TIORH_IOA_OFFSET )
     1827#define TPU_TIORH_IOB_OFFSET    ( 4U )
     1828#define TPU_TIORH_IOB_MASK              ( 0xFU << TPU_TIORH_IOB_OFFSET )
    17521829#define TPU_TIORL_IOC_OFFSET    ( 0U )
    17531830#define TPU_TIORL_IOC_MASK              ( 0xFU << TPU_TIORL_IOC_OFFSET )
     
    18061883#define TPU_TSYR_SYNC5_BIT              ( 0x01U << 5U )
    18071884
     1885#define TPU0_TIER_ADDR                  ( ( volatile uint8_t __evenaccess *)0x00088114 )
     1886#define TPU1_TIER_ADDR                  ( ( volatile uint8_t __evenaccess *)0x00088124 )
     1887#define TPU2_TIER_ADDR                  ( ( volatile uint8_t __evenaccess *)0x00088134 )
     1888#define TPU3_TIER_ADDR                  ( ( volatile uint8_t __evenaccess *)0x00088144 )
     1889#define TPU4_TIER_ADDR                  ( ( volatile uint8_t __evenaccess *)0x00088154 )
     1890#define TPU5_TIER_ADDR                  ( ( volatile uint8_t __evenaccess *)0x00088164 )
     1891#define TPU6_TIER_ADDR                  ( ( volatile uint8_t __evenaccess *)0x00088184 )
     1892#define TPU7_TIER_ADDR                  ( ( volatile uint8_t __evenaccess *)0x00088194 )
     1893#define TPU8_TIER_ADDR                  ( ( volatile uint8_t __evenaccess *)0x000881A4 )
     1894#define TPU9_TIER_ADDR                  ( ( volatile uint8_t __evenaccess *)0x000881B4 )
     1895#define TPU10_TIER_ADDR                 ( ( volatile uint8_t __evenaccess *)0x000881C4 )
     1896#define TPU11_TIER_ADDR                 ( ( volatile uint8_t __evenaccess *)0x000881D4 )
     1897
     1898#define TPU0_TCNT_ADDR                  ( ( volatile uint16_t __evenaccess *)0x00088116 )
     1899#define TPU1_TCNT_ADDR                  ( ( volatile uint16_t __evenaccess *)0x00088126 )
     1900#define TPU2_TCNT_ADDR                  ( ( volatile uint16_t __evenaccess *)0x00088136 )
     1901#define TPU3_TCNT_ADDR                  ( ( volatile uint16_t __evenaccess *)0x00088146 )
     1902#define TPU4_TCNT_ADDR                  ( ( volatile uint16_t __evenaccess *)0x00088156 )
     1903#define TPU5_TCNT_ADDR                  ( ( volatile uint16_t __evenaccess *)0x00088166 )
     1904#define TPU6_TCNT_ADDR                  ( ( volatile uint16_t __evenaccess *)0x00088186 )
     1905#define TPU7_TCNT_ADDR                  ( ( volatile uint16_t __evenaccess *)0x00088196 )
     1906#define TPU8_TCNT_ADDR                  ( ( volatile uint16_t __evenaccess *)0x000881A6 )
     1907#define TPU9_TCNT_ADDR                  ( ( volatile uint16_t __evenaccess *)0x000881B6 )
     1908#define TPU10_TCNT_ADDR                 ( ( volatile uint16_t __evenaccess *)0x000881C6 )
     1909#define TPU11_TCNT_ADDR                 ( ( volatile uint16_t __evenaccess *)0x000881D6 )
     1910
    18081911/*
    18091912 * RSPI
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/arch/rx630_gcc/scif.h

    r337 r364  
    5959#define SCI5_BASE       ((uint32_t)(SCI5_SMR_ADDR))
    6060#define SCI6_BASE       ((uint32_t)(SCI6_SMR_ADDR))
     61#define SCI7_BASE       ((uint32_t)(SCI7_SMR_ADDR))
     62#define SCI8_BASE       ((uint32_t)(SCI8_SMR_ADDR))
     63#define SCI9_BASE       ((uint32_t)(SCI9_SMR_ADDR))
     64#define SCI10_BASE      ((uint32_t)(SCI10_SMR_ADDR))
     65#define SCI11_BASE      ((uint32_t)(SCI11_SMR_ADDR))
     66/* SCI12は下記のSCI_NUMが使用できない */
    6167
    6268/* モジュールストップコントロールレジスタB bit */
    63 #define SCI_NUM(base)   ((base - SCI0_BASE) / 0x20)
     69#define SCI_NUM(base)   (((intptr_t)base - SCI0_BASE) / 0x20)
    6470#define SCI_MSTPCRB_BIT(base)   (1 << (31 - SCI_NUM(base)))
    6571
     
    7076#define CLK_F64 UINT_C(0x03)
    7177
    72 /* シリアルモードレジスタ(SMR) */
     78/* シリアルモードレジスタ(SMR */
    7379#define CKS                     UINT_C(0x03)
     80#define MP                      UINT_C(0x04)
    7481#define STOP            UINT_C(0x08)
    7582#define PM                      UINT_C(0x10)
     
    8087#define ASYNC_8BIT      UINT_C(0x40)
    8188
    82 /* シリアルコントロールレジスタ(SCR) */
     89/* シリアルコントロールレジスタ(SCR */
    8390#define CKE                     UINT_C(0x03)
    8491#define TEIE            UINT_C(0x04)
     
    94101#define ORER            UINT_C(0x20)
    95102
    96 /* シリアル拡張モードレジスタ(SEMR) */
     103/* スマートカードモードレジスタ(SCMR) */
     104#define SMIF            UINT_C(0x01)
     105#define SINV            UINT_C(0x04)
     106#define SDIR            UINT_C(0x08)
     107#define BCP2            UINT_C(0x80)
     108
     109/* シリアル拡張モードレジスタ(SEMR) */
    97110#define ACS0            UINT_C(0x01)
    98111#define ABCS            UINT_C(0x10)
     112#define NFEN            UINT_C(0x20)
     113
     114/* I2C モードレジスタ1(SIMR1) */
     115#define IICM            UINT_C(0x01)
     116
     117/* I2C モードレジスタ2(SIMR2) */
     118#define IICINTM         UINT_C(0x01)
     119#define IICCSC          UINT_C(0x02)
     120#define IICACKT         UINT_C(0x20)
     121
     122/* I2C モードレジスタ3(SIMR2) */
     123#define IICSTAREQ       UINT_C(0x01)
     124#define IICRSTAREQ      UINT_C(0x02)
     125#define IICSTPREQ       UINT_C(0x04)
     126#define IICSTIF         UINT_C(0x08)
     127
     128/* I2C ステータスレジスタ(SISR) */
     129#define IICACKR         UINT_C(0x01)
     130
     131/* SPI モードレジスタ(SPMR) */
     132#define SSE                     UINT_C(0x01)
     133#define CTSE            UINT_C(0x02)
     134#define MSS                     UINT_C(0x04)
     135#define CKPOL           UINT_C(0x40)
     136#define CKPH            UINT_C(0x80)
    99137
    100138#define SCI_SCR_FLG_ENABLE      (RE | TE)
     
    104142 *  SCIレジスタの番地の定義
    105143 */
    106 #define SCI_SMR(base)           ((uint8_t *)(base + 0x00U))
    107 #define SCI_BRR(base)           ((uint8_t *)(base + 0x01U))
    108 #define SCI_SCR(base)           ((uint8_t *)(base + 0x02U))
    109 #define SCI_TDR(base)           ((uint8_t *)(base + 0x03U))
    110 #define SCI_SSR(base)           ((uint8_t *)(base + 0x04U))
    111 #define SCI_RDR(base)           ((uint8_t *)(base + 0x05U))
    112 #define SCI_SCMR(base)          ((uint8_t *)(base + 0x06U))
    113 #define SCI_SEMR(base)          ((uint8_t *)(base + 0x07U))
    114 #define SCI_SNFR(base)          ((uint8_t *)(base + 0x08U))
     144#define SCI_SMR(base)           ((uint8_t *)((intptr_t)base + 0x00U))
     145#define SCI_BRR(base)           ((uint8_t *)((intptr_t)base + 0x01U))
     146#define SCI_SCR(base)           ((uint8_t *)((intptr_t)base + 0x02U))
     147#define SCI_TDR(base)           ((uint8_t *)((intptr_t)base + 0x03U))
     148#define SCI_SSR(base)           ((uint8_t *)((intptr_t)base + 0x04U))
     149#define SCI_RDR(base)           ((uint8_t *)((intptr_t)base + 0x05U))
     150#define SCI_SCMR(base)          ((uint8_t *)((intptr_t)base + 0x06U))
     151#define SCI_SEMR(base)          ((uint8_t *)((intptr_t)base + 0x07U))
     152#define SCI_SNFR(base)          ((uint8_t *)((intptr_t)base + 0x08U))
     153#define SCI_SIMR1(base)         ((uint8_t *)((intptr_t)base + 0x09U))
     154#define SCI_SIMR2(base)         ((uint8_t *)((intptr_t)base + 0x0AU))
     155#define SCI_SIMR3(base)         ((uint8_t *)((intptr_t)base + 0x0BU))
     156#define SCI_SISR(base)          ((uint8_t *)((intptr_t)base + 0x0CU))
     157#define SCI_SPMR(base)          ((uint8_t *)((intptr_t)base + 0x0DU))
    115158
    116159#ifndef TOPPERS_MACRO_ONLY
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/sample/Makefile

    r342 r364  
    403403
    404404#
     405#  並列makeのための依存関係の定義
     406#
     407$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     408$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     409                                                                                                                | offset.timestamp
     410
     411#
    405412#  特別な依存関係の定義
    406413#
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/syssvc/serial.h

    r359 r364  
    7979extern ER               serial_opn_por(ID portid) throw();
    8080extern ER               serial_cls_por(ID portid) throw();
    81 extern ER_UINT  serial_rea_dat(ID portid, char *buf, uint_t len) throw();
     81extern ER_UINT  serial_trea_dat(ID portid, char *buf, uint_t len, TMO tmout) throw();
    8282extern ER_UINT  serial_wri_dat(ID portid, const char *buf, uint_t len) throw();
    8383extern ER               serial_ctl_por(ID portid, uint_t ioctl) throw();
    8484extern ER               serial_ref_por(ID portid, T_SERIAL_RPOR *pk_rpor) throw();
     85
     86Inline ER_UINT  serial_rea_dat(ID portid, char *buf, uint_t len)
     87{
     88        return serial_trea_dat(portid, buf, len, TMO_FEVR);
     89}
    8590
    8691/*
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/syssvc/tSerialAdapter.c

    r337 r364  
    8383 */
    8484ER_UINT
    85 serial_rea_dat(ID portid, char *buf, uint_t len)
     85serial_trea_dat(ID portid, char *buf, uint_t len, TMO tmout)
    8686{
    8787        if (sns_dpn()) {                                /* コンテキストのチェック */
     
    9292        }
    9393
    94         return(cSerialPort_read(portid - 1, buf, len));
     94        return(cSerialPort_read(portid - 1, buf, len, tmout));
    9595}
    9696
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/syssvc/tSerialPort.cdl

    r337 r364  
    5757        ER              open(void);
    5858        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);
    6060        ER_UINT write([in,size_is(length)] const char *buffer, [in] uint_t length);
    6161        ER              control([in] uint_t ioControl);
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/syssvc/tSerialPortMain.c

    r359 r364  
    397397 */
    398398ER_UINT
    399 eSerialPort_read(CELLIDX idx, char *buffer, uint_t length)
     399eSerialPort_read(CELLIDX idx, char *buffer, uint_t length, TMO tmout)
    400400{
    401401        CELLCB  *p_cellcb;
     
    423423        while (reacnt < length) {
    424424                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                        }
    427433                }
    428434                SVC(rercd = serialPort_readChar(p_cellcb, &c), rercd);
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_citrus_gcc/gr_citrus.ld

    r337 r364  
    1111                KEEP(*(.fvectors))
    1212        } > ROM
    13         .text 0xFFF00000 : AT (0xFFF00000)
     13        .text 0xFFE00000 : AT (0xFFE00000)
    1414        {
    1515                *(.text)
     
    5656                *(C_2)
    5757                *(C)
     58                _mrb_preset_const_start = .;
     59                *(.mrb_preset_const)
     60                _mrb_preset_const_end = .;
    5861                _erodata = .;
    5962        } > ROM
     
    111114                . = ALIGN(2);
    112115                *(D_2)
     116                _mrb_preset_data_start = .;
     117                *(.mrb_preset_data)
     118                _mrb_preset_data_end = .;
    113119                _edata = .;
    114120        } > RAM
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_citrus_gcc/target_kernel_impl.c

    r337 r364  
    6868
    6969        /* IOポート初期化 */
    70         /* P25を出力ポートにする */
    71         sil_wrb_mem(PORT2_PDR_ADDR,
    72                 sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B5_BIT);
    7370        /* PA0, PA1, PA2, PA6を出力ポートにする */
    7471        sil_wrb_mem(PORTA_PDR_ADDR,
     
    8178         *  シリアルポートの設定
    8279         */
    83         serial_opn_por(1);
    8480
    8581        /* ポートP20をTxD0, ポートP21をRxD0に */
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_citrus_gcc/target_kernel_impl.h

    r337 r364  
    107107 */
    108108#ifdef TOPPERS_ENABLE_TRACE
    109 #define LOG_DSP_ENTER   ( 1 )
    110 #define LOG_DSP_LEAVE   ( 1 )
    111 #define LOG_INH_ENTER   ( 1 )
    112 #define LOG_INH_LEAVE   ( 1 )
    113 #define LOG_EXC_ENTER   ( 1 )
    114 #define LOG_EXC_LEAVE   ( 1 )
     109#define LOG_DSP_ENTER(dspno)
     110#define LOG_DSP_LEAVE(dspno)
     111#define LOG_INH_ENTER(inhno)
     112#define LOG_INH_LEAVE(inhno)
     113#define LOG_EXC_ENTER(excno)
     114#define LOG_EXC_LEAVE(excno)
    115115#else
    116 #define LOG_DSP_ENTER   ( 0 )
    117 #define LOG_DSP_LEAVE   ( 0 )
    118 #define LOG_INH_ENTER   ( 0 )
    119 #define LOG_INH_LEAVE   ( 0 )
    120 #define LOG_EXC_ENTER   ( 0 )
    121 #define LOG_EXC_LEAVE   ( 0 )
     116#undef LOG_DSP_ENTER
     117#undef LOG_DSP_LEAVE
     118#undef LOG_INH_ENTER
     119#undef LOG_INH_LEAVE
     120#undef LOG_EXC_ENTER
     121#undef LOG_EXC_LEAVE
    122122#endif
    123123
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_citrus_gcc/target_sym.def

    r337 r364  
    1 LOG_DSP_ENTER
    2 LOG_DSP_LEAVE
    3 LOG_INH_ENTER
    4 LOG_INH_LEAVE
    5 LOG_EXC_ENTER
    6 LOG_EXC_LEAVE
    71SIL_DLY_TIM1
    82SIL_DLY_TIM2
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_citrus_gcc/target_timer.c

    r337 r364  
    398398         */
    399399        if (probe_int(INTNO_TIMER1)) {
    400                 if(local_cnt < 0x8000)
     400                if (local_cnt < 0x8000)
    401401                        local_eut += 1;
    402402        }
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/gr_sakura.ld

    r337 r364  
    5656                *(C_2)
    5757                *(C)
     58                _mrb_preset_const_start = .;
     59                *(.mrb_preset_const)
     60                _mrb_preset_const_end = .;
    5861                _erodata = .;
    5962        } > ROM
     
    111114                . = ALIGN(2);
    112115                *(D_2)
     116                _mrb_preset_data_start = .;
     117                *(.mrb_preset_data)
     118                _mrb_preset_data_end = .;
    113119                _edata = .;
    114120        } > RAM
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_kernel_impl.c

    r337 r364  
    8181         *  シリアルポートの設定
    8282         */
    83         serial_opn_por(1);
    8483
    8584        /* ポートP20をTxD0, ポートP21をRxD0に */
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_kernel_impl.h

    r337 r364  
    107107 */
    108108#ifdef TOPPERS_ENABLE_TRACE
    109 #define LOG_DSP_ENTER   ( 1 )
    110 #define LOG_DSP_LEAVE   ( 1 )
    111 #define LOG_INH_ENTER   ( 1 )
    112 #define LOG_INH_LEAVE   ( 1 )
    113 #define LOG_EXC_ENTER   ( 1 )
    114 #define LOG_EXC_LEAVE   ( 1 )
     109#define LOG_DSP_ENTER(dspno)
     110#define LOG_DSP_LEAVE(dspno)
     111#define LOG_INH_ENTER(inhno)
     112#define LOG_INH_LEAVE(inhno)
     113#define LOG_EXC_ENTER(excno)
     114#define LOG_EXC_LEAVE(excno)
    115115#else
    116 #define LOG_DSP_ENTER   ( 0 )
    117 #define LOG_DSP_LEAVE   ( 0 )
    118 #define LOG_INH_ENTER   ( 0 )
    119 #define LOG_INH_LEAVE   ( 0 )
    120 #define LOG_EXC_ENTER   ( 0 )
    121 #define LOG_EXC_LEAVE   ( 0 )
     116#undef LOG_DSP_ENTER
     117#undef LOG_DSP_LEAVE
     118#undef LOG_INH_ENTER
     119#undef LOG_INH_LEAVE
     120#undef LOG_EXC_ENTER
     121#undef LOG_EXC_LEAVE
    122122#endif
    123123
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_sym.def

    r337 r364  
    1 LOG_DSP_ENTER
    2 LOG_DSP_LEAVE
    3 LOG_INH_ENTER
    4 LOG_INH_LEAVE
    5 LOG_EXC_ENTER
    6 LOG_EXC_LEAVE
    71SIL_DLY_TIM1
    82SIL_DLY_TIM2
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/target/gr_sakura_gcc/target_timer.c

    r337 r364  
    398398         */
    399399        if (probe_int(INTNO_TIMER1)) {
    400                 if(local_cnt < 0x8000)
     400                if (local_cnt < 0x8000)
    401401                        local_eut += 1;
    402402        }
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/Makefile.tinet

    r337 r364  
    9393               in_subr.o route_cfg.o
    9494TINET_CFG_COBJS := $(TINET_CFG_COBJS) tinet_cfg.o
     95TINET_CFG2_OUT_SRCS := $(TINET_CFG2_OUT_SRCS) tinet_cfg.h tinet_cfg.c
    9596
    9697#  IPv6
     
    328329
    329330        CFG_COBJS := $(CFG_COBJS) $(TINET_CFG_COBJS)
     331        CFG2_OUT_SRCS := $(CFG2_OUT_SRCS) $(TINET_CFG2_OUT_SRCS)
    330332
    331333        CLEAN_FILES := $(CLEAN_FILES) $(TINET_CFG_OUT) $(MAKE_TINET_LIB)
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/net/ethernet.h

    r359 r364  
    9898#endif  /* of #ifndef IF_ETHER_NIC_HDR_ALIGN */
    9999
    100 #if defined(__RX) || defined(_MSC_VER)
    101100#if defined(__RX)
    102101#pragma pack
    103 #else
     102#elif defined(_MSC_VER)
    104103#pragma pack(push, 1)
    105104#endif
     105
     106#if defined(__RX) || defined(_MSC_VER)
     107
    106108typedef struct t_ether_header {
    107109
     
    116118        uint16_t        type;
    117119        } T_ETHER_HDR;
    118 #if defined(__RX)
    119 #pragma packoption
    120 #else
    121 #pragma pack(pop)
    122 #endif
    123120
    124121#elif defined(TOPPERS_S810_CLG3_85)     /* of #if defined(__RX) */
     
    166163        uint8_t         lladdr[ETHER_ADDR_LEN];
    167164        } __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
    168171
    169172/*
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/net/net_asp.cfg

    r337 r364  
    4141
    4242INCLUDE("net/net.cfg");
     43
     44#ifndef NOUSE_MPF_NET_BUF
    4345
    4446/*
     
    169171                });
    170172#endif  /* of #if defined(NUM_MPF_NET_BUF6_65536) && NUM_MPF_NET_BUF6_65536 > 0 */
     173
     174#endif
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/net/net_buf.c

    r337 r364  
    6868#include <netinet/tcp_var.h>
    6969
     70#ifndef NOUSE_MPF_NET_BUF
     71
    7072/*
    7173 *  関数
     
    226228#endif  /* of #if defined(NUM_MPF_NET_BUF_128) && NUM_MPF_NET_BUF_128 > 0 */
    227229
    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) */
    229247
    230248#if defined(NUM_MPF_NET_BUF_64) && NUM_MPF_NET_BUF_64 > 0
     
    242260#endif  /* of #if defined(NUM_MPF_NET_BUF_64) && NUM_MPF_NET_BUF_64 > 0 */
    243261
    244 #endif  /* of #if defined(_IP4_CFG) */
     262#if defined(_IP4_CFG) && !defined(_IP6_CFG)
    245263
    246264#if defined(NUM_MPF_NET_BUF_CSEG) && NUM_MPF_NET_BUF_CSEG > 0
     
    257275                },
    258276#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) */
    259279
    260280        };
     
    307327
    308328        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) {
    310330                        (*buf)->idix  = (uint8_t)ix;
    311331                        (*buf)->len   = (uint16_t)minlen;
     
    318338                        return error;
    319339                        }
    320                 else if (ix == 0 || net_buf_table[ix].size > maxlen)
     340                ix --;
     341                if (ix < 0 || net_buf_table[ix].size > maxlen)
    321342                        break;
    322                 ix --;
    323343                }
    324344
     
    349369
    350370        while (1) {
    351                 if ((error = tget_mpf((ID)net_buf_table[ix].index, (void*)buf,
     371                if ((error = tget_mpf((ID)net_buf_table[ix].index, (void **)buf,
    352372                                      ix == sizeof(net_buf_table) / sizeof(T_NET_BUF_ENTRY) - 1 ? tmout : TMO_POL)) == E_OK) {
    353373                        (*buf)->idix  = (uint8_t)ix;
    354374                        (*buf)->len   = net_buf_table[ix].size;
    355375                        (*buf)->flags = 0;
     376#ifdef IF_ETHER_MULTI_NIC
     377                        (*buf)->conn_pos = 0;
     378#endif
    356379
    357380#if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF
     
    450473                /* 固定メモリプールに返す。*/
    451474
    452 #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF
    453                 net_buf_table[buf->idix].busies --;
     475                int idix = buf->idix;
     476#if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF
     477                net_buf_table[idix].busies --;
    454478#endif
    455                 if ((error = rel_mpf((ID)net_buf_table[buf->idix].index, buf)) != E_OK) {
    456                         syslog(LOG_WARNING, "[NET BUF] %s, ID=%d.", itron_strerror(error), buf->idix);
     479                if ((error = rel_mpf((ID)net_buf_table[idix].index, buf)) != E_OK) {
     480                        syslog(LOG_WARNING, "[NET BUF] %s, ID=%d.", itron_strerror(error), idix);
    457481                        }
    458482                }
     
    505529        return (uint_t)net_buf_table[0].size;
    506530        }
     531
     532#else
     533#include <stdlib.h>
     534
     535/*
     536 *  tget_net_buf_ex -- ネットワークバッファを獲得する(拡張機能)。
     537 */
     538
     539ER
     540tget_net_buf_ex (T_NET_BUF **buf, uint_t minlen, uint_t maxlen, ATR nbatr, TMO tmout)
     541{
     542        uint_t len = (minlen > maxlen) ? minlen : maxlen;
     543        *buf = (T_NET_BUF *)malloc(sizeof(T_NET_BUF) - sizeof(((T_NET_BUF *)0)->buf) + len);
     544        if (*buf == NULL)
     545                return E_NOMEM;
     546
     547        (*buf)->idix = 0;
     548        (*buf)->len = (uint16_t)len;
     549        (*buf)->flags = 0;
     550
     551        return E_OK;
     552        }
     553
     554/*
     555 *  tget_net_buf -- ネットワークバッファを獲得する(互換)。
     556 */
     557
     558ER
     559tget_net_buf (T_NET_BUF **buf, uint_t len, TMO tmout)
     560{
     561        return tget_net_buf_ex(buf, len, len, NBA_SEARCH_ASCENT, tmout);
     562        }
     563
     564
     565/*
     566 * rel_net_buf -- ネットワークバッファを返却する。
     567 */
     568
     569ER
     570rel_net_buf (T_NET_BUF *buf)
     571{
     572        free(buf);
     573
     574        return E_OK;
     575        }
     576
     577
     578/*
     579 * net_buf_max_siz -- ネットワークバッファの最大サイズを返す。
     580 */
     581
     582uint_t
     583net_buf_max_siz (void)
     584{
     585        return (uint_t)IF_PDU_SIZE;
     586        }
     587
     588#endif
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/net/net_rename.h

    r337 r364  
    7171#define tget_net_buf_ex         _tinet_tget_net_buf_ex
    7272#define tget_net_buf            _tinet_tget_net_buf
    73 #define rel_net_buf             _tinet_rel_net_buf
    74 #define rus_net_buf             _tinet_rus_net_buf
    75 #define net_buf_siz             _tinet_net_buf_siz
     73#define rel_net_buf                     _tinet_rel_net_buf
     74#define rus_net_buf                     _tinet_rus_net_buf
     75#define net_buf_siz                     _tinet_net_buf_siz
    7676#define net_buf_max_siz         _tinet_net_buf_max_siz
    7777#define nbuf_get_tbl            _tinet_nbuf_get_tbl
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netapp/Makefile.netapp

    r337 r364  
    183183                NETAPP_COBJS := $(NETAPP_COBJS) udp6_echo_cli.o
    184184                NETAPP_KERNEL_CFG := $(NETAPP_KERNEL_CFG) $(NETAPP_DIRS)/udp6_echo_cli.cfg
    185        
     185
    186186                ifeq ($(SUPPORT_INET4),true)
    187187                        ifeq ($(USE_UDP4_ECHO_CLI),true)
     
    191191                        endif
    192192                endif
    193         else
     193                else
    194194                ifeq ($(SUPPORT_INET4),true)
    195195                        SUPPORT_UDP = true
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netapp/dbg_cons.c

    r337 r364  
    666666                    "IX Expire State      MAC Address       IP Address\n");
    667667
    668         /* expire の単位は [ms]。*/
     668        /* expire の単位は [us]。*/
    669669        get_tim(&now);
    670670        cache = nd6_get_cache();
     
    705705                    "IX Expire MAC Address       IP Address\n");
    706706
    707         /* expire の単位は [ms]。*/
     707        /* expire の単位は [us]。*/
    708708        cache = arp_get_cache();
    709709        for (ix = 0; ix < NUM_ARP_ENTRY; ix ++) {
     
    753753        WAI_NET_CONS_PRINTF();
    754754        get_tim(&now);
    755         cons_printf(portid, "ネットワーク統計情報\t経過時間[ms]\t%lu\t", now);
     755        cons_printf(portid, "ネットワーク統計情報\t経過時間[us]\t%lu\t", now);
    756756        if (now > (1000 * 3600 * 24))
    757757                cons_printf(portid, "%3lu日 %2lu時間 %2lu分 %2lu秒\n",
     
    938938                }
    939939
    940         cons_printf(portid, "\nネットワーク統計情報\t経過時間[ms]\t%lu\t", now);
     940        cons_printf(portid, "\nネットワーク統計情報\t経過時間[us]\t%lu\t", now);
    941941        if (now > (1000 * 3600 * 24))
    942942                cons_printf(portid, "%3lu日 %2lu時間 %2lu分 %2lu秒\n",
     
    10651065        WAI_NET_CONS_PRINTF();
    10661066        get_tim(&now);
    1067         cons_printf(portid, "ネットワークバッファ情報\t経過時間[ms]\t%u\n", now);
     1067        cons_printf(portid, "ネットワークバッファ情報\t経過時間[us]\t%u\n", now);
    10681068
    10691069#if NET_COUNT_ENABLE
     
    15771577        cons_printf(portid, " IP Address\n");
    15781578
    1579         /* expire の単位は [ms]。*/
     1579        /* expire の単位は [us]。*/
    15801580        get_tim(&now);
    15811581        dr = nd6_get_drl(&count);
     
    22982298
    22992299        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);
    23022302        cons_printf(portid, "  NUM_IP6_DAD_COUNT:        %5d\n",     NUM_IP6_DAD_COUNT);
    23032303        cons_printf(portid, "  NUM_ND6_CACHE_ENTRY:      %5d\n",     NUM_ND6_CACHE_ENTRY);
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netapp/dhcp4_cli.c

    r340 r364  
    20312031
    20322032                        /* 休止する。*/
    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                        }
    20352037                        else {
    20362038                                syslog(LOG_NOTICE, "[DHCP4C] server not available, go to sleep, error: %s.", itron_strerror(error));
     
    21582160
    21592161                        /* 休止する。*/
    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                        }
    21622166                        else {
    21632167                                syslog(LOG_NOTICE, "[DHCP4C] server not available, go to sleep, error: %s.", itron_strerror(ct->error));
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netapp/wwws.c

    r337 r364  
    708708        len += put_str(cepid, srbuf, response);
    709709        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]",
    711711                           cepid, len, (finish - start) * 1000 / SYSTIM_HZ);
    712712        return E_OK;
     
    16091609
    16101610        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]",
    16121612                           cepid, len, (finish - start) * 1000 / SYSTIM_HZ);
    16131613        return E_OK;
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netdev/if_btusb/if_btusb.c

    r337 r364  
    150150
    151151T_IF_SOFTC if_softc = {
    152         {0,},                                           /* ネットワークインタフェースのアドレス   */
     152        {{0,}},                                         /* ネットワークインタフェースのアドレス   */
    153153        0,                                                      /* 送信タイムアウト                     */
    154154        &btusb_softc,                           /* ディバイス依存のソフトウェア情報     */
     
    691691}
    692692
    693 static int usb_acl_out_active = 0;
    694 static int usb_command_active = 0;
    695 
    696 static int usb_can_send_packet_now(uint8_t packet_type)
    697 {
    698         switch (packet_type) {
    699         case HCI_COMMAND_DATA_PACKET:
    700                 return !usb_command_active;
    701         case HCI_ACL_DATA_PACKET:
    702                 return !usb_acl_out_active;
    703         default:
    704                 return 0;
    705         }
    706 }
    707 
    708693// single instance
    709694static const hci_transport_t hci_transport_usb =
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet/icmp6.h

    r337 r364  
    291291typedef struct t_router_advert_hdr {
    292292        T_ICMP6_HDR     hdr;
    293         uint32_t        reachable;              /* [ms] 到達可能時間  */
    294         uint32_t        retransmit;             /* [ms] 近隣要請送信間隔        */
     293        uint32_t        reachable;              /* [us] 到達可能時間  */
     294        uint32_t        retransmit;             /* [us] 近隣要請送信間隔        */
    295295        /* この後にオプションが続く */
    296296        } __attribute__((packed, aligned(2))) T_ROUTER_ADVERT_HDR;
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet/in4_subr.c

    r337 r364  
    287287
    288288        /* 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;
    290292                return error;
     293                }
    291294
    292295        /* 4 オクテット境界までパディングで埋める。*/
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet/in_itron.h

    r337 r364  
    6262#define TFN_TCP_ALL             (0)
    6363
    64 #define TEV_TCP_RCV_OOB         (-0x201)
     64#define TEV_TCP_RCV_OOB         (0x201)
    6565
    6666/* UDP 関係 */
     
    7575#define TFN_UDP_ALL             (0)
    7676
    77 #define TEV_UDP_RCV_DAT         (-0x221)
     77#define TEV_UDP_RCV_DAT         (0x221)
    7878
    7979/* 一般 */
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet/tcp_input.c

    r337 r364  
    13641364        NTOHS(tcph->dport);
    13651365
     1366        /* SDU 長 より 緊急ポインタが大きい場合 */
     1367        if (tcph->urp > tcph->sum)
     1368                goto drop;
     1369
    13661370find_cep:
    13671371
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet/tcp_output.c

    r337 r364  
    369369                tcph->flags |= TCP_FLG_URG;
    370370                }
    371         else
     371        else {
     372                tcph->urp = 0;
    372373                cep->snd_up  = cep->snd_una;
     374                }
    373375
    374376#endif  /* of #ifdef TCP_CFG_EXTENTIONS */
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet/tcp_usrreq.c

    r337 r364  
    897897
    898898        /* tcp_rcv_buf の割当て長をリセットする。*/
    899         cep->rcv_buf_len = 0;
     899        cep->rcv_buf_len -= len;
    900900
    901901        /* 通信端点のロックを解除する。*/
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet/udp_var.h

    r337 r364  
    101101typedef ER      (*t_udp_callback)(ID cepid, FN fncd, void *p_parblk);
    102102
     103typedef 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
    103113/*
    104114 *  UDP 通信端点
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet/udpn_input.c

    r337 r364  
    7575{
    7676        T_UDP_HDR       *udph;
    77         uint_t          len;
     77        T_UDP_RCV_DAT_PARA para;
    7878
    7979        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);
    8181
    8282        if (cep->rcv_tskid != TA_NULL) {        /* 非ノンブロッキングコールでペンディング中 */
     
    9898                /* データをバッファに移す。*/
    9999                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));
    101101                syscall(rel_net_buf(input));
    102102
     
    104104
    105105#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);
    107107#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*)&para.len);
    109109#endif
    110110                else
     
    121121
    122122#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);
    124124#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(&para.rep4.ipaddr, input);
     130#else
     131                para.rep6.portno = ntohs(udph->sport);
     132                IN_COPY_TO_HOST(&para.rep6.ipaddr, input);
     133#endif
     134                (*cep->callback)(GET_UDP_CEPID(cep), TEV_UDP_RCV_DAT, (void*)&para.len);
    126135#endif
    127136                /*
     
    129138                 *  データを読み出さなかったことになるので、捨てる。
    130139                 */
    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                        }
    133145                }
    134146        else {
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet/udpn_usrreq.c

    r337 r364  
    411411                return E_NOEXS;
    412412#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
    415414        switch (optname) {
    416415        case IP_MULTICAST_LOOP:
     
    488487                return E_NOEXS;
    489488#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
    492490        switch (optname) {
    493491        case IP_MULTICAST_LOOP:
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet/udpn_usrreq_nblk.c

    r337 r364  
    122122
    123123#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);
    125125#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);
    127127#endif
    128128                else
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet6/in6_subr.c

    r337 r364  
    369369
    370370        /* 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;
    372374                return error;
     375                }
    373376
    374377        /* 4 オクテット境界までパディングで埋める。*/
     
    662665 *  in6_rtredirect -- ルーティング表にエントリを登録する。
    663666 *
    664  *    注意: 引数 tmo の単位は [ms]。
     667 *    注意: 引数 tmo の単位は [us]。
    665668 */
    666669
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet6/in6_var.h

    r337 r364  
    184184         * vltime と pltime は、追加/変更してからの相対時間
    185185         */
    186         uint32_t        vltime;         /* 有効時間 [ms]                    */
    187         uint32_t        pltime;         /* 推奨有効時間 [ms]          */
     186        uint32_t        vltime;         /* 有効時間 [us]                    */
     187        uint32_t        pltime;         /* 推奨有効時間 [us]          */
    188188        } __attribute__((packed, aligned(2)))T_IN6_ADDR_LIFETIME;
    189189
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet6/nd6.c

    r337 r364  
    353353                        if (nd6_cache[mix].hold != NULL) {
    354354                                syscall(rel_net_buf(nd6_cache[mix].hold));
     355                                nd6_cache[mix].hold = NULL;
    355356                                }
    356357                        fix = mix;
     
    562563                        if (ln->hold != NULL) {
    563564                                syscall(rel_net_buf(ln->hold));
     565                                ln->hold = NULL;
    564566                                }
    565567
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet6/nd6.h

    r337 r364  
    8181        T_NET_BUF       *hold;
    8282        TMO             tmout;
    83         SYSTIM          expire;         /* [ms] 有効時間が切れる時刻      */
     83        SYSTIM          expire;         /* [us] 有効時間が切れる時刻      */
    8484        T_IF_ADDR       ifaddr;
    8585        uint8_t         state;
     
    183183typedef struct t_def_router {
    184184        T_IN6_ADDR      addr;
    185         SYSTIM          expire;         /* [ms] 有効時間が切れる時刻      */
    186         uint32_t        lifetime;       /* [ms] 有効時間                    */
     185        SYSTIM          expire;         /* [us] 有効時間が切れる時刻      */
     186        uint32_t        lifetime;       /* [us] 有効時間                    */
    187187        uint16_t        plistmap;       /* プレフィックスマップ           */
    188188        uint8_t         flags;          /* ルータ通知のフラグ            */
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/netinet6/nd6_rtr.c

    r337 r364  
    999999                return;
    10001000
    1001         /* ルータ要請ヘッダを設定する。*/
    1002         rsh = GET_ROUTER_SOLICIT_HDR(output, IF_IP6_ROUTER_SOLICIT_HDR_OFFSET);
    1003         rsh->hdr.type       = ND_ROUTER_SOLICIT;
    1004         rsh->hdr.code       = 0;
    1005         rsh->nd_rs_reserved = 0;
     1001        /* ルータ要請ヘッダを設定する。*/
     1002        rsh = GET_ROUTER_SOLICIT_HDR(output, IF_IP6_ROUTER_SOLICIT_HDR_OFFSET);
     1003        rsh->hdr.type       = ND_ROUTER_SOLICIT;
     1004        rsh->hdr.code       = 0;
     1005        rsh->nd_rs_reserved = 0;
    10061006
    10071007        /* チェックサムを計算する。*/
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/tcpip_sym.def

    r337 r364  
    1515TMO_UDP_OUTPUT
    1616TMO_ICMP_OUTPUT
     17TMO_IGMP_OUTPUT
    1718TMO_ND6_NS_OUTPUT
    1819TMO_ND6_NA_OUTPUT
  • asp3_tinet_ecnl_rx/trunk/asp3_dcre/tinet/tinet_asp.cfg

    r337 r364  
    7373INCLUDE("netinet/if_ether.cfg");
    7474INCLUDE("netinet/ip.cfg");
     75INCLUDE("netinet/ip_igmp.cfg");
    7576INCLUDE("netinet/tcp.cfg");
    7677INCLUDE("netinet/udp.cfg");
  • asp3_tinet_ecnl_rx/trunk/bnep_bridge/.cproject

    r337 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1809108923" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1675556141" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    39                                                         <builder buildPath="${workspace_loc:/bnep_bridge}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1493716846" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="false" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     39                                                        <builder buildPath="${workspace_loc:/bnep_bridge}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1493716846" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
    4040                                                        <tool id="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen.941811569" name="Library Generator" superClass="com.renesas.cdt.managedbuild.gcc.rx.tool.libgen">
    4141                                                                <option id="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary.51731195" name="Select Library" superClass="com.renesas.cdt.managedbuild.gcc.rx.option.selectlibrary" useByScannerDiscovery="true" value="com.renesas.cdt.managedbuild.gcc.core.option.librarygenerator.settings.selectLibrary.newLib" valueType="enumerated"/>
  • asp3_tinet_ecnl_rx/trunk/bnep_bridge/Debug/Makefile

    r342 r364  
    153153endif
    154154
     155TINETDIR =
     156
    155157#
    156158#  共通コンパイルオプションの定義
     
    174176        -I$(SRCDIR)/../usbhost/src \
    175177        $(INCLUDES)
    176 LDFLAGS := $(LDFLAGS) -Wl,-Map=$(OBJNAME).map,--cref -L.
     178LDFLAGS := $(LDFLAGS) -L.
    177179LIBS := $(LIBS) $(CXXLIBS)
    178180CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
     
    204206endif
    205207
    206 TINETDIR =
    207208ifdef TINETDIR
    208209        #
     
    210211        #
    211212        NO_USE_TINET_LIBRARY = true
    212        
     213
    213214        #  ネットワークインタフェースの選択、何れか一つ選択する。
    214215        NET_IF = ether
    215        
     216
    216217        #  イーサネット・ディバイスドライバの選択
    217218        NET_DEV = if_rx62n
     
    255256all: tecs | $(DEPDIR)
    256257#       @$(MAKE) check
    257         @$(MAKE) check $(OBJNAME).bin
     258#       @$(MAKE) check $(OBJNAME).bin
    258259#       @$(MAKE) check $(OBJNAME).srec
     260        @$(MAKE) check $(OBJNAME).mot
    259261else
    260262#all: check
    261 all: check $(OBJNAME).bin
     263#all: check $(OBJNAME).bin
    262264#all: check $(OBJNAME).srec
     265all: check $(OBJNAME).mot
    263266endif
    264267
     
    424427
    425428#
     429#  並列makeのための依存関係の定義
     430#
     431$(APPL_OBJS) $(SYSSVC_OBJS): | kernel_cfg.timestamp
     432$(APPL_ASMOBJS) $(SYSSVC_ASMOBJS) $(KERNEL_ASMOBJS) $(CFG_ASMOBJS): \
     433                                                                                                                | offset.timestamp
     434
     435#
    426436#  特別な依存関係の定義
    427437#
     
    432442#
    433443$(OBJFILE): $(ALL_OBJS) $(LIBS_DEP)
    434         $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) \
     444        $(LINK) $(CFLAGS) $(LDFLAGS) $(OBJ_LDFLAGS) -o $(OBJFILE) -Wl,-Map=$(OBJNAME).map,--cref \
    435445                        $(START_OBJS) $(APPL_OBJS) $(SYSSVC_OBJS) $(CFG_OBJS) \
    436446                        -Wl,--start-group $(ALL_LIBS) -Wl,--end-group $(END_OBJS)
     
    461471$(OBJNAME).srec: $(OBJFILE)
    462472        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
     473
     474$(OBJNAME).mot: $(OBJFILE)
     475        $(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).mot
    463476
    464477#
  • asp3_tinet_ecnl_rx/trunk/bnep_bridge/src/main.c

    r359 r364  
    117117static void main_timeout();
    118118
     119extern int ntshell_exit;
     120
    119121int uart_read(char *buf, int cnt, void *extobj)
    120122{
    121         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;
    122157}
    123158
     
    125160{
    126161        return serial_wri_dat(SIO_PORTID, buf, cnt);
    127 }
    128 
    129 unsigned char ntstdio_xi(struct ntstdio_t *handle)
    130 {
    131         char buf[1];
    132         if(serial_rea_dat(SIO_PORTID, buf, 1) != 1)
    133                 return -EIO;
    134         return buf[0];
    135 }
    136 
    137 void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)
    138 {
    139         char buf[1];
    140         buf[0] = c;
    141         serial_wri_dat(SIO_PORTID, buf, 1);
    142162}
    143163
     
    154174        main_initialize();
    155175
    156         ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, NULL);
     176        ntshell_init(&ntshell, uart_read, uart_write, cmd_execute, &main_obj);
    157177        ntshell_set_prompt(&ntshell, "NTShell>");
    158178        ntshell_execute(&ntshell);
     
    172192        ER ret;
    173193
    174         ntshell_task_init();
     194#ifdef TOPPERS_OMIT_TECS
     195        serial_opn_por(SIO_PORTID);
     196#endif
     197        serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV);
     198
     199        ntshell_task_init(uart_read, uart_write, &main_obj);
    175200
    176201        main_obj.timer = TMO_FEVR;
  • asp3_tinet_ecnl_rx/trunk/bnep_bridge/src/main.cfg

    r348 r364  
    4747INCLUDE("if_rx62n.cfg");
    4848INCLUDE("ntshell_main.cfg");
     49INCLUDE("mbed_api.cfg");
    4950
    5051CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task, MAIN_PRIORITY, MAIN_STACK_SIZE, NULL });
  • asp3_tinet_ecnl_rx/trunk/btstack/.cproject

    r337 r364  
    2222                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2323                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    24                                 <option id="toolchain.version" value="4.8.4.201703"/>
     24                                <option id="toolchain.version" value="4.8.4.201803"/>
    2525                        </storageModule>
    2626                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3737                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1540847398" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    3838                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections.171236353" name="Function sections (-ffunction-sections)" superClass="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections" value="true" valueType="boolean"/>
     39                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.cpu.64bitdouble.1850688291" name="Make the double data type be 64 bits in size" superClass="com.renesas.cdt.managedbuild.gcc.core.option.cpu.64bitdouble" value="true" valueType="boolean"/>
    3940                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.580898471" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    4041                                                        <builder buildPath="${workspace_loc:/btstack}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.592607904" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
  • asp3_tinet_ecnl_rx/trunk/curl-7.57.0/.cproject

    r337 r364  
    2424                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2525                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    26                                 <option id="toolchain.version" value="4.8.4.201703"/>
     26                                <option id="toolchain.version" value="4.8.4.201803"/>
    2727                        </storageModule>
    2828                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3939                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.1575092980" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    4040                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections.954466902" name="Function sections (-ffunction-sections)" superClass="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections" value="true" valueType="boolean"/>
     41                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.cpu.64bitdouble.439244273" name="Make the double data type be 64 bits in size" superClass="com.renesas.cdt.managedbuild.gcc.core.option.cpu.64bitdouble" value="true" valueType="boolean"/>
    4142                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.786062905" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    4243                                                        <builder buildPath="${workspace_loc:/curl}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.685132589" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
  • asp3_tinet_ecnl_rx/trunk/curl-7.57.0/lib/curl_config.h

    r337 r364  
    7272
    7373/* to disable verbose strings */
    74 /* #undef CURL_DISABLE_VERBOSE_STRINGS */
     74#define CURL_DISABLE_VERBOSE_STRINGS 1
    7575
    7676/* Definition to make a library symbol externally visible. */
     
    573573
    574574/* Define to 1 if you have the signal function. */
    575 #define HAVE_SIGNAL 1
     575/* #undef HAVE_SIGNAL */
    576576
    577577/* Define to 1 if you have the <signal.h> header file. */
     
    948948
    949949/* If you want to build curl with the built-in manual */
    950 #define USE_MANUAL 1
     950/* #undef USE_MANUAL */
    951951
    952952/* if mbedTLS is enabled */
  • asp3_tinet_ecnl_rx/trunk/curl-7.57.0/lib/mprintf.c

    r337 r364  
    997997{
    998998        unsigned int r, i, j, w, f;
    999         unsigned long v;
     999        unsigned long long v;
    10001000        char s[16], c, d, *p;
    10011001
     
    10221022                        w = w * 10 + c - '0';
    10231023                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                        }
    10251031                }
    10261032                else if (c == 'h') {    /* Prefix: Size is short int */
     
    10551061
    10561062                /* 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)) {
    10611072                        v = 0 - v;
    10621073                        f |= 8;
  • asp3_tinet_ecnl_rx/trunk/musl-1.1.18/.cproject

    r337 r364  
    2424                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2525                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    26                                 <option id="toolchain.version" value="4.8.4.201703"/>
     26                                <option id="toolchain.version" value="4.8.4.201803"/>
    2727                        </storageModule>
    2828                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3838                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.deviceCommand.614640820" name="DeviceCommand" superClass="com.renesas.cdt.managedbuild.gcc.core.option.deviceCommand" useByScannerDiscovery="false" value="R5F563NB" valueType="string"/>
    3939                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.223830224" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    40                                                         <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.gcc.core.option.warnings.otherFlags.1638796861" name="Other Flags" superClass="com.renesas.cdt.managedbuild.gcc.core.option.warnings.otherFlags" valueType="stringList">
     40                                                        <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.gcc.core.option.warnings.otherFlags.1638796861" name="Other Flags" superClass="com.renesas.cdt.managedbuild.gcc.core.option.warnings.otherFlags" useByScannerDiscovery="false" valueType="stringList">
    4141                                                                <listOptionValue builtIn="false" value="-Werror=implicit-function-declaration"/>
    4242                                                                <listOptionValue builtIn="false" value="-Werror=implicit-int"/>
     
    4444                                                                <listOptionValue builtIn="false" value="-Werror=pointer-arith"/>
    4545                                                        </option>
    46                                                         <option id="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections.730653111" name="Function sections (-ffunction-sections)" superClass="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections" value="true" valueType="boolean"/>
     46                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections.730653111" name="Function sections (-ffunction-sections)" superClass="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections" useByScannerDiscovery="true" value="true" valueType="boolean"/>
     47                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.cpu.64bitdouble.1900028908" name="Make the double data type be 64 bits in size" superClass="com.renesas.cdt.managedbuild.gcc.core.option.cpu.64bitdouble" useByScannerDiscovery="true" value="true" valueType="boolean"/>
    4748                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1287712370" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    4849                                                        <builder buildPath="${workspace_loc:/musl}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.1709148240" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
  • asp3_tinet_ecnl_rx/trunk/musl-1.1.18/arch/rx/crt_arch.h

    r342 r364  
     1#ifndef __c2__
    12#define main sta_ker
     3#else
     4#define main dummy_start
     5static int dummy_start(int argc, char **argv, char **envp)
     6{
     7        return 0;
     8}
     9#endif
  • asp3_tinet_ecnl_rx/trunk/musl-1.1.18/arch/rx/syscall_arch.h

    r342 r364  
    8787long __syscall_ret(unsigned long), __syscall_nr(long nr, ...);
    8888
    89 #define __syscall(n, ...) n(__VA_ARGS__)
    90 #define __syscall_cp(n, ...) n(__VA_ARGS__)
    91 #define syscall(n, ...) __syscall_ret(__syscall(n, __VA_ARGS__))
    92 #define syscall_cp(n, ...) __syscall_ret(__syscall_cp(n, __VA_ARGS__))
     89#define __syscall0(n) n()
     90#define __syscall1(n,a) n(__scc(a))
     91#define __syscall2(n,a,b) n(__scc(a),__scc(b))
     92#define __syscall3(n,a,b,c) n(__scc(a),__scc(b),__scc(c))
     93#define __syscall4(n,a,b,c,d) n(__scc(a),__scc(b),__scc(c),__scc(d))
     94#define __syscall5(n,a,b,c,d,e) n(__scc(a),__scc(b),__scc(c),__scc(d),__scc(e))
     95#define __syscall6(n,a,b,c,d,e,f) n(__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f))
     96#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))
    9397
    94 #define __syscall2(n, ...) n(__VA_ARGS__)
    95 #define __syscall3(n, ...) n(__VA_ARGS__)
    96 #define __syscall_cp2(n, ...) n(__VA_ARGS__)
    97 #define __syscall_cp3(n, ...) n(__VA_ARGS__)
     98#define __syscall_cp0(n) n()
     99#define __syscall_cp1(n,a) n(__scc(a))
     100#define __syscall_cp2(n,a,b) n(__scc(a),__scc(b))
     101#define __syscall_cp3(n,a,b,c) n(__scc(a),__scc(b),__scc(c))
     102#define __syscall_cp4(n,a,b,c,d) n(__scc(a),__scc(b),__scc(c),__scc(d))
     103#define __syscall_cp5(n,a,b,c,d,e) n(__scc(a),__scc(b),__scc(c),__scc(d),__scc(e))
     104#define __syscall_cp6(n,a,b,c,d,e,f) n(__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f))
     105#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))
     106
     107#define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n
     108#define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,)
     109#define __SYSCALL_CONCAT_X(a,b) a##b
     110#define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X(a,b)
     111#define __SYSCALL_DISP(b,...) __SYSCALL_CONCAT(b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__)
     112
     113#define syscall(...) __syscall_ret(__SYSCALL_DISP(__syscall, __VA_ARGS__))
     114#define syscall_cp(...) __syscall_ret(__SYSCALL_DISP(__syscall_cp, __VA_ARGS__))
    98115#endif
  • asp3_tinet_ecnl_rx/trunk/musl-1.1.18/include/bits/alltypes.h

    r340 r364  
    11#if defined(_MSC_VER) || defined(__c2__)
     2#define asctime musl_asctime
     3#define calloc musl_calloc
     4#define clock musl_clock
    25#define close musl_close
    36#define execvp musl_execvp
     7#define exit musl_exit
    48#define fclose musl_fclose
    59#define fdopen musl_fdopen
    610#define fflush musl_fflush
     11#define fma _musl_fma
     12#define fgetc musl_fgetc
    713#define fopen musl_fopen
     14#define fprintf musl_fprintf
     15#define fputc musl_fputc
    816#define free musl_free
    917#define fwrite musl_fwrite
     
    1119#define localtime musl_localtime
    1220#define lseek musl_lseek
     21#define malloc musl_malloc
     22#define memmove musl_memmove
    1323#define open musl_open
     24#define perror musl_perror
    1425#define read musl_read
    15 #define malloc musl_malloc
    16 #define calloc musl_calloc
    1726#define realloc musl_realloc
     27#define strftime musl_strftime
     28#define strnlen musl_strnlen
     29#define strtoul musl_strtoul
    1830#define time musl_time
     31#define tzset musl_tzset
    1932#define unlink musl_unlink
    20 #define perror musl_perror
    21 #define strnlen musl_strnlen
    22 #define strftime musl_strftime
    23 #define asctime musl_asctime
    24 #define tzset musl_tzset
    25 #define clock musl_clock
    2633#endif
    2734#ifdef _MSC_VER
     
    7279
    7380#if defined(__NEED_time_t) && !defined(__DEFINED_time_t)
     81#if defined(_MSC_VER) || defined(__c2__)
     82typedef long long time_t;
     83#else
    7484typedef long time_t;
     85#endif
    7586#define __DEFINED_time_t
    7687#endif
  • asp3_tinet_ecnl_rx/trunk/musl-1.1.18/include/math.h

    r337 r364  
    1515#define NAN       __builtin_nanf("")
    1616#define INFINITY  __builtin_inff()
    17 #else
     17#elif !defined(_MSC_VER)
    1818#define NAN       (0.0f/0.0f)
    1919#define INFINITY  1e5000f
     20#else
     21#define _HUGE_ENUF  1e+300
     22#define INFINITY   ((float)(_HUGE_ENUF * _HUGE_ENUF))
     23#define NAN        ((float)(INFINITY * 0.0F))
    2024#endif
    2125
  • asp3_tinet_ecnl_rx/trunk/musl-1.1.18/include/stdarg.h

    r337 r364  
    1010#include <bits/alltypes.h>
    1111
     12#if !defined(_MSC_VER) && !defined(__c2__)
     13
    1214#define va_start(v,l)   __builtin_va_start(v,l)
    1315#define va_end(v)       __builtin_va_end(v)
    1416#define va_arg(v,l)     __builtin_va_arg(v,l)
    1517#define va_copy(d,s)    __builtin_va_copy(d,s)
     18
     19#else
     20
     21#define _INTSIZEOF(n)          ((sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1))
     22
     23#define __crt_va_start(ap, v)   ((void)(ap = (va_list)&(v) + _INTSIZEOF(v)))
     24#define __crt_va_arg(ap, t)     (*(t*)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)))
     25#define __crt_va_end(ap)        ((void)(ap = (va_list)0))
     26
     27#define va_start __crt_va_start
     28#define va_arg   __crt_va_arg
     29#define va_end   __crt_va_end
     30#define va_copy(destination, source) ((destination) = (source))
     31
     32#endif
    1633
    1734#ifdef __cplusplus
  • asp3_tinet_ecnl_rx/trunk/musl-1.1.18/src/env/__libc_start_main.c

    r337 r364  
    8484        libc_start_init();
    8585}
     86#undef exit
     87#define exit(x) x
    8688#endif
    8789
  • asp3_tinet_ecnl_rx/trunk/musl-1.1.18/src/internal/syscall.h

    r342 r364  
    4444#endif
    4545#define __syscall7(n,a,b,c,d,e,f,g) (__syscall)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f),__scc(g))
    46 #endif
     46
    4747#define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n
    4848#define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,)
     
    5050#define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X(a,b)
    5151#define __SYSCALL_DISP(b,...) __SYSCALL_CONCAT(b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__)
    52 #if 0
     52#endif
    5353#define __syscall(...) __SYSCALL_DISP(__syscall,__VA_ARGS__)
    54 #define syscall(...) __syscall_ret(__syscall(__VA_ARGS__))
    55 #endif
     54//#define syscall(...) __syscall_ret(__syscall(__VA_ARGS__))
     55
    5656#define socketcall __socketcall
    5757#define socketcall_cp __socketcall_cp
     
    6464#define __syscall_cp5(n,a,b,c,d,e) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),0)
    6565#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
    6767#define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp,__VA_ARGS__)
    68 #define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__))
    69 #endif
     68//#define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__))
    7069
    7170#ifndef SYSCALL_USE_SOCKETCALL
  • asp3_tinet_ecnl_rx/trunk/musl-1.1.18/src/stdlib/strtol.c

    r337 r364  
    5858
    5959weak_alias(strtol, __strtol_internal);
     60#if defined(_MSC_VER) || defined(__c2__)
     61weak_alias(musl_strtoul, __strtoul_internal);
     62#else
    6063weak_alias(strtoul, __strtoul_internal);
     64#endif
    6165weak_alias(strtoll, __strtoll_internal);
    6266weak_alias(strtoull, __strtoull_internal);
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet.c

    r337 r364  
    5656
    5757/*
     58 * インスタンスリスト通知の送信
     59 */
     60ER ecn_ntf_inl()
     61{
     62        return _ecn_tsk_ntf_inl();
     63}
     64
     65/*
    5866 * ECHONETオブジェクト参照
    5967 * 引数
     
    393401                return E_PAR;
    394402
    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);
    396404        if (a_ret != E_OK) {
    397405                *ppk_esv = NULL;
     
    425433        a_ret = _ecn_fbs_del(a_fbs);
    426434        return a_ret;
     435}
     436
     437/*
     438 * 応答電文の送信元ノードを取得する
     439 */
     440ID 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));
    427457}
    428458
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet.h

    r337 r364  
    6767typedef enum _echonet_enod_id
    6868{
    69         ENOD_NOT_MATCH_ID       = -1,
     69        ENOD_NOT_MATCH_ID       = -1,                   /* アドレスID登録なし */
    7070        ENOD_MULTICAST_ID       = 0,                    /* マルチキャストアドレスID */
    7171        ENOD_LOCAL_ID           = 1,                    /* 自ノードアドレスID */
     
    279279extern const ID ecn_svc_taskid;
    280280extern 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;
     281extern const ID ecn_api_dataqueueid;
     282extern const ID ecn_svc_dataqueueid;
     283extern const ID ecn_udp_dataqueueid;
    284284#ifndef ECHONET_USE_MALLOC
    285285extern const ID ecn_mempoolid;
     
    309309
    310310/*
     311 * インスタンスリスト通知の送信
     312 */
     313ER ecn_ntf_inl();
     314
     315/*
    311316 * ECHONETオブジェクト参照
    312317 */
     
    392397 */
    393398ER ecn_rel_esv(T_EDATA *pk_esv);
     399
     400/*
     401 * 応答電文の送信元ノードを取得する
     402 */
     403ID ecn_get_enod(T_EDATA *pk_esv);
    394404
    395405/*
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet.trb

    r337 r364  
    634634const ID _echonet_ecn_svc_taskid = ECHONET_SVC_TASK;
    635635const 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;
     636const ID _echonet_ecn_api_dataqueueid = ECHONET_API_DATAQUEUE;
     637const ID _echonet_ecn_svc_dataqueueid = ECHONET_SVC_DATAQUEUE;
     638const ID _echonet_ecn_udp_dataqueueid = ECHONET_UDP_DATAQUEUE;
    639639#ifndef ECHONET_USE_MALLOC
    640640const ID _echonet_ecn_mempoolid = ECHONET_MEMPOOL;
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_asp.cfg

    r337 r364  
    5151
    5252/*
    53  * ECHONET Lite API用メールボックス
     53 * ECHONET Lite API用データキュー
    5454 */
    55 CRE_DTQ(ECHONET_API_MAILBOX, { TA_TFIFO, 1, NULL });
     55CRE_DTQ(ECHONET_API_DATAQUEUE, { TA_TFIFO, ECHONET_API_DATAQUEUE_COUNT, NULL });
    5656
    5757/*
    58  * ECHONET Lite サービス処理タスク用メールボックス
     58 * ECHONET Lite サービス処理タスク用データキュー
    5959 */
    60 CRE_DTQ(ECHONET_SVC_MAILBOX, { TA_TFIFO, 1, NULL });
     60CRE_DTQ(ECHONET_SVC_DATAQUEUE, { TA_TFIFO, ECHONET_SVC_DATAQUEUE_COUNT, NULL });
    6161
    6262/*
     
    6666
    6767/*
    68  * ECHONET Lite UDP通信処理用メールボックス
     68 * ECHONET Lite UDP通信処理用データキュー
    6969 */
    70 CRE_DTQ(ECHONET_UDP_MAILBOX, { TA_TFIFO, 1, NULL });
     70CRE_DTQ(ECHONET_UDP_DATAQUEUE, { TA_TFIFO, ECHONET_UDP_DATAQUEUE_COUNT, NULL });
    7171
    7272/*
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_rename.h

    r337 r364  
    4747#define ecn_svc_taskid          _echonet_ecn_svc_taskid
    4848#define ecn_udp_taskid          _echonet_ecn_udp_taskid
    49 #define ecn_api_mailboxid       _echonet_ecn_api_mailboxid
    50 #define ecn_svc_mailboxid       _echonet_ecn_svc_mailboxid
    51 #define ecn_udp_mailboxid       _echonet_ecn_udp_mailboxid
     49#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
    5252#define ecn_mempoolid           _echonet_ecn_mempoolid
    5353#define ecn_udp_cepid           _echonet_ecn_udp_cepid
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_task.c

    r337 r364  
    7777static bool_t g_release_esv;
    7878
    79 ER _ecn_tsk_ntf_inl(intptr_t fa_exinf);
    80 
    8179ER _ecn_tsk_snd_dtq(ECN_FBS_ID fa_rsp_fbs, bool_t from_app)
    8280{
    8381        ER      a_ret;
    8482        T_MSG *msg = (T_MSG *)fa_rsp_fbs.ptr;
    85         ID dtqid = ecn_udp_mailboxid;
     83        ID dtqid = ecn_udp_dataqueueid;
    8684        int i;
    8785#ifdef ECN_DBG_PUT_ENA
     
    9088        if (from_app && (((T_EDATA *)fa_rsp_fbs.ptr)->hdr.edata.esv == ESV_INFC)) {
    9189                g_api_tid = ((T_EDATA *)fa_rsp_fbs.ptr)->hdr.ecn_hdr.tid;
    92                 dtqid = ecn_svc_mailboxid;
     90                dtqid = ecn_svc_dataqueueid;
    9391        }
    9492        else {
     
    9896                                g_api_tid = ((T_EDATA *)fa_rsp_fbs.ptr)->hdr.ecn_hdr.tid;
    9997
    100                         dtqid = ecn_udp_mailboxid;
     98                        dtqid = ecn_udp_dataqueueid;
    10199                        break;
    102100                case ENOD_LOCAL_ID:
    103101                        if (from_app)
    104                                 dtqid = ecn_svc_mailboxid;
     102                                dtqid = ecn_svc_dataqueueid;
    105103                        else
    106                                 dtqid = ecn_api_mailboxid;
     104                                dtqid = ecn_api_dataqueueid;
    107105                        break;
    108106                case ENOD_API_ID:
    109                         dtqid = ecn_api_mailboxid;
     107                        dtqid = ecn_api_dataqueueid;
    110108                        break;
    111109                default:
     
    121119                                switch (eobjcb_table[i].profile->eobjatr) {
    122120                                case EOBJ_SYNC_REMOTE_NODE:
    123                                         dtqid = ecn_udp_mailboxid;
     121                                        dtqid = ecn_udp_dataqueueid;
    124122                                        break;
    125123                                case EOBJ_ASYNC_REMOTE_NODE:
    126                                         dtqid = ecn_svc_mailboxid;
     124                                        dtqid = ecn_svc_dataqueueid;
    127125                                        break;
    128126                                default:
     
    131129                        }
    132130                        else {
    133                                 dtqid = ecn_udp_mailboxid;
     131                                dtqid = ecn_udp_dataqueueid;
    134132                        }
    135133                        break;
     
    242240#endif
    243241
    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);
    245243                if ((a_ret != E_OK) && (a_ret != E_TMOUT)) {
    246244                        ECN_DBG_PUT_2("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret));
     
    867865                g_release_esv = false;
    868866
    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)",
    870868                        p_esv->edata.esv);
    871869                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);
    873871                if (a_ret != E_OK) {
    874872                        syslog(LOG_WARNING, "_ecn_tsk_ecn_msg() : snd_dtq() result = %d:%s", a_ret, itron_strerror(a_ret));
     
    20242022        req.ptr->hdr.type = ECN_MSG_INTERNAL;
    20252023        req.ptr->hdr.sender.dtqid = sender;
    2026         req.ptr->hdr.target.dtqid = ecn_svc_mailboxid;
     2024        req.ptr->hdr.target.dtqid = ecn_svc_dataqueueid;
    20272025        req.ptr->hdr.reply.dtqid = sender;
    20282026
     
    20522050
    20532051        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;
    20552053        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;
    20572055
    20582056        *pk_res = res;
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_task.h

    r337 r364  
    110110} T_ECN_INTERNAL_MSG;
    111111
     112/*
     113 * インスタンスリスト通知の送信
     114 */
     115ER _ecn_tsk_ntf_inl();
    112116/*
    113117 * 要求電文作成
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_udp6_task.c

    r337 r364  
    151151
    152152        /* 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));
    156156                goto lb_except;
    157157        }
     
    201201                a_timer = ECHONET_UDP_TASK_GET_TIMER;
    202202
    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);
    204204                if ((a_ret != E_OK) && (a_ret != E_TMOUT)) {
    205205                        ECN_DBG_PUT_2("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret));
     
    261261        req.ptr->hdr.type = ECN_MSG_INTERNAL;
    262262        req.ptr->hdr.sender.dtqid = sender;
    263         req.ptr->hdr.target.dtqid = ecn_udp_mailboxid;
     263        req.ptr->hdr.target.dtqid = ecn_udp_dataqueueid;
    264264        req.ptr->hdr.reply.dtqid = sender;
    265265
     
    289289
    290290        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;
    292292        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;
    294294
    295295        *pk_res = res;
     
    416416                else if (memcmp(&a_dst.ipaddr, &locl, sizeof(a_dst.ipaddr)) == 0) {
    417417                        /* 送信先が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)",
    419419                                ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv);
    420420
     
    462462
    463463        switch (fncd) {
    464         case TFN_UDP_CRE_CEP:
     464        case TEV_UDP_RCV_DAT:
    465465        case TFN_UDP_RCV_DAT:
    466466                /* ECN_CAP_PUT("[UDP ECHO SRV] callback_nblk_udp() recv: %u", *(int *)p_parblk); */
     
    488488                return E_OK;
    489489
     490        case TFN_UDP_CRE_CEP:
    490491        case TFN_UDP_SND_DAT:
    491492                break;
    492493        default:
    493494                ECN_CAP_PUT_2("[UDP ECHO SRV] fncd:0x%04X(%s)", -fncd,
     495                        (fncd == TEV_UDP_RCV_DAT ? "TEV_UDP_RCV_DAT" :
    494496                        (fncd == TFN_UDP_CRE_CEP ? "TFN_UDP_CRE_CEP" :
    495497                        (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")))));
    497499
    498500                error = E_PAR;
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_udp6_task.h

    r337 r364  
    7171#endif /* ECHONET_UDP_TASK_STACK_SIZE */
    7272
    73 #ifndef NUM_ECHONET_UDP_MAILBOX
    74 #define NUM_ECHONET_UDP_MAILBOX 10
    75 #endif /* NUM_ECHONET_UDP_MAILBOX */
     73#ifndef NUM_ECHONET_UDP_DATAQUEUE
     74#define NUM_ECHONET_UDP_DATAQUEUE       10
     75#endif /* NUM_ECHONET_UDP_DATAQUEUE */
    7676
    7777/*
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_udp_task.c

    r337 r364  
    146146
    147147        /* 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));
    151151                goto lb_except;
    152152        }
     
    206206                a_timer = ECHONET_UDP_TASK_GET_TIMER;
    207207
    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);
    209209                if ((a_ret != E_OK) && (a_ret != E_TMOUT)) {
    210210                        ECN_DBG_PUT_2("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret));
     
    266266        req.ptr->hdr.type = ECN_MSG_INTERNAL;
    267267        req.ptr->hdr.sender.dtqid = sender;
    268         req.ptr->hdr.target.dtqid = ecn_udp_mailboxid;
     268        req.ptr->hdr.target.dtqid = ecn_udp_dataqueueid;
    269269        req.ptr->hdr.reply.dtqid = sender;
    270270
     
    294294
    295295        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;
    297297        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;
    299299
    300300        *pk_res = res;
     
    420420                else if (a_dst.ipaddr == MAKE_IPV4_ADDR(127,0,0,1)) {
    421421                        /* 送信先が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)",
    423423                                ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv);
    424424
     
    466466
    467467        switch (fncd) {
    468         case TFN_UDP_CRE_CEP:
     468        case TEV_UDP_RCV_DAT:
    469469        case TFN_UDP_RCV_DAT:
    470470                /* ECN_CAP_PUT("[UDP ECHO SRV] callback_nblk_udp() recv: %u", *(int *)p_parblk); */
     
    492492                return E_OK;
    493493
     494        case TFN_UDP_CRE_CEP:
    494495        case TFN_UDP_SND_DAT:
    495496                break;
    496497        default:
    497498                ECN_CAP_PUT_2("[UDP ECHO SRV] fncd:0x%04X(%s)", -fncd,
     499                        (fncd == TEV_UDP_RCV_DAT ? "TEV_UDP_RCV_DAT" :
    498500                        (fncd == TFN_UDP_CRE_CEP ? "TFN_UDP_CRE_CEP" :
    499501                        (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")))));
    501503
    502504                error = E_PAR;
  • asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_udp_task.h

    r337 r364  
    7171#endif /* ECHONET_UDP_TASK_STACK_SIZE */
    7272
    73 #ifndef NUM_ECHONET_UDP_MAILBOX
    74 #define NUM_ECHONET_UDP_MAILBOX 10
    75 #endif /* NUM_ECHONET_UDP_MAILBOX */
     73#ifndef NUM_ECHONET_UDP_DATAQUEUE
     74#define NUM_ECHONET_UDP_DATAQUEUE       10
     75#endif /* NUM_ECHONET_UDP_DATAQUEUE */
    7676
    7777/*
  • asp3_tinet_ecnl_rx/trunk/ntshell/fatfs/ffarch.c

    r359 r364  
    4343#include <stdlib.h>
    4444#include <string.h>
     45#include <stdbool.h>
    4546#include "t_stdlib.h"
    4647#include "syssvc/serial.h"
    4748#include "syssvc/syslog.h"
    4849#include "target_syssvc.h"
     50#include "target_stddef.h"
    4951#include "kernel_cfg.h"
    5052#include "diskio.h"
    5153#include "mmc_rspi.h"
    5254#include "ff.h"
     55#include "ffarch.h"
    5356#include "util/ntstdio.h"
    5457#include "mbed_api.h"
     
    5962        FFS_IDLE,
    6063        FFS_RETRY_WAIT,
     64        FFS_DISABLE,
    6165};
    6266
     
    118122FATFS RomDisk;
    119123
    120 //gpio_t ins;
    121 //sdfs_t sdfs;
    122124#define WP() false
    123125
     
    132134bool_t SD_begin();
    133135
    134 #define P7_8 1
    135 #define P8_5 2
    136 #define P8_6 3
    137 #define P8_3 4
    138 #define P8_4 5
    139 
    140 int ffarch_init()
    141 {
    142         int result = -1;
    143 
    144         /* SD_CD */
    145         //gpio_init_in(&ins, P7_8);
    146 
    147         /* SDカードを初期化 */
    148         //sdfs_init(&sdfs, P8_5, P8_6, P8_3, P8_4, "sd");
    149 
     136void ffarch_init(void)
     137{
     138#ifdef TOPPERS_GRCITRUS
     139        ffarch_state = FFS_DISABLE;
     140        ffarch_timer = TMO_FEVR;
     141        mmc_rspi_prev_status = STA_NODISK;
     142#else
    150143        ffarch_state = FFS_IDLE;
    151144        ffarch_timer = 0;
     
    156149
    157150        act_tsk(FFARCH_TASK);
    158 
     151#endif
    159152        if (romdisk_init()) {
    160153                ntstdio_printf(&ntstdio, "ROM disk (0:) OK!\n");
     
    163156                ntstdio_printf(&ntstdio, "ROM disk (0:) NG!\n");
    164157        }
    165 
    166         serial_ctl_por(SIO_PORTID, IOCTL_FCSND | IOCTL_FCRCV);
    167158}
    168159
    169160void ffarch_initialize()
    170161{
     162#ifdef TOPPERS_GRCITRUS
     163        ffarch_state = FFS_DISABLE;
     164        ffarch_timer = TMO_FEVR;
     165        mmc_rspi_prev_status = STA_NODISK;
     166#else
    171167        sta_cyc(MMC_RSPI_CYC);
     168#endif
    172169}
    173170
     
    284281}
    285282
    286 int ffarch_get_timer()
     283int ffarch_get_timer(void)
    287284{
    288285        return ffarch_timer;
     
    299296}
    300297
    301 void ffarch_timeout()
     298void ffarch_timeout(void)
    302299{
    303300        if (ffarch_timer != 0)
     
    317314                //goto case FFS_IDLE;
    318315        case FFS_IDLE:
    319                 /* SDカードが入れられた場合 */
    320                 if (((mmc_rspi_prev_status & STA_NODISK) != 0) && ((mmc_rspi_status() & STA_NODISK) == 0)) {
     316                /* SDカードが入れられた場合 */
     317                if (((mmc_rspi_prev_status & STA_NODISK) != 0) && ((mmc_rspi_status() & STA_NODISK) == 0)) {
    321318                        ntstdio_printf(&ntstdio, "SD card initializing ...\n");
    322319
  • asp3_tinet_ecnl_rx/trunk/ntshell/fatfs/ffarch.h

    r359 r364  
    4141#define FFARCH_STACK_SIZE               512
    4242
    43 void ffarch_init();
     43void ffarch_init(void);
    4444void ffarch_task(intptr_t exinf);
    45 int ffarch_get_timer();
     45int ffarch_get_timer(void);
    4646void ffarch_progress(int elapse);
    47 void ffarch_timeout();
     47void ffarch_timeout(void);
    4848
    4949void sdfs_cychdr(intptr_t exinf);
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/echonet_app_config.h

    r337 r364  
    4040
    4141#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通信処理用データキュー */
    4246
    4347/*
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/fdtable.c

    r359 r364  
    4545#include "target_syssvc.h"
    4646#ifndef NTSHELL_NO_SOCKET
     47#include <tinet_defs.h>
    4748#include <tinet_config.h>
     49#include <net/net.h>
     50#include <net/net_endian.h>
    4851#include <netinet/in.h>
    4952#include <netinet/in_itron.h>
     
    5558#include <net/net.h>
    5659#include <net/if_var.h>
     60#include <netinet/udp.h>
    5761#include <netinet/udp_var.h>
    5862#include <netinet/tcp.h>
    5963#include <netinet/tcp_var.h>
     64#include <net/net_buf.h>
    6065#endif
    6166#include "ff.h"
     
    6974#define IO_TYPE_DIR             3
    7075#define IO_TYPE_TCP             4
    71 #define IO_TYPE_UDP             5
     76#define IO_TYPE_UDP     5
    7277
    7378static struct _IO_FILE fd_table[8 * sizeof(FLGPTN)] = {
     
    8590                        continue;
    8691
     92                memset(fp, 0, sizeof(struct _IO_FILE));
    8793                fp->fd = fd;
    8894                fp->type = type;
     
    280286#endif
    281287
     288void 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
    282299struct fd_events {
    283300        int count;
     
    304321        }
    305322
    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));
    309335        evts.count = 0;
    310336
    311337        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));
    312344        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));
    316351                return evts.count;
    317352        }
    318353        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));
    322354                return 0;
    323355        }
     
    441473        struct _IO_FILE *fp = tcpid_to_fd(cepid);
    442474        FLGPTN flgptn = 0;
     475        ER ret;
     476        int len;
    443477
    444478        if (fp == NULL)
     
    449483
    450484        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
    451505        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
    452520                if (fp->readevt_w == fp->readevt_r) fp->readevt_w++;
    453521
     
    484552        struct _IO_FILE *fp = udpid_to_fd(cepid);
    485553        FLGPTN flgptn = 0;
     554        int len;
    486555
    487556        if (fp == NULL)
     
    492561
    493562        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        }
    494598        case TFN_UDP_CRE_CEP:
     599                return E_OK;
     600
    495601        case TFN_UDP_RCV_DAT:
     602                len = *(int *)p_parblk;
     603                if (len <= 0)
     604                        return E_OK;
     605
    496606                if (fp->readevt_w == fp->readevt_r) fp->readevt_w++;
    497607
     
    524634ER shell_get_evts(struct fd_events *evts, TMO tmout)
    525635{
    526         ER ret;
    527         FLGPTN waitptn, flgptn = 0, readfds = 0, writefds = 0;
    528         struct _IO_FILE *fp = NULL;
    529636        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();
    532647
    533648#ifndef NTSHELL_NO_SOCKET
    534         waitptn = *((FLGPTN *)&evts->errorfds);
     649                waitptn = *((FLGPTN *)&evts->errorfds);
    535650#else
    536         waitptn = *((FLGPTN *)&evts->readfds) | *((FLGPTN *)&evts->errorfds);
     651                waitptn = *((FLGPTN *)&evts->readfds) | *((FLGPTN *)&evts->errorfds);
    537652#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];
    540655
    541656#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                                }
    548694                        }
    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                                }
    551705                        }
    552706                }
    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);
    557751                                count++;
    558752                        }
    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;
    561756                        }
    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)
    587775                        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
    623781        evts->count = count;
    624782
     
    676834}
    677835
    678 ssize_t shell_send(int fd, const void *buf, size_t len, int flags)
    679 {
    680         return -ENOMEM;
    681 }
    682 
    683836ssize_t shell_sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *addr, socklen_t alen)
    684837{
     
    691844}
    692845
    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)
     846ssize_t shell_recvfrom(int fd, void *__restrict buf, size_t len, int flags, struct sockaddr *__restrict addr, socklen_t *__restrict alen)
    699847{
    700848        return -ENOMEM;
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/mbed_api.c

    r337 r364  
    11/*
    22 *  TOPPERS ECHONET Lite Communication Middleware
    3  * 
    4  *  Copyright (C) 2014-2017 Cores Co., Ltd. Japan
    5  * 
     3 *
     4 *  Copyright (C) 2014-2018 Cores Co., Ltd. Japan
     5 *
    66 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    77 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     
    2626 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
    2727 *      免責すること.
    28  * 
     28 *
    2929 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
    3030 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     
    3232 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    3333 *  の責任を負わない.
    34  * 
     34 *
    3535 *  @(#) $Id$
    3636 */
     
    4242#include "rx630.h"
    4343#include "ff.h"
     44#include "target_stddef.h"
     45#include "target_kernel_impl.h"
     46#include "scif.h"
    4447
    4548 /* PWM出力(490Hz) */
     
    6467void gpio_init(gpio_t *obj, PinName pin)
    6568{
     69        obj->pin = pin;
     70        obj->dir = PIN_INPUT;
     71        obj->mode = PullDefault;
    6672}
    6773
     
    8389        /* 汎用入出力ポートに設定 */
    8490        switch (pin) {
    85         case 0:
     91        case D0:
    8692                /* P21 */
    8793                sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B1_BIT);
    8894                break;
    89         case 1:
     95        case D1:
    9096                /* P20 */
    9197                sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B0_BIT);
    9298                break;
    93         case 2:
     99        case D2:
    94100                /* P22 */
    95101                sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B2_BIT);
    96102                break;
    97         case 3:
     103        case D3:
    98104                /* P23 */
    99105                sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B3_BIT);
    100106                break;
    101         case 4:
     107        case D4:
    102108                /* P24 */
    103109                sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B4_BIT);
    104110                break;
    105         case 5:
     111        case D5:
    106112                /* P25 */
    107113                sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) & ~PORT_PMR_B5_BIT);
    108114                break;
    109         case 6:
     115        case D6:
    110116                /* P32 */
    111117                sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) & ~PORT_PMR_B2_BIT);
    112118                break;
    113         case 7:
     119        case D7:
    114120                /* P33 */
    115121                sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) & ~PORT_PMR_B3_BIT);
     122                break;
     123        default:
    116124                break;
    117125        }
     
    124132        switch (pin) {
    125133                /* P21/TIOCA3 */
    126         case 0:
     134        case D0:
    127135                if (gpio) {
    128136                        /* P21端子機能制御レジスタ P21とする */
     
    136144                break;
    137145                /* P20/TIOCB3 */
    138         case 1:
     146        case D1:
    139147                if (gpio) {
    140148                        /* P20端子機能制御レジスタ P20とする */
     
    148156                break;
    149157                /* P22/TIOCC3 */
    150         case 2:
     158        case D2:
    151159                if (gpio) {
    152160                        /* P22端子機能制御レジスタ P22とする */
     
    160168                break;
    161169                /* P23/TIOCD3 */
    162         case 3:
     170        case D3:
    163171                if (gpio) {
    164172                        /* P23端子機能制御レジスタ P23とする */
     
    172180                break;
    173181                /* P24/TIOCB4 */
    174         case 4:
     182        case D4:
    175183                if (gpio) {
    176184                        /* P24端子機能制御レジスタ P24とする */
     
    184192                break;
    185193                /* P25/TIOCA4 */
    186         case 5:
     194        case D5:
    187195                if (gpio) {
    188196                        /* P25端子機能制御レジスタ P25とする */
     
    196204                break;
    197205                /* P32/TIOCC0 */
    198         case 6:
     206        case D6:
    199207                if (gpio) {
    200208                        /* P32端子機能制御レジスタ P32とする */
     
    208216                break;
    209217                /* P33/TIOCD0 */
    210         case 7:
     218        case D7:
    211219                if (gpio) {
    212220                        /* P33端子機能制御レジスタ P33とする */
     
    218226                }
    219227                result = E_OK;
     228                break;
     229        default:
    220230                break;
    221231        }
     
    228238                switch (pin) {
    229239                        /* P21/TIOCA3 */
    230                 case 0:
     240                case D0:
    231241                        sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B1_BIT);
    232242                        sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B1_BIT);
    233243                        break;
    234244                        /* P20/TIOCB3 */
    235                 case 1:
     245                case D1:
    236246                        sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B0_BIT);
    237247                        sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B0_BIT);
    238248                        break;
    239249                        /* P22/TIOCC3 */
    240                 case 2:
     250                case D2:
    241251                        sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B2_BIT);
    242252                        sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B2_BIT);
    243253                        break;
    244254                        /* P23/TIOCD3 */
    245                 case 3:
     255                case D3:
    246256                        sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B3_BIT);
    247257                        sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B3_BIT);
    248258                        break;
    249259                        /* P24/TIOCB4 */
    250                 case 4:
     260                case D4:
    251261                        sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B4_BIT);
    252262                        sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B4_BIT);
    253263                        break;
    254264                        /* P25/TIOCA4 */
    255                 case 5:
     265                case D5:
    256266                        sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B5_BIT);
    257267                        sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B5_BIT);
    258268                        break;
    259269                        /* P32/TIOCC0 */
    260                 case 6:
     270                case D6:
    261271                        sil_wrb_mem(PORT3_PDR_ADDR, sil_reb_mem(PORT3_PDR_ADDR) | PORT_PDR_B2_BIT);
    262272                        sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) | PORT_PMR_B2_BIT);
    263273                        break;
    264274                        /* P33/TIOCD0 */
    265                 case 7:
     275                case D7:
    266276                        sil_wrb_mem(PORT3_PDR_ADDR, sil_reb_mem(PORT3_PDR_ADDR) | PORT_PDR_B3_BIT);
    267277                        sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) | PORT_PMR_B3_BIT);
    268278                        break;
     279                default:
     280                        break;
    269281                }
    270282        }
     
    280292
    281293        switch (obj->pin) {
    282         case 0:
     294        case D0:
    283295                /* P21 */
    284296                pdr = PORT2_PDR_ADDR; bit = PORT_PDR_B1_BIT;
    285297                break;
    286         case 1:
     298        case D1:
    287299                /* P20 */
    288300                pdr = PORT2_PDR_ADDR; bit = PORT_PDR_B0_BIT;
    289301                break;
    290         case 2:
     302        case D2:
    291303                /* P22 */
    292304                pdr = PORT2_PDR_ADDR; bit = PORT_PDR_B2_BIT;
    293305                break;
    294         case 3:
     306        case D3:
    295307                /* P23 */
    296308                pdr = PORT2_PDR_ADDR; bit = PORT_PDR_B3_BIT;
    297309                break;
    298         case 4:
     310        case D4:
    299311                /* P24 */
    300312                pdr = PORT2_PDR_ADDR; bit = PORT_PDR_B4_BIT;
    301313                break;
    302         case 5:
     314        case D5:
    303315                /* P25 */
    304316                pdr = PORT2_PDR_ADDR; bit = PORT_PDR_B5_BIT;
    305317                break;
    306         case 6:
     318        case D6:
    307319                /* P32 */
    308320                pdr = PORT3_PDR_ADDR; bit = PORT_PDR_B2_BIT;
    309321                break;
    310         case 7:
     322        case D7:
    311323                /* P33 */
    312324                pdr = PORT3_PDR_ADDR; bit = PORT_PDR_B3_BIT;
    313325                break;
    314         case 8:
     326        case D8:
    315327                /* PC2 */
    316328                pdr = PORTC_PDR_ADDR; bit = PORT_PDR_B2_BIT;
    317329                break;
    318         case 9:
     330        case D9:
    319331                /* PC3 */
    320332                pdr = PORTC_PDR_ADDR; bit = PORT_PDR_B3_BIT;
    321333                break;
    322         case 10:
     334        case D10:
    323335                /* PC4 */
    324336                pdr = PORTC_PDR_ADDR; bit = PORT_PDR_B4_BIT;
    325337                break;
    326         case 11:
     338        case D11:
    327339                /* PC6 */
    328340                pdr = PORTC_PDR_ADDR; bit = PORT_PDR_B6_BIT;
    329341                break;
    330         case 12:
     342        case D12:
    331343                /* PC7 */
    332344                pdr = PORTC_PDR_ADDR; bit = PORT_PDR_B7_BIT;
    333345                break;
    334         case 13:
     346        case D13:
    335347                /* PC5 */
    336348                pdr = PORTC_PDR_ADDR; bit = PORT_PDR_B5_BIT;
     
    349361                sil_wrb_mem(pdr, sil_reb_mem(pdr) | bit);
    350362                break;
     363        default:
     364                break;
    351365        }
    352366
     
    387401
    388402        switch (obj->pin) {
    389         case 0:
     403        case D0:
    390404                /* P21 */
    391405                podr = PORT2_PODR_ADDR; bit = PORT_PODR_B1_BIT;
    392406                break;
    393         case 1:
     407        case D1:
    394408                /* P20 */
    395409                podr = PORT2_PODR_ADDR; bit = PORT_PODR_B0_BIT;
    396410                break;
    397         case 2:
     411        case D2:
    398412                /* P22 */
    399413                podr = PORT2_PODR_ADDR; bit = PORT_PODR_B2_BIT;
    400414                break;
    401         case 3:
     415        case D3:
    402416                /* P23 */
    403417                podr = PORT2_PODR_ADDR; bit = PORT_PODR_B3_BIT;
    404418                break;
    405         case 4:
     419        case D4:
    406420                /* P24 */
    407421                podr = PORT2_PODR_ADDR; bit = PORT_PODR_B4_BIT;
    408422                break;
    409         case 5:
     423        case D5:
    410424                /* P25 */
    411425                podr = PORT2_PODR_ADDR; bit = PORT_PODR_B5_BIT;
    412426                break;
    413         case 6:
     427        case D6:
    414428                /* P32 */
    415429                podr = PORT3_PODR_ADDR; bit = PORT_PODR_B2_BIT;
    416430                break;
    417         case 7:
     431        case D7:
    418432                /* P33 */
    419433                podr = PORT3_PODR_ADDR; bit = PORT_PODR_B3_BIT;
    420434                break;
    421         case 8:
     435        case D8:
    422436                /* PC2 */
    423437                podr = PORTC_PODR_ADDR; bit = PORT_PODR_B2_BIT;
    424438                break;
    425         case 9:
     439        case D9:
    426440                /* PC3 */
    427441                podr = PORTC_PODR_ADDR; bit = PORT_PODR_B3_BIT;
    428442                break;
    429         case 10:
     443        case D10:
    430444                /* PC4 */
    431445                podr = PORTC_PODR_ADDR; bit = PORT_PODR_B4_BIT;
    432446                break;
    433         case 11:
     447        case D11:
    434448                /* PC6 */
    435449                podr = PORTC_PODR_ADDR; bit = PORT_PODR_B6_BIT;
    436450                break;
    437         case 12:
     451        case D12:
    438452                /* PC7 */
    439453                podr = PORTC_PODR_ADDR; bit = PORT_PODR_B7_BIT;
    440454                break;
    441         case 13:
     455        case D13:
    442456                /* PC5 */
    443457                podr = PORTC_PODR_ADDR; bit = PORT_PODR_B5_BIT;
     
    463477
    464478        switch (obj->pin) {
    465         case 0:
     479        case D0:
    466480                /* P21 */
    467481                pidr = PORT2_PIDR_ADDR; bit = PORT_PIDR_B1_BIT;
    468482                break;
    469         case 1:
     483        case D1:
    470484                /* P20 */
    471485                pidr = PORT2_PIDR_ADDR; bit = PORT_PIDR_B0_BIT;
    472486                break;
    473         case 2:
     487        case D2:
    474488                /* P22 */
    475489                pidr = PORT2_PIDR_ADDR; bit = PORT_PIDR_B2_BIT;
    476490                break;
    477         case 3:
     491        case D3:
    478492                /* P23 */
    479493                pidr = PORT2_PIDR_ADDR; bit = PORT_PIDR_B3_BIT;
    480494                break;
    481         case 4:
     495        case D4:
    482496                /* P24 */
    483497                pidr = PORT2_PIDR_ADDR; bit = PORT_PIDR_B4_BIT;
    484498                break;
    485         case 5:
     499        case D5:
    486500                /* P25 */
    487501                pidr = PORT2_PIDR_ADDR; bit = PORT_PIDR_B5_BIT;
    488502                break;
    489         case 6:
     503        case D6:
    490504                /* P32 */
    491505                pidr = PORT3_PIDR_ADDR; bit = PORT_PIDR_B2_BIT;
    492506                break;
    493         case 7:
     507        case D7:
    494508                /* P33 */
    495509                pidr = PORT3_PIDR_ADDR; bit = PORT_PIDR_B3_BIT;
    496510                break;
    497         case 8:
     511        case D8:
    498512                /* PC2 */
    499513                pidr = PORTC_PIDR_ADDR; bit = PORT_PIDR_B2_BIT;
    500514                break;
    501         case 9:
     515        case D9:
    502516                /* PC3 */
    503517                pidr = PORTC_PIDR_ADDR; bit = PORT_PIDR_B3_BIT;
    504518                break;
    505         case 10:
     519        case D10:
    506520                /* PC4 */
    507521                pidr = PORTC_PIDR_ADDR; bit = PORT_PIDR_B4_BIT;
    508522                break;
    509         case 11:
     523        case D11:
    510524                /* PC6 */
    511525                pidr = PORTC_PIDR_ADDR; bit = PORT_PIDR_B6_BIT;
    512526                break;
    513         case 12:
     527        case D12:
    514528                /* PC7 */
    515529                pidr = PORTC_PIDR_ADDR; bit = PORT_PIDR_B7_BIT;
    516530                break;
    517         case 13:
     531        case D13:
    518532                /* PC5 */
    519533                pidr = PORTC_PIDR_ADDR; bit = PORT_PIDR_B5_BIT;
     
    581595
    582596        switch (obj->pin) {
    583         case 14:
     597        case A0:
    584598                /* *value = sil_reh_mem(S12AD_ADDR0_ADDR); */
    585599                result = (arduino_ad_avelage[0] / (arduino_ad_table_count));
    586600                break;
    587         case 15:
     601        case A1:
    588602                /* *value = sil_reh_mem(S12AD_ADDR1_ADDR); */
    589603                result = (arduino_ad_avelage[1] / (arduino_ad_table_count));
    590604                break;
    591         case 16:
     605        case A2:
    592606                /* *value = sil_reh_mem(S12AD_ADDR2_ADDR); */
    593607                result = (arduino_ad_avelage[2] / (arduino_ad_table_count));
    594608                break;
    595         case 17:
     609        case A3:
    596610                /* *value = sil_reh_mem(S12AD_ADDR3_ADDR); */
    597611                result = (arduino_ad_avelage[3] / (arduino_ad_table_count));
    598612                break;
    599         case 18:
     613        case A4:
    600614                /* *value = sil_reh_mem(S12AD_ADDR4_ADDR); */
    601615                result = (arduino_ad_avelage[4] / (arduino_ad_table_count));
    602616                break;
    603         case 19:
     617        case A5:
    604618                /* *value = sil_reh_mem(S12AD_ADDR5_ADDR); */
    605619                result = (arduino_ad_avelage[5] / (arduino_ad_table_count));
    606620                break;
    607         case 20:
     621        case A6:
    608622                /* *value = sil_reh_mem(S12AD_ADDR6_ADDR); */
    609623                result = (arduino_ad_avelage[6] / (arduino_ad_table_count));
    610624                break;
    611         case 21:
     625        case A7:
    612626                /* *value = sil_reh_mem(S12AD_ADDR7_ADDR); */
    613627                result = (arduino_ad_avelage[7] / (arduino_ad_table_count));
    614628                break;
     629        default:
     630                return 0;
    615631        }
    616632
     
    677693        /* 波形出力レベルの選択 */
    678694        sil_wrb_mem(TPU0_TIORL_ADDR, (5 << TPU_TIORL_IOC_OFFSET) | (5 << TPU_TIORL_IOD_OFFSET));
    679         sil_wrb_mem(TPU3_TIORH_ADDR, (5 << TPU_TIORL_IOA_OFFSET) | (5 << TPU_TIORL_IOB_OFFSET));
     695        sil_wrb_mem(TPU3_TIORH_ADDR, (5 << TPU_TIORH_IOA_OFFSET) | (5 << TPU_TIORH_IOB_OFFSET));
    680696        sil_wrb_mem(TPU3_TIORL_ADDR, (5 << TPU_TIORL_IOC_OFFSET) | (5 << TPU_TIORL_IOD_OFFSET));
    681         sil_wrb_mem(TPU4_TIOR_ADDR, (5 << TPU_TIORL_IOA_OFFSET) | (5 << TPU_TIORL_IOB_OFFSET));
     697        sil_wrb_mem(TPU4_TIOR_ADDR, (5 << TPU_TIOR_IOA_OFFSET) | (5 << TPU_TIOR_IOB_OFFSET));
    682698        /* TGRyの設定 */
    683699        sil_wrh_mem(TPU0_TGRA_ADDR, TPU_BASE_COUNTER);
     
    714730}
    715731
     732typedef enum {
     733        sciSerial,
     734        sciI2C,
     735        sciSPIM,
     736        sciSPIS,
     737} sci_mode_t;
     738
     739void sci_enable(void *base_address, sci_mode_t mode)
     740{
     741        /*
     742         *  モジュールストップ機能の設定
     743         */
     744        sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502);        /* 書込み許可 */
     745        sil_wrw_mem(SYSTEM_MSTPCRB_ADDR,
     746                sil_rew_mem(SYSTEM_MSTPCRB_ADDR) & ~SCI_MSTPCRB_BIT(base_address));
     747        sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500);        /* 書込み禁止 */
     748
     749        /* 送受信禁止, SCKn端子は入出力ポートとして使用 */
     750        sil_wrb_mem(SCI_SCR(base_address), 0x00U);
     751
     752        switch ((uint32_t)base_address) {
     753        /* TXD/SDA/MOSI:P20, RXD/SCL/MISO:P21, SCK:P22 */
     754        case SCI0_BASE:
     755                switch (mode) {
     756                case sciSerial:
     757                        /* HIGH状態に設定 */
     758                        sil_wrb_mem(PORT2_PODR_ADDR,
     759                                sil_reb_mem(PORT2_PODR_ADDR) | PORT_PODR_B0_BIT | PORT_PODR_B1_BIT);
     760                        /* TX出力/RX入力ポート設定 */
     761                        sil_wrb_mem(PORT2_PDR_ADDR, (sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B0_BIT) & ~PORT_PDR_B1_BIT);
     762                        /* プルアップ無効 */
     763                        sil_wrb_mem(PORT2_PCR_ADDR, sil_reb_mem(PORT2_PCR_ADDR) & ~(PORT_PCR_B0_BIT | PORT_PCR_B1_BIT));
     764                        /* RX CMOS */
     765                        sil_wrb_mem(PORT2_ODR0_ADDR,
     766                                (sil_reb_mem(PORT2_ODR0_ADDR) & ~(PORT_ODR_Pm0_MASK | PORT_ODR_Pm1_MASK))
     767                                | (PORT_ODR_CMOS << PORT_ODR_Pm0_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm1_OFFSET));
     768                        /* 周辺機能として使用 */
     769                        sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B0_BIT | PORT_PMR_B1_BIT);
     770                        break;
     771                case sciI2C:
     772                        /* HIGH状態に設定 */
     773                        sil_wrb_mem(PORT2_PODR_ADDR,
     774                                sil_reb_mem(PORT2_PODR_ADDR) | PORT_PODR_B0_BIT | PORT_PODR_B1_BIT);
     775                        /* SCL,SDA 出力ポート設定 */
     776                        sil_wrb_mem(PORT2_PDR_ADDR, sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B0_BIT | PORT_PDR_B1_BIT);
     777                        /* プルアップ有効 */
     778                        sil_wrb_mem(PORT2_PCR_ADDR, sil_reb_mem(PORT2_PCR_ADDR) | PORT_PCR_B0_BIT | PORT_PCR_B1_BIT);
     779                        /* Nチャネルオープンドレイン */
     780                        sil_wrb_mem(PORT2_ODR0_ADDR,
     781                                (sil_reb_mem(PORT2_ODR0_ADDR) & ~(PORT_ODR_Pm0_MASK | PORT_ODR_Pm1_MASK))
     782                                | (PORT_ODR_NCH_OPEN_DRAIN << PORT_ODR_Pm0_OFFSET) | (PORT_ODR_NCH_OPEN_DRAIN << PORT_ODR_Pm1_OFFSET));
     783                        /* 周辺機能として使用 */
     784                        sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B0_BIT | PORT_PMR_B1_BIT);
     785                        break;
     786                case sciSPIM:
     787                        /* HIGH状態に設定 */
     788                        sil_wrb_mem(PORT2_PODR_ADDR,
     789                                sil_reb_mem(PORT2_PODR_ADDR) | PORT_PODR_B0_BIT | PORT_PODR_B1_BIT | PORT_PODR_B2_BIT);
     790                        /* MOSI出力/MISO入力/SCK入出力ポート設定 */
     791                        sil_wrb_mem(PORT2_PDR_ADDR, (sil_reb_mem(PORT2_PDR_ADDR) | PORT_PDR_B0_BIT | PORT_PDR_B2_BIT) & ~PORT_PDR_B1_BIT);
     792                        /* プルアップ無効 */
     793                        sil_wrb_mem(PORT2_PCR_ADDR, sil_reb_mem(PORT2_PCR_ADDR) & ~(PORT_PCR_B0_BIT | PORT_PCR_B1_BIT | PORT_PCR_B2_BIT));
     794                        /* MISO CMOS */
     795                        sil_wrb_mem(PORT2_ODR0_ADDR,
     796                                (sil_reb_mem(PORT2_ODR0_ADDR) & ~(PORT_ODR_Pm0_MASK | PORT_ODR_Pm1_MASK | PORT_ODR_Pm2_MASK))
     797                                | (PORT_ODR_CMOS << PORT_ODR_Pm0_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm1_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm2_OFFSET));
     798                        /* 周辺機能として使用 */
     799                        sil_wrb_mem(PORT2_PMR_ADDR, sil_reb_mem(PORT2_PMR_ADDR) | PORT_PMR_B0_BIT | PORT_PMR_B1_BIT | PORT_PMR_B2_BIT);
     800                        break;
     801                }
     802                /* 書き込みプロテクトレジスタの設定 PFSWEビットへの書き込みを許可 */
     803                sil_wrb_mem(MPC_PWPR_ADDR, 0x00);
     804                /* 書き込みプロテクトレジスタの設定 PxxFSレジスタへの書き込みを許可 */
     805                sil_wrb_mem(MPC_PWPR_ADDR, 0x40);
     806
     807                /* P20端子機能制御レジスタ TXD0/SMOSI0/SSDA0とする */
     808                sil_wrb_mem(MPC_P20PFS_ADDR, 0x0A);
     809                /* P21端子機能制御レジスタ RXD0/SMISO0/SSCL0とする */
     810                sil_wrb_mem(MPC_P21PFS_ADDR, 0x0A);
     811                if (mode == sciSPIM) {
     812                        /* P22端子機能制御レジスタ SCK0とする */
     813                        sil_wrb_mem(MPC_P22PFS_ADDR, 0x0A);
     814                }
     815
     816                /* 書き込みプロテクトレジスタの設定 書き込みを禁止 */
     817                sil_wrb_mem(MPC_PWPR_ADDR, 0x80);
     818                break;
     819        /* TXD/SDA/MOSI:P50, RXD/SCL/MISO:P52, SCK:P51 */
     820        case SCI2_BASE:
     821                switch (mode) {
     822                case sciSerial:
     823                        /* HIGH状態に設定 */
     824                        sil_wrb_mem(PORT5_PODR_ADDR,
     825                                sil_reb_mem(PORT5_PODR_ADDR) | PORT_PODR_B0_BIT | PORT_PODR_B2_BIT);
     826                        /* TX出力/RX入力ポート設定 */
     827                        sil_wrb_mem(PORT5_PDR_ADDR, (sil_reb_mem(PORT5_PDR_ADDR) | PORT_PDR_B0_BIT) & ~PORT_PDR_B2_BIT);
     828                        /* プルアップ無効 */
     829                        sil_wrb_mem(PORT5_PCR_ADDR, sil_reb_mem(PORT5_PCR_ADDR) & ~(PORT_PCR_B0_BIT | PORT_PCR_B2_BIT));
     830                        /* RX CMOS */
     831                        sil_wrb_mem(PORT5_ODR0_ADDR,
     832                                (sil_reb_mem(PORT5_ODR0_ADDR) & ~(PORT_ODR_Pm0_MASK | PORT_ODR_Pm2_MASK))
     833                                | (PORT_ODR_CMOS << PORT_ODR_Pm0_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm2_OFFSET));
     834                        /* 周辺機能として使用 */
     835                        sil_wrb_mem(PORT5_PMR_ADDR, sil_reb_mem(PORT5_PMR_ADDR) | PORT_PMR_B0_BIT | PORT_PMR_B2_BIT);
     836                        break;
     837                case sciI2C:
     838                        /* HIGH状態に設定 */
     839                        sil_wrb_mem(PORT5_PODR_ADDR,
     840                                sil_reb_mem(PORT5_PODR_ADDR) | PORT_PODR_B0_BIT | PORT_PODR_B2_BIT);
     841                        /* SCL,SDA 出力ポート設定 */
     842                        sil_wrb_mem(PORT5_PDR_ADDR, sil_reb_mem(PORT5_PDR_ADDR) | PORT_PDR_B0_BIT | PORT_PDR_B2_BIT);
     843                        /* プルアップ有効 */
     844                        sil_wrb_mem(PORT5_PCR_ADDR, sil_reb_mem(PORT5_PCR_ADDR) | PORT_PCR_B0_BIT | PORT_PCR_B2_BIT);
     845                        /* Nチャネルオープンドレイン */
     846                        sil_wrb_mem(PORT5_ODR0_ADDR,
     847                                (sil_reb_mem(PORT5_ODR0_ADDR) & ~(PORT_ODR_Pm0_MASK | PORT_ODR_Pm2_MASK))
     848                                | (PORT_ODR_NCH_OPEN_DRAIN << PORT_ODR_Pm0_OFFSET) | (PORT_ODR_NCH_OPEN_DRAIN << PORT_ODR_Pm2_OFFSET));
     849                        /* 周辺機能として使用 */
     850                        sil_wrb_mem(PORT5_PMR_ADDR, sil_reb_mem(PORT5_PMR_ADDR) | PORT_PMR_B0_BIT | PORT_PMR_B2_BIT);
     851                        break;
     852                case sciSPIM:
     853                        /* HIGH状態に設定 */
     854                        sil_wrb_mem(PORT5_PODR_ADDR,
     855                                sil_reb_mem(PORT5_PODR_ADDR) | PORT_PODR_B0_BIT | PORT_PODR_B1_BIT | PORT_PODR_B2_BIT);
     856                        /* MOSI出力/MISO入力/SCK入出力ポート設定 */
     857                        sil_wrb_mem(PORT5_PDR_ADDR, (sil_reb_mem(PORT5_PDR_ADDR) | PORT_PDR_B0_BIT | PORT_PDR_B1_BIT) & ~PORT_PDR_B2_BIT);
     858                        /* プルアップ無効 */
     859                        sil_wrb_mem(PORT5_PCR_ADDR, sil_reb_mem(PORT5_PCR_ADDR) & ~(PORT_PCR_B0_BIT | PORT_PCR_B1_BIT | PORT_PCR_B2_BIT));
     860                        /* MISO CMOS */
     861                        sil_wrb_mem(PORT5_ODR0_ADDR,
     862                                (sil_reb_mem(PORT5_ODR0_ADDR) & ~(PORT_ODR_Pm0_MASK | PORT_ODR_Pm1_MASK | PORT_ODR_Pm2_MASK))
     863                                | (PORT_ODR_CMOS << PORT_ODR_Pm0_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm1_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm2_OFFSET));
     864                        /* 周辺機能として使用 */
     865                        sil_wrb_mem(PORT5_PMR_ADDR, sil_reb_mem(PORT5_PMR_ADDR) | PORT_PMR_B0_BIT | PORT_PMR_B1_BIT | PORT_PMR_B1_BIT | PORT_PMR_B2_BIT);
     866                        break;
     867                }
     868                /* 書き込みプロテクトレジスタの設定 PFSWEビットへの書き込みを許可 */
     869                sil_wrb_mem(MPC_PWPR_ADDR, 0x00);
     870                /* 書き込みプロテクトレジスタの設定 PxxFSレジスタへの書き込みを許可 */
     871                sil_wrb_mem(MPC_PWPR_ADDR, 0x40);
     872
     873                /* P50端子機能制御レジスタ SSDA2とする */
     874                sil_wrb_mem(MPC_P50PFS_ADDR, 0x0A);
     875                /* P52端子機能制御レジスタ SSCL2とする */
     876                sil_wrb_mem(MPC_P52PFS_ADDR, 0x0A);
     877                if (mode == sciSPIM) {
     878                        /* P51端子機能制御レジスタ SCK2とする */
     879                        sil_wrb_mem(MPC_P51PFS_ADDR, 0x0A);
     880                }
     881
     882                /* 書き込みプロテクトレジスタの設定 書き込みを禁止 */
     883                sil_wrb_mem(MPC_PWPR_ADDR, 0x80);
     884                break;
     885        /* TXD/SDA/MOSI:P32, RXD/SCL/MISO:P33, SCK:P34 */
     886        case SCI6_BASE:
     887                switch (mode) {
     888                case sciSerial:
     889                        /* HIGH状態に設定 */
     890                        sil_wrb_mem(PORT3_PODR_ADDR,
     891                                sil_reb_mem(PORT3_PODR_ADDR) | PORT_PODR_B2_BIT | PORT_PODR_B3_BIT);
     892                        /* TX出力/RX入力ポート設定 */
     893                        sil_wrb_mem(PORT3_PDR_ADDR, (sil_reb_mem(PORT3_PDR_ADDR) | PORT_PDR_B2_BIT) & ~PORT_PDR_B3_BIT);
     894                        /* プルアップ無効 */
     895                        sil_wrb_mem(PORT3_PCR_ADDR, sil_reb_mem(PORT3_PCR_ADDR) & ~(PORT_PCR_B2_BIT | PORT_PCR_B3_BIT));
     896                        /* RX CMOS */
     897                        sil_wrb_mem(PORT3_ODR0_ADDR,
     898                                (sil_reb_mem(PORT3_ODR0_ADDR) & ~(PORT_ODR_Pm2_MASK | PORT_ODR_Pm3_MASK))
     899                                | (PORT_ODR_CMOS << PORT_ODR_Pm2_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm3_OFFSET));
     900                        /* 周辺機能として使用 */
     901                        sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) | PORT_PMR_B2_BIT | PORT_PMR_B3_BIT);
     902                        break;
     903                case sciI2C:
     904                        /* HIGH状態に設定 */
     905                        sil_wrb_mem(PORT3_PODR_ADDR,
     906                                sil_reb_mem(PORT3_PODR_ADDR) | PORT_PODR_B2_BIT | PORT_PODR_B3_BIT);
     907                        /* SCL,SDA 出力ポート設定 */
     908                        sil_wrb_mem(PORT3_PDR_ADDR, sil_reb_mem(PORT3_PDR_ADDR) | PORT_PDR_B2_BIT | PORT_PDR_B3_BIT);
     909                        /* プルアップ有効 */
     910                        sil_wrb_mem(PORT3_PCR_ADDR, sil_reb_mem(PORT3_PCR_ADDR) | PORT_PCR_B2_BIT | PORT_PCR_B3_BIT);
     911                        /* Nチャネルオープンドレイン */
     912                        sil_wrb_mem(PORT3_ODR0_ADDR,
     913                                (sil_reb_mem(PORT3_ODR0_ADDR) & ~(PORT_ODR_Pm2_MASK | PORT_ODR_Pm3_MASK))
     914                                | (PORT_ODR_NCH_OPEN_DRAIN << PORT_ODR_Pm2_OFFSET) | (PORT_ODR_NCH_OPEN_DRAIN << PORT_ODR_Pm3_OFFSET));
     915                        /* 周辺機能として使用 */
     916                        sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) | PORT_PMR_B2_BIT | PORT_PMR_B3_BIT);
     917                        break;
     918                case sciSPIM:
     919                        /* HIGH状態に設定 */
     920                        sil_wrb_mem(PORT3_PODR_ADDR,
     921                                sil_reb_mem(PORT3_PODR_ADDR) | PORT_PODR_B2_BIT | PORT_PODR_B3_BIT | PORT_PODR_B4_BIT);
     922                        /* MOSI出力/MISO入力/SCK入出力ポート設定 */
     923                        sil_wrb_mem(PORT3_PDR_ADDR, (sil_reb_mem(PORT3_PDR_ADDR) | PORT_PDR_B2_BIT | PORT_PDR_B4_BIT) & ~PORT_PDR_B3_BIT);
     924                        /* プルアップ無効 */
     925                        sil_wrb_mem(PORT3_PCR_ADDR, sil_reb_mem(PORT3_PCR_ADDR) & ~(PORT_PCR_B2_BIT | PORT_PCR_B3_BIT | PORT_PCR_B4_BIT));
     926                        /* MISO CMOS */
     927                        sil_wrb_mem(PORT3_ODR0_ADDR,
     928                                (sil_reb_mem(PORT3_ODR0_ADDR) & ~(PORT_ODR_Pm2_MASK | PORT_ODR_Pm3_MASK | PORT_ODR_Pm4_MASK))
     929                                | (PORT_ODR_CMOS << PORT_ODR_Pm2_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm3_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm4_OFFSET));
     930                        /* 周辺機能として使用 */
     931                        sil_wrb_mem(PORT3_PMR_ADDR, sil_reb_mem(PORT3_PMR_ADDR) | PORT_PMR_B2_BIT | PORT_PMR_B3_BIT | PORT_PMR_B4_BIT);
     932                        break;
     933                }
     934
     935                /* 書き込みプロテクトレジスタの設定 PFSWEビットへの書き込みを許可 */
     936                sil_wrb_mem(MPC_PWPR_ADDR, 0x00);
     937                /* 書き込みプロテクトレジスタの設定 PxxFSレジスタへの書き込みを許可 */
     938                sil_wrb_mem(MPC_PWPR_ADDR, 0x40);
     939
     940                /* P32端子機能制御レジスタ TXD6/SMOSI6/SSDA6とする */
     941                sil_wrb_mem(MPC_P32PFS_ADDR, 0x0A);
     942                /* P33端子機能制御レジスタ RXD6/SMISO6/SSCL6とする */
     943                sil_wrb_mem(MPC_P33PFS_ADDR, 0x0A);
     944                if (mode == sciSPIM) {
     945                        /* P34端子機能制御レジスタ SCK6とする */
     946                        sil_wrb_mem(MPC_P34PFS_ADDR, 0x0A);
     947                }
     948
     949                /* 書き込みプロテクトレジスタの設定 書き込みを禁止 */
     950                sil_wrb_mem(MPC_PWPR_ADDR, 0x80);
     951                break;
     952        /* TXD/SDA/MOSI:PC7, RXD/SCL/MISO:PC6, SCK:PC5 */
     953        case SCI8_BASE:
     954                switch (mode) {
     955                case sciSerial:
     956                        /* HIGH状態に設定 */
     957                        sil_wrb_mem(PORTC_PODR_ADDR,
     958                                sil_reb_mem(PORTC_PODR_ADDR) | PORT_PODR_B6_BIT | PORT_PODR_B7_BIT);
     959                        /* TX出力/RX入力ポート設定 */
     960                        sil_wrb_mem(PORTC_PDR_ADDR, (sil_reb_mem(PORTC_PDR_ADDR) | PORT_PDR_B6_BIT) & ~PORT_PDR_B7_BIT);
     961                        /* プルアップ無効 */
     962                        sil_wrb_mem(PORTC_PCR_ADDR, sil_reb_mem(PORTC_PCR_ADDR) & ~(PORT_PCR_B6_BIT | PORT_PCR_B7_BIT));
     963                        /* RX CMOS */
     964                        sil_wrb_mem(PORTC_ODR0_ADDR,
     965                                (sil_reb_mem(PORTC_ODR0_ADDR) & ~(PORT_ODR_Pm6_MASK | PORT_ODR_Pm7_MASK))
     966                                | (PORT_ODR_CMOS << PORT_ODR_Pm6_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm7_OFFSET));
     967                        /* 周辺機能として使用 */
     968                        sil_wrb_mem(PORTC_PMR_ADDR, sil_reb_mem(PORTC_PMR_ADDR) | PORT_PMR_B6_BIT | PORT_PMR_B7_BIT);
     969                        break;
     970                case sciI2C:
     971                        /* HIGH状態に設定 */
     972                        sil_wrb_mem(PORTC_PODR_ADDR,
     973                                sil_reb_mem(PORTC_PODR_ADDR) | PORT_PODR_B6_BIT | PORT_PODR_B7_BIT);
     974                        /* SCL,SDA 出力ポート設定 */
     975                        sil_wrb_mem(PORTC_PDR_ADDR, sil_reb_mem(PORTC_PDR_ADDR) | PORT_PDR_B6_BIT | PORT_PDR_B7_BIT);
     976                        /* プルアップ有効 */
     977                        sil_wrb_mem(PORTC_PCR_ADDR, sil_reb_mem(PORTC_PCR_ADDR) | PORT_PCR_B6_BIT | PORT_PCR_B7_BIT);
     978                        /* Nチャネルオープンドレイン */
     979                        sil_wrb_mem(PORTC_ODR0_ADDR,
     980                                (sil_reb_mem(PORTC_ODR0_ADDR) & ~(PORT_ODR_Pm6_MASK | PORT_ODR_Pm7_MASK))
     981                                | (PORT_ODR_NCH_OPEN_DRAIN << PORT_ODR_Pm6_OFFSET) | (PORT_ODR_NCH_OPEN_DRAIN << PORT_ODR_Pm7_OFFSET));
     982                        /* 周辺機能として使用 */
     983                        sil_wrb_mem(PORTC_PMR_ADDR, sil_reb_mem(PORTC_PMR_ADDR) | PORT_PMR_B6_BIT | PORT_PMR_B7_BIT);
     984                        break;
     985                case sciSPIM:
     986                        /* HIGH状態に設定 */
     987                        sil_wrb_mem(PORTC_PODR_ADDR,
     988                                sil_reb_mem(PORTC_PODR_ADDR) | PORT_PODR_B7_BIT | PORT_PODR_B6_BIT | PORT_PODR_B5_BIT);
     989                        /* MOSI出力/MISO入力/SCK入出力ポート設定 */
     990                        sil_wrb_mem(PORTC_PDR_ADDR, (sil_reb_mem(PORTC_PDR_ADDR) | PORT_PDR_B5_BIT | PORT_PDR_B7_BIT) & ~PORT_PDR_B6_BIT);
     991                        /* プルアップ無効 */
     992                        sil_wrb_mem(PORTC_PCR_ADDR, sil_reb_mem(PORTC_PCR_ADDR) & ~(PORT_PCR_B5_BIT | PORT_PCR_B7_BIT | PORT_PCR_B6_BIT));
     993                        /* MISO CMOS */
     994                        sil_wrb_mem(PORTC_ODR0_ADDR,
     995                                (sil_reb_mem(PORTC_ODR0_ADDR) & ~(PORT_ODR_Pm5_MASK | PORT_ODR_Pm6_MASK | PORT_ODR_Pm7_MASK))
     996                                | (PORT_ODR_CMOS << PORT_ODR_Pm5_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm6_OFFSET) | (PORT_ODR_CMOS << PORT_ODR_Pm7_OFFSET));
     997                        /* 周辺機能として使用 */
     998                        sil_wrb_mem(PORTC_PMR_ADDR, sil_reb_mem(PORTC_PMR_ADDR) | PORT_PMR_B5_BIT | PORT_PMR_B6_BIT | PORT_PMR_B7_BIT);
     999                        break;
     1000                }
     1001
     1002                /* 書き込みプロテクトレジスタの設定 PFSWEビットへの書き込みを許可 */
     1003                sil_wrb_mem(MPC_PWPR_ADDR, 0x00);
     1004                /* 書き込みプロテクトレジスタの設定 PxxFSレジスタへの書き込みを許可 */
     1005                sil_wrb_mem(MPC_PWPR_ADDR, 0x40);
     1006
     1007                /* PC7端子機能制御レジスタ TXD8/SMOSI8/SSDA8とする */
     1008                sil_wrb_mem(MPC_PC7PFS_ADDR, 0x0A);
     1009                /* PC6端子機能制御レジスタ RXD8/SMISO8/SSCL8とする */
     1010                sil_wrb_mem(MPC_PC6PFS_ADDR, 0x0A);
     1011                if (mode == sciSPIM) {
     1012                        /* PC5端子機能制御レジスタ SCK8とする */
     1013                        sil_wrb_mem(MPC_PC5PFS_ADDR, 0x0A);
     1014                }
     1015
     1016                /* 書き込みプロテクトレジスタの設定 書き込みを禁止 */
     1017                sil_wrb_mem(MPC_PWPR_ADDR, 0x80);
     1018                break;
     1019        }
     1020}
     1021
     1022void sci_disable(void *base_address)
     1023{
     1024        /* 送受信禁止, SCKn端子は入出力ポートとして使用 */
     1025        sil_wrb_mem(SCI_SCR(base_address), 0x00U);
     1026
     1027        /*
     1028         *  モジュールストップ機能の設定
     1029         */
     1030        sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA502);        /* 書込み許可 */
     1031        sil_wrw_mem(SYSTEM_MSTPCRB_ADDR,
     1032                sil_rew_mem(SYSTEM_MSTPCRB_ADDR) | SCI_MSTPCRB_BIT(base_address));
     1033        sil_wrh_mem(SYSTEM_PRCR_ADDR, (uint16_t)0xA500);        /* 書込み禁止 */
     1034}
     1035
     1036void sci_set_frequency(void *base_address, int hz)
     1037{
     1038        uint_t  cnt, brr, clk;
     1039
     1040        cnt = (FREQ_PCLK * 1000) / (16 * hz);
     1041        if (cnt < 512)
     1042                clk = 0;
     1043        else if (cnt < 4 * 512)
     1044                clk = 1;
     1045        else if (cnt < 16 * 512)
     1046                clk = 2;
     1047        else if (cnt < 64 * 512)
     1048                clk = 3;
     1049        else
     1050                return;
     1051
     1052        brr = cnt / (1 << (2 * clk));
     1053        brr = (brr / 2) + (brr % 2) - 1;
     1054
     1055        /* SMRに送信/ 受信フォーマットを設定 */
     1056        /* クロック選択ビット(SMR.CKS[1:0]ビットを設定)、それ以外のビットを“0”に設定します。 */
     1057        sil_wrb_mem(SCI_SMR(base_address), clk);
     1058
     1059        /* SCMRレジスタはSDIRビットを“1”、SINVビットを“0”、SMIFビットを“0”に設定します。 */
     1060        sil_wrb_mem(SCI_SCMR(base_address),
     1061                (sil_reb_mem(SCI_SCMR(base_address)) & ~(SINV | SMIF)) | SDIR);
     1062
     1063        /* ビットレートを設定 */
     1064        sil_wrb_mem(SCI_BRR(base_address), brr);
     1065}
     1066
    7161067void serial_init(serial_t *obj, PinName tx, PinName rx)
    7171068{
     1069#ifdef TOPPERS_GRCITRUS
     1070        if ((rx == D0) && (tx == D1)) {
     1071                obj->base_address = (void *)SCI0_BASE;
     1072                obj->rxi_intno = INT_SCI0_RXI;
     1073                obj->tei_intno = INT_SCI0_TEI;
     1074        }
     1075        else if ((rx == D5) && (tx == D6)) {
     1076                obj->base_address = (void *)SCI2_BASE;
     1077                obj->rxi_intno = INT_SCI2_RXI;
     1078                obj->tei_intno = INT_SCI2_TEI;
     1079        }
     1080        else if ((rx == D7) && (tx == D8)) {
     1081                obj->base_address = (void *)SCI6_BASE;
     1082                obj->rxi_intno = INT_SCI6_RXI;
     1083                obj->tei_intno = INT_SCI6_TEI;
     1084        }
     1085        else if ((rx == D11) && (tx == D12)) {
     1086                obj->base_address = (void *)SCI8_BASE;
     1087                obj->rxi_intno = INT_SCI8_RXI;
     1088                obj->tei_intno = INT_SCI8_TEI;
     1089        }
     1090        else {
     1091                obj->base_address = NULL;
     1092                return;
     1093        }
     1094#else
     1095        if ((rx == D0) && (tx == D1)) {
     1096                obj->base_address = (void *)SCI0_BASE;
     1097                obj->rxi_intno = INT_SCI0_RXI;
     1098                obj->tei_intno = INT_SCI0_TEI;
     1099        }
     1100        else if ((rx == D6) && (tx == D7)) {
     1101                obj->base_address = (void *)SCI6_BASE;
     1102                obj->rxi_intno = INT_SCI6_RXI;
     1103                obj->tei_intno = INT_SCI6_TEI;
     1104        }
     1105        else if ((rx == D11) && (tx == D12)) {
     1106                obj->base_address = (void *)SCI8_BASE;
     1107                obj->rxi_intno = INT_SCI8_RXI;
     1108                obj->tei_intno = INT_SCI8_TEI;
     1109}
     1110        else {
     1111                obj->base_address = NULL;
     1112                return;
     1113        }
     1114#endif // TOPPERS_GRCITRUS
     1115        /* SCI有効 */
     1116        sci_enable(obj->base_address, sciSerial);
     1117
     1118        /* SIMR1.IICMビットを“0”に設定 */
     1119        sil_wrb_mem(SCI_SIMR1(obj->base_address),
     1120                sil_reb_mem(SCI_SIMR1(obj->base_address)) & ~IICM);
     1121
     1122        /* SPMR.CKPH, CKPOLビットを“0”に設定 */
     1123        sil_wrb_mem(SCI_SPMR(obj->base_address),
     1124                sil_reb_mem(SCI_SPMR(obj->base_address)) & ~(CKPH | CKPOL));
     1125
     1126        sci_set_frequency(obj->base_address, 9600);
     1127
     1128        /* SMRに送信/ 受信フォーマットを設定 */
     1129        serial_format(obj, 8, ParityNone, 1);
     1130
     1131        /* 送受信許可 */
     1132        sil_wrb_mem(SCI_SCR(obj->base_address),
     1133                (sil_reb_mem(SCI_SCR(obj->base_address)) | RE | TE));
    7181134}
    7191135
    7201136void serial_free(serial_t *obj)
    7211137{
     1138        /* SCI無効 */
     1139        sci_disable(obj->base_address);
     1140
     1141        obj->base_address = NULL;
    7221142}
    7231143
    7241144void serial_baud(serial_t *obj, int baudrate)
    7251145{
     1146        uint8_t scr = sil_reb_mem(SCI_SCR(obj->base_address));
     1147
     1148        /* 送受信禁止, SCKn端子は入出力ポートとして使用 */
     1149        sil_wrb_mem(SCI_SCR(obj->base_address), 0x00U);
     1150
     1151        sci_set_frequency(obj->base_address, baudrate);
     1152
     1153        /* 送受信許可 */
     1154        sil_wrb_mem(SCI_SCR(obj->base_address), scr);
    7261155}
    7271156
    7281157void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits)
    7291158{
     1159        uint8_t smr = sil_reb_mem(SCI_SMR(obj->base_address));
     1160
     1161        smr &= ~(PE | PM | CHR | STOP);
     1162
     1163        switch (parity) {
     1164        case ParityNone:
     1165                break;
     1166        case ParityOdd:
     1167                smr |= PE | PM;
     1168                break;
     1169        case ParityEven:
     1170                smr |= PE;
     1171                break;
     1172        default:
     1173                break;
     1174        }
     1175
     1176        switch (data_bits) {
     1177        case 7:
     1178                smr |= CHR;
     1179                break;
     1180        case 8:
     1181                break;
     1182        default:
     1183                break;
     1184        }
     1185
     1186        switch (stop_bits) {
     1187        case 1:
     1188                break;
     1189        case 2:
     1190                smr |= STOP;
     1191                break;
     1192        default:
     1193                break;
     1194        }
     1195
     1196        sil_wrb_mem(SCI_SMR(obj->base_address), smr);
    7301197}
    7311198
    7321199int serial_getc(serial_t *obj)
    7331200{
     1201        uint8_t ssr;
     1202        int c;
     1203
     1204        for (;;) {
     1205                /* SSR.ORER, PER, FERフラグをリード */
     1206                ssr = sil_reb_mem(SCI_SSR(obj->base_address));
     1207
     1208                /* 受信エラーが発生したとき */
     1209                if ((ssr & (ORER | PER | FER)) != 0) {
     1210                        /* オーバランエラー */
     1211                        if ((ssr & ORER) != 0) {
     1212                                /* RDRレジスタをリード */
     1213                                c = (int)sil_reb_mem(SCI_RDR(obj->base_address));
     1214                        }
     1215                        /* フレーミングエラー */
     1216                        if ((ssr & FER) != 0) {
     1217                        }
     1218                        /* パリティエラー */
     1219                        if ((ssr & PER) != 0) {
     1220                        }
     1221                }
     1222
     1223                /* SSR.ORER, PER, FERフラグを“0”に設定 */
     1224                sil_wrb_mem(SCI_SSR(obj->base_address), ssr & ~(ORER | PER | FER));
     1225
     1226                /* SSR.ORER, PER, FERフラグをリード */
     1227                ssr = sil_reb_mem(SCI_SSR(obj->base_address));
     1228
     1229                /* RXI割り込み */
     1230                if (serial_readable(obj)) {
     1231                        clear_int(obj->rxi_intno);
     1232                        break;
     1233                }
     1234
     1235                dly_tsk(10);
     1236        }
     1237
     1238        /* RDRレジスタをリード */
     1239        c = (int)sil_reb_mem(SCI_RDR(obj->base_address));
     1240
     1241        return c;
     1242}
     1243
     1244void serial_putc(serial_t *obj, int c)
     1245{
     1246        while (serial_writable(obj))
     1247                dly_tsk(10);
     1248
     1249        clear_int(obj->tei_intno);
     1250
     1251        sil_wrb_mem(SCI_TDR(obj->base_address), (char)c);
     1252}
     1253
     1254int serial_readable(serial_t *obj)
     1255{
     1256        return probe_int(obj->rxi_intno);
     1257}
     1258
     1259int serial_writable(serial_t *obj)
     1260{
     1261        return probe_int(obj->tei_intno);
     1262}
     1263
     1264uart_irq_handler sci_irq_handler[7];
     1265
     1266void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id)
     1267{
     1268        int no = SCI_NUM(obj->base_address);
     1269
     1270        sci_irq_handler[no] = handler;
     1271}
     1272
     1273void i2c_init(i2c_t *obj, PinName sda, PinName scl)
     1274{
     1275        if ((sda == I2C_SDA) && (scl == I2C_SCL)) {
     1276#ifdef TOPPERS_GRCITRUS
     1277                obj->base_address = (void *)SCI6_BASE;
     1278                obj->rxi_intno = INT_SCI6_RXI;
     1279                obj->txi_intno = INT_SCI6_TXI;
     1280                obj->tei_intno = INT_SCI6_TEI;
     1281#else
     1282                obj->base_address = (void *)SCI2_BASE;
     1283                obj->rxi_intno = INT_SCI2_RXI;
     1284                obj->txi_intno = INT_SCI2_TXI;
     1285                obj->tei_intno = INT_SCI2_TEI;
     1286#endif
     1287        }
     1288        else {
     1289                obj->base_address = NULL;
     1290                return;
     1291        }
     1292
     1293        /* SCI有効 */
     1294        sci_enable(obj->base_address, sciI2C);
     1295
     1296        /* SIMR3.IICSDAS[1:0](b5-b4), IICSCLS[1:0](b7-b6)ビットを“11b”に設定 */
     1297        sil_wrb_mem(SCI_SIMR3(obj->base_address), 0xF0U);
     1298
     1299        sci_set_frequency(obj->base_address, 100000);
     1300
     1301        /* SEMR、SNFR、SIMR1、SIMR2、SPMRレジスタに値を設定します。 */
     1302        /* SEMRレジスタは、NFENビットを設定します。 */
     1303        sil_wrb_mem(SCI_SEMR(obj->base_address), NFEN);
     1304
     1305        /* SNFRレジスタは、NFCS[2:0]ビットを設定します。*/
     1306        sil_wrb_mem(SCI_SNFR(obj->base_address), 1);
     1307
     1308        /* SIMR1レジスタは、IICMビットを“1”に設定し、IICDL[4:0]ビ       ットを設定します。 */
     1309        sil_wrb_mem(SCI_SIMR1(obj->base_address), IICM | (3 << 3));
     1310
     1311        /* SIMR2レジスタは、IICACKT、IICCSCビットを“1”に設定し、IICINTMビットを設定します。 */
     1312        sil_wrb_mem(SCI_SIMR2(obj->base_address), IICACKT | IICCSC | IICINTM);
     1313
     1314        /* SPMRレジスタは、全ビット“0”に設定します。 */
     1315        sil_wrb_mem(SCI_SPMR(obj->base_address), 0);
     1316
     1317        /* 送受信許可 */
     1318        sil_wrb_mem(SCI_SCR(obj->base_address),
     1319                (sil_reb_mem(SCI_SCR(obj->base_address)) | RE | TE));
     1320}
     1321
     1322void i2c_frequency(i2c_t *obj, int hz)
     1323{
     1324        uint8_t scr = sil_reb_mem(SCI_SCR(obj->base_address));
     1325
     1326        /* 送受信禁止, SCKn端子は入出力ポートとして使用 */
     1327        sil_wrb_mem(SCI_SCR(obj->base_address), 0x00U);
     1328
     1329        sci_set_frequency(obj->base_address, hz);
     1330
     1331        /* 送受信許可 */
     1332        sil_wrb_mem(SCI_SCR(obj->base_address), scr);
     1333}
     1334
     1335int i2c_start(i2c_t *obj)
     1336{
     1337        if (obj->base_address == NULL)
     1338                return 0;
     1339
     1340        /* SIMR3.IICSTAREQビットを“1”に設定すると同時に、
     1341         * SIMR3.IICSCLS[1:0],IICSDAS[1:0]ビットを“01b”に設定 */
     1342        sil_wrb_mem(SCI_SIMR3(obj->base_address), IICSTAREQ | (1 << 4) | (1 << 6));
     1343
    7341344        return 0;
    7351345}
    7361346
    737 void serial_putc(serial_t *obj, int c)
    738 {
    739 }
    740 
    741 int serial_readable(serial_t *obj)
    742 {
     1347int i2c_restart(i2c_t *obj)
     1348{
     1349        if (obj->base_address == NULL)
     1350                return 0;
     1351
     1352        sil_wrb_mem(SCI_SIMR3(obj->base_address), IICRSTAREQ | (1 << 4) | (1 << 6));
     1353
    7431354        return 0;
    7441355}
    7451356
    746 int serial_writable(serial_t *obj)
    747 {
     1357int i2c_stop(i2c_t *obj)
     1358{
     1359        if (obj->base_address == NULL)
     1360                return 0;
     1361
     1362        /* SIMR3.IICSTPREQビットを“1”に設定すると同時に、
     1363         * SIMR3.IICSCLS[1:0],IICSDAS[1:0]ビットを“01b”に設定 */
     1364        sil_wrb_mem(SCI_SIMR3(obj->base_address), IICSTPREQ | (1 << 4) | (1 << 6));
     1365
    7481366        return 0;
    7491367}
    7501368
    751 void i2c_init(i2c_t *obj, PinName sda, PinName scl)
    752 {
    753 }
    754 
    755 void i2c_frequency(i2c_t *obj, int hz)
    756 {
    757 }
    758 
    759 int i2c_start(i2c_t *obj)
    760 {
     1369int i2c_read(i2c_t *obj, int address, char *data, int length, int stop)
     1370{
     1371        if (obj->base_address == NULL)
     1372                return 0;
     1373
     1374        /* 送信割り込み要求を禁止 */
     1375        sil_wrb_mem(SCI_SCR(obj->base_address),
     1376                (sil_reb_mem(SCI_SCR(obj->base_address)) & ~(RIE)) | TEIE | TIE);
     1377
     1378        /* 開始条件の生成 */
     1379        i2c_start(obj);
     1380
     1381        /* STI(TEI)割り込み発生確認 */
     1382        while (!probe_int(obj->tei_intno))
     1383                dly_tsk(2);
     1384        clear_int(obj->tei_intno);
     1385
     1386        /* SIMR3.IICSTIFフラグを“0”に設定し、 */
     1387        sil_wrb_mem(SCI_SIMR3(obj->base_address),
     1388                sil_reb_mem(SCI_SIMR3(obj->base_address)) & ~IICSTIF);
     1389        /* SIMR3.IICSCLS[1:0], IICSDAS[1:0]ビットを“00b”に設定 */
     1390        sil_wrb_mem(SCI_SIMR3(obj->base_address),
     1391                sil_reb_mem(SCI_SIMR3(obj->base_address)) & ~((3 << 4) | (3 << 6)));
     1392
     1393        /* TDRレジスタにスレーブアドレス、R/Wビットをライト */
     1394        sil_wrb_mem(SCI_TDR(obj->base_address), address | 1);
     1395
     1396        /* TXI割り込み発生確認 */
     1397        while (!probe_int(obj->txi_intno))
     1398                dly_tsk(10);
     1399        clear_int(obj->txi_intno);
     1400
     1401        /* スレーブデバイスからのACKを確認 */
     1402        if ((sil_reb_mem(SCI_SISR(obj->base_address)) & IICACKR) == 0) {
     1403                /* SIMR2.IICACKTビットを“0”に設定 */
     1404                sil_wrb_mem(SCI_SIMR2(obj->base_address), sil_reb_mem(SCI_SIMR2(obj->base_address)) & ~IICACKT);
     1405                /* SCR.RIEビットを“1”に設定 */
     1406                sil_wrb_mem(SCI_SCR(obj->base_address), sil_reb_mem(SCI_SCR(obj->base_address)) | RIE);
     1407
     1408                for (int i = 0; i < length; i++) {
     1409                        /* 次データが最終 */
     1410                        if (i == length - 1) {
     1411                                /* SIMR2.IICACKTビットを“1”に設定 */
     1412                                sil_wrb_mem(SCI_SIMR2(obj->base_address), sil_reb_mem(SCI_SIMR2(obj->base_address)) | IICACKT);
     1413                        }
     1414
     1415                        /* TDRレジスタにダミーデータ“FFh”をライト */
     1416                        sil_wrb_mem(SCI_TDR(obj->base_address), 0xFF);
     1417
     1418                        /* RXI割り込み発生確認 */
     1419                        while (!probe_int(obj->rxi_intno))
     1420                                dly_tsk(10);
     1421                        clear_int(obj->rxi_intno);
     1422
     1423                        /* RDRレジスタの受信データをリード */
     1424                        *data = sil_reb_mem(SCI_RDR(obj->base_address));
     1425                        data++;
     1426
     1427                        /* TXI割り込み発生確認 */
     1428                        while (!probe_int(obj->txi_intno))
     1429                                dly_tsk(10);
     1430                        clear_int(obj->txi_intno);
     1431                }
     1432        }
     1433
     1434        if (stop) {
     1435                /* 停止条件の生成 */
     1436                i2c_stop(obj);
     1437
     1438                /* STI(TEI)割り込み発生確認 */
     1439                while (!probe_int(obj->tei_intno))
     1440                        dly_tsk(2);
     1441                clear_int(obj->tei_intno);
     1442
     1443                /* SIMR3.IICSTIFフラグを“0”に設定し、*/
     1444                sil_wrb_mem(SCI_SIMR3(obj->base_address),
     1445                        sil_reb_mem(SCI_SIMR3(obj->base_address)) & ~IICSTIF);
     1446                /* SIMR3.IICSCLS[1:0], IICSDAS[1:0]ビットを“11b”に設定 */
     1447                sil_wrb_mem(SCI_SIMR3(obj->base_address),
     1448                        sil_reb_mem(SCI_SIMR3(obj->base_address)) | ((3 << 4) | (3 << 6)));
     1449        }
     1450
     1451        return length;
     1452}
     1453
     1454int i2c_write(i2c_t *obj, int address, const char *data, int length, int stop)
     1455{
     1456        if (obj->base_address == NULL)
     1457                return 0;
     1458
     1459        /* 受信割り込み要求を禁止 */
     1460        sil_wrb_mem(SCI_SCR(obj->base_address),
     1461                (sil_reb_mem(SCI_SCR(obj->base_address)) & ~(RIE)) | TEIE | TIE);
     1462
     1463        /* 開始条件の生成 */
     1464        i2c_start(obj);
     1465
     1466        /* STI(TEI)割り込み発生確認 */
     1467        while (!probe_int(obj->tei_intno))
     1468                dly_tsk(2);
     1469        clear_int(obj->tei_intno);
     1470
     1471        /* SIMR3.IICSTIFフラグを“0”に設定し、 */
     1472        sil_wrb_mem(SCI_SIMR3(obj->base_address),
     1473                sil_reb_mem(SCI_SIMR3(obj->base_address)) & ~IICSTIF);
     1474        /* SIMR3.IICSCLS[1:0], IICSDAS[1:0]ビットを“00b”に設定 */
     1475        sil_wrb_mem(SCI_SIMR3(obj->base_address),
     1476                sil_reb_mem(SCI_SIMR3(obj->base_address)) & ~((3 << 4) | (3 << 6)));
     1477
     1478        /* TDRレジスタにスレーブアドレス、R/Wビットをライト */
     1479        sil_wrb_mem(SCI_TDR(obj->base_address), address);
     1480
     1481        /* TXI割り込み発生確認 */
     1482        while (!probe_int(obj->txi_intno))
     1483                dly_tsk(10);
     1484        clear_int(obj->txi_intno);
     1485
     1486        /* スレーブデバイスからのACKを確認 */
     1487        if ((sil_reb_mem(SCI_SISR(obj->base_address)) & IICACKR) == 0) {
     1488
     1489                for (int i = 0; i < length; i++) {
     1490                        /* TDRレジスタにスレーブアドレス、R/Wビットをライト */
     1491                        sil_wrb_mem(SCI_TDR(obj->base_address), *data);
     1492                        data++;
     1493
     1494                        /* TXI割り込み発生確認 */
     1495                        while (!probe_int(obj->txi_intno))
     1496                                dly_tsk(10);
     1497                        clear_int(obj->txi_intno);
     1498                }
     1499        }
     1500
     1501        if (stop) {
     1502                /* 停止条件の生成 */
     1503                i2c_stop(obj);
     1504
     1505                /* STI(TEI)割り込み発生確認 */
     1506                while (!probe_int(obj->tei_intno))
     1507                        dly_tsk(2);
     1508                clear_int(obj->tei_intno);
     1509
     1510                /* SIMR3.IICSTIFフラグを“0”に設定し、*/
     1511                sil_wrb_mem(SCI_SIMR3(obj->base_address),
     1512                        sil_reb_mem(SCI_SIMR3(obj->base_address)) & ~IICSTIF);
     1513                /* SIMR3.IICSCLS[1:0], IICSDAS[1:0]ビットを“11b”に設定 */
     1514                sil_wrb_mem(SCI_SIMR3(obj->base_address),
     1515                        sil_reb_mem(SCI_SIMR3(obj->base_address)) | ((3 << 4) | (3 << 6)));
     1516        }
     1517
     1518        return length;
     1519}
     1520
     1521int i2c_byte_read(i2c_t *obj, int last)
     1522{
     1523        if (obj->base_address == NULL)
     1524                return 0;
     1525
    7611526        return 0;
    7621527}
    7631528
    764 int i2c_stop(i2c_t *obj)
    765 {
     1529int i2c_byte_write(i2c_t *obj, int data)
     1530{
     1531        if (obj->base_address == NULL)
     1532                return 0;
     1533
    7661534        return 0;
    7671535}
    7681536
    769 int i2c_read(i2c_t *obj, int address, char *data, int length, int stop)
    770 {
    771         return 0;
    772 }
    773 
    774 int i2c_write(i2c_t *obj, int address, const char *data, int length, int stop)
    775 {
    776         return 0;
    777 }
    778 
    779 int i2c_byte_read(i2c_t *obj, int last)
    780 {
    781         return 0;
    782 }
    783 
    784 int i2c_byte_write(i2c_t *obj, int data)
    785 {
    786         return 0;
    787 }
    788 
    7891537void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel)
    7901538{
     1539        if ((mosi == D11) && (miso == D12) && (sclk == D13) && ((ssel == D10) || (ssel == NC))) {
     1540                obj->base_address = (void *)SCI8_BASE;
     1541                obj->txi_intno = INT_SCI8_TXI;
     1542                obj->rxi_intno = INT_SCI8_RXI;
     1543                obj->tei_intno = INT_SCI8_TEI;
     1544        }
     1545        else {
     1546                obj->base_address = NULL;
     1547                return;
     1548        }
     1549
     1550        /* SCI有効 */
     1551        sci_enable(obj->base_address, (ssel == D10) ? sciSPIS : sciSPIM);
     1552
     1553        /* SIMR1.IICMビットを“0”に設定 */
     1554        sil_wrb_mem(SCI_SIMR1(obj->base_address),
     1555                sil_reb_mem(SCI_SIMR1(obj->base_address)) & ~IICM);
     1556
     1557        if (ssel == NC) {
     1558                /* SPMR.SSE, CTSE, MSS, MFF, CKPH, CKPOLビットを“0”に設定 */
     1559                sil_wrb_mem(SCI_SPMR(obj->base_address), 0);
     1560        }
     1561        else {
     1562                /* SPMR, CTSE, MSS, MFF, CKPH, CKPOLビットを“0”に設定 */
     1563                /* SPMR.SSEビットを“1”に設定 */
     1564                sil_wrb_mem(SCI_SPMR(obj->base_address), SSE);
     1565        }
     1566
     1567        /* SCMR.SMIF ビットを“0”に設定 */
     1568        sil_wrb_mem(SCI_SCMR(obj->base_address),
     1569                sil_reb_mem(SCI_SCMR(obj->base_address)) & ~SMIF);
     1570
     1571        /* SMRに送信/ 受信フォーマットをクロック同期式モードで動作で設定 */
     1572        sil_wrb_mem(SCI_SMR(obj->base_address), CM);
     1573
     1574        sci_set_frequency(obj->base_address, 1000000);
     1575
     1576        /* 送受信許可 */
     1577        sil_wrb_mem(SCI_SCR(obj->base_address),
     1578                (sil_reb_mem(SCI_SCR(obj->base_address)) | RE | TE));
    7911579}
    7921580
    7931581void spi_free(spi_t *obj)
    7941582{
     1583        /* SCI無効 */
     1584        sci_disable(obj->base_address);
     1585
     1586        obj->base_address = NULL;
    7951587}
    7961588
    7971589void spi_format(spi_t *obj, int bits, int mode, int slave)
    7981590{
     1591        int polarity = (mode & 0x2) ? 1 : 0;
     1592        int phase = (mode & 0x1) ? 1 : 0;
     1593        uint8_t spmr;
     1594
     1595        if ((bits != 8) || (mode < 0) || (mode > 3)) {
     1596                return;
     1597        }
     1598
     1599        /* 送受信禁止, SCKn端子は入出力ポートとして使用 */
     1600        sil_wrb_mem(SCI_SCR(obj->base_address), 0x00U);
     1601
     1602        spmr = sil_reb_mem(SCI_SPMR(obj->base_address));
     1603
     1604        /* クロック極性反転あり/なし */
     1605        if (polarity)
     1606                spmr |= CKPOL;
     1607        else
     1608                spmr &= ~CKPOL;
     1609
     1610        /* クロック位相反転あり/なし */
     1611        if (phase)
     1612                spmr |= CKPH;
     1613        else
     1614                spmr &= ~CKPH;
     1615
     1616        if (slave) {
     1617                /* SCKn端子はクロック入力として使用 */
     1618                sil_wrb_mem(SCI_SCR(obj->base_address),
     1619                        (sil_reb_mem(SCI_SCR(obj->base_address)) & ~CKE) | 2);
     1620
     1621                /* SPMR.MSSビットを“1”に設定 */
     1622                sil_wrb_mem(SCI_SPMR(obj->base_address), spmr | MSS);
     1623        }
     1624        else {
     1625                /* SCKn端子はクロック出力として使用 */
     1626                sil_wrb_mem(SCI_SCR(obj->base_address),
     1627                        sil_reb_mem(SCI_SCR(obj->base_address)) & ~CKE);
     1628
     1629                /* SPMR.MSSビットを“0”に設定 */
     1630                sil_wrb_mem(SCI_SPMR(obj->base_address), spmr & ~MSS);
     1631        }
     1632
     1633        /* 送受信許可 */
     1634        sil_wrb_mem(SCI_SCR(obj->base_address),
     1635                (sil_reb_mem(SCI_SCR(obj->base_address)) | RE | TE));
    7991636}
    8001637
    8011638void spi_frequency(spi_t *obj, int hz)
    8021639{
     1640        uint8_t scr = sil_reb_mem(SCI_SCR(obj->base_address));
     1641
     1642        /* 送受信禁止, SCKn端子は入出力ポートとして使用 */
     1643        sil_wrb_mem(SCI_SCR(obj->base_address), 0x00U);
     1644
     1645        sci_set_frequency(obj->base_address, hz);
     1646
     1647        /* 送受信許可 */
     1648        sil_wrb_mem(SCI_SCR(obj->base_address), scr);
    8031649}
    8041650
    8051651int spi_master_write(spi_t *obj, int value)
    8061652{
    807         return 0;
     1653        /* TXI割り込み発生確認 */
     1654        while (!probe_int(obj->txi_intno))
     1655                ;
     1656
     1657        /* 送信データをライト */
     1658        sil_wrb_mem(SCI_TDR(obj->base_address), (char)value);
     1659
     1660        do {
     1661                uint8_t ssr = sil_reb_mem(SCI_SSR(obj->base_address));
     1662                if ((ssr & ORER) != 0) {
     1663                        ssr &= ~ORER;
     1664                        sil_wrb_mem(SCI_SSR(obj->base_address), ssr);
     1665                        return -1;
     1666                }
     1667        }
     1668        /* RXI割り込み発生確認 */
     1669        while (!probe_int(obj->rxi_intno));
     1670
     1671        /* 受信データをリード */
     1672        return sil_reb_mem(SCI_RDR(obj->base_address));
     1673}
     1674
     1675int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
     1676        char *rx_buffer, int rx_length, char write_fill)
     1677{
     1678        int total = (tx_length > rx_length) ? tx_length : rx_length;
     1679
     1680        for (int i = 0; i < total; i++) {
     1681                char out = (i < tx_length) ? tx_buffer[i] : write_fill;
     1682                char in = spi_master_write(obj, out);
     1683                if (i < rx_length) {
     1684                        rx_buffer[i] = in;
     1685                }
     1686        }
     1687
     1688        return total;
    8081689}
    8091690
     
    8581739        sil_wrb_mem((uint8_t *)RTC_RSECCNT_ADDR, DecToBcd(tm.tm_sec));
    8591740}
     1741
     1742void sci_rxi_handler(uint32_t id)
     1743{
     1744        uart_irq_handler hdr = sci_irq_handler[id];
     1745        if (hdr == NULL)
     1746                return;
     1747
     1748        hdr(id, RxIrq);
     1749}
     1750
     1751void sci_txi_handler(uint32_t id)
     1752{
     1753        uart_irq_handler hdr = sci_irq_handler[id];
     1754        if (hdr == NULL)
     1755                return;
     1756
     1757        hdr(id, TxIrq);
     1758}
     1759
     1760void sci_tei_handler(int no)
     1761{
     1762}
     1763
     1764void sci0_rxi_handler(void)
     1765{
     1766        sci_rxi_handler(0);
     1767}
     1768
     1769void sci0_txi_handler(void)
     1770{
     1771        sci_txi_handler(0);
     1772}
     1773
     1774void sci0_tei_handler(void)
     1775{
     1776        sci_tei_handler(0);
     1777}
     1778
     1779void sci1_rxi_handler(void)
     1780{
     1781        sci_rxi_handler(1);
     1782}
     1783
     1784void sci1_txi_handler(void)
     1785{
     1786        sci_txi_handler(1);
     1787}
     1788
     1789void sci1_tei_handler(void)
     1790{
     1791        sci_tei_handler(1);
     1792}
     1793
     1794void sci2_rxi_handler(void)
     1795{
     1796        sci_rxi_handler(2);
     1797}
     1798
     1799void sci2_txi_handler(void)
     1800{
     1801        sci_txi_handler(2);
     1802}
     1803
     1804void sci2_tei_handler(void)
     1805{
     1806        sci_tei_handler(2);
     1807}
     1808
     1809void sci3_rxi_handler(void)
     1810{
     1811        sci_rxi_handler(3);
     1812}
     1813
     1814void sci3_txi_handler(void)
     1815{
     1816        sci_txi_handler(3);
     1817}
     1818
     1819void sci3_tei_handler(void)
     1820{
     1821        sci_tei_handler(3);
     1822}
     1823
     1824void sci4_rxi_handler(void)
     1825{
     1826        sci_rxi_handler(4);
     1827}
     1828
     1829void sci4_txi_handler(void)
     1830{
     1831        sci_txi_handler(4);
     1832}
     1833
     1834void sci4_tei_handler(void)
     1835{
     1836        sci_tei_handler(4);
     1837}
     1838
     1839void sci5_rxi_handler(void)
     1840{
     1841        sci_rxi_handler(5);
     1842}
     1843
     1844void sci5_txi_handler(void)
     1845{
     1846        sci_txi_handler(5);
     1847}
     1848
     1849void sci5_tei_handler(void)
     1850{
     1851        sci_tei_handler(5);
     1852}
     1853
     1854void sci6_rxi_handler(void)
     1855{
     1856        sci_rxi_handler(6);
     1857}
     1858
     1859void sci6_txi_handler(void)
     1860{
     1861        sci_txi_handler(6);
     1862}
     1863
     1864void sci6_tei_handler(void)
     1865{
     1866        sci_tei_handler(6);
     1867}
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/mbed_api.h

    r337 r364  
    22 *  TOPPERS ECHONET Lite Communication Middleware
    33 *
    4  *  Copyright (C) 2014-2017 Cores Co., Ltd. Japan
     4 *  Copyright (C) 2014-2018 Cores Co., Ltd. Japan
    55 *
    66 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     
    3838#define _MBED_API_H_
    3939
     40#define DEVICE_SPI
     41#define DEVICE_I2C
     42
    4043void mbed_api_init(void);
    4144
     
    4447
    4548typedef enum {
     49        D0, /* P21 */
     50        D1, /* P20 */
     51        D2, /* P22 */
     52        D3, /* P23 */
     53        D4, /* P24 */
     54        D5, /* P25 */
     55        D6, /* P32 */
     56        D7, /* P33 */
     57        D8, /* PC2 */
     58        D9, /* PC3 */
     59        D10, /* PC4 */
     60        D11, /* PC6 */
     61        D12, /* PC7 */
     62        D13, /* PC5 */
     63
     64        A0, /* AN0 */
     65        A1, /* AN1 */
     66        A2, /* AN2 */
     67        A3, /* AN3 */
     68        A4, /* AN4 */
     69        A5, /* AN5 */
     70        A6, /* AN6 */
     71        A7, /* AN7 */
     72
     73        I2C_SCL, /* P52 */
     74        I2C_SDA, /* P50 */
     75
    4676        PIN_LED0,
    4777        PIN_LED1,
    4878        PIN_LED2,
    4979        PIN_LED3,
    50         PIN_BUTTON0,
     80        PIN_SW,
     81
    5182        NC = (int)0xFFFFFFFF
    5283} PinName;
     
    5687#define LED_BLUE                PIN_LED2
    5788#define LED_USER                PIN_LED3
    58 #define USER_BUTTON0    PIN_BUTTON0
     89#define USER_BUTTON0    PIN_SW
    5990
    6091typedef enum {
     
    6495
    6596typedef enum {
    66         PullUp = 0,
     97        PullUp = 2,
    6798        PullDown = 3,
    68         PullNone = 2,
     99        PullNone = 0,
    69100        OpenDrain = 4,
    70         PullDefault = PullDown
     101        PullDefault = PullNone
    71102} PinMode;
    72103
     
    114145
    115146typedef enum {
    116     ParityNone = 0,
    117     ParityOdd = 1,
    118     ParityEven = 2,
    119     ParityForced1 = 3,
    120     ParityForced0 = 4
     147        ParityNone = 0,
     148        ParityOdd = 1,
     149        ParityEven = 2,
     150        ParityForced1 = 3,
     151        ParityForced0 = 4
    121152} SerialParity;
    122153
    123154typedef enum {
    124     FlowControlNone,
    125     FlowControlRTS,
    126     FlowControlCTS,
    127     FlowControlRTSCTS
     155        RxIrq,
     156        TxIrq
     157} SerialIrq;
     158
     159typedef enum {
     160        FlowControlNone,
     161        FlowControlRTS,
     162        FlowControlCTS,
     163        FlowControlRTSCTS
    128164} FlowControl;
    129165
    130166typedef struct serial_s {
    131         int dummy;
     167        void *base_address;
     168        int rxi_intno;
     169        int tei_intno;
    132170} serial_t;
    133171
    134 typedef struct spi_s {
    135         int dummy;
    136 } spi_t;
     172typedef void (*uart_irq_handler)(uint32_t id, SerialIrq event);
    137173
    138174void serial_init(serial_t *obj, PinName tx, PinName rx);
     
    144180int serial_readable(serial_t *obj);
    145181int serial_writable(serial_t *obj);
     182void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id);
    146183
    147184typedef struct i2c_s {
     185        void *base_address;
     186        int rxi_intno;
     187        int txi_intno;
     188        int tei_intno;
    148189        unsigned char rxdata[16];
    149190} i2c_t;
     
    158199int i2c_byte_write(i2c_t *obj, int data);
    159200
     201#define SPI_FILL_CHAR         (0xFF)
     202
     203typedef struct spi_s {
     204        void *base_address;
     205        int rxi_intno;
     206        int txi_intno;
     207        int tei_intno;
     208} spi_t;
     209
    160210void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel);
    161211void spi_free(spi_t *obj);
     
    163213void spi_frequency(spi_t *obj, int hz);
    164214int spi_master_write(spi_t *obj, int value);
     215int spi_master_block_write(spi_t *obj, const char *tx_buffer, int tx_length,
     216        char *rx_buffer, int rx_length, char write_fill);
    165217
    166218void rtc_init(void);
     
    170222void rtc_write(time_t t);
    171223
     224void sci0_rxi_handler(void);
     225void sci0_txi_handler(void);
     226void sci0_tei_handler(void);
     227
     228void sci1_rxi_handler(void);
     229void sci1_txi_handler(void);
     230void sci1_tei_handler(void);
     231
     232void sci2_rxi_handler(void);
     233void sci2_txi_handler(void);
     234void sci2_tei_handler(void);
     235
     236void sci3_rxi_handler(void);
     237void sci3_txi_handler(void);
     238void sci3_tei_handler(void);
     239
     240void sci4_rxi_handler(void);
     241void sci4_txi_handler(void);
     242void sci4_tei_handler(void);
     243
     244void sci5_rxi_handler(void);
     245void sci5_txi_handler(void);
     246void sci5_tei_handler(void);
     247
     248void sci6_rxi_handler(void);
     249void sci6_txi_handler(void);
     250void sci6_tei_handler(void);
     251
    172252#endif /* _MBED_API_H_ */
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/net_misc.h

    r359 r364  
    4141/* スタックサイズ */
    4242
    43 #define NET_MISC_STACK_SIZE     1024            /* NTP クライアントタスク(IPv4)のスタックサイズ  */
     43#define NET_MISC_STACK_SIZE     2048            /* NTP クライアントタスク(IPv4)のスタックサイズ  */
    4444
    4545/* 優先度 */
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/netcmd.c

    r342 r364  
    239239int usrcmd_ping(int argc, char **argv)
    240240{
    241         int     tmo, size;
    242         char    apip = DEFAULT_API_PROTO;
     241        int tmo = 3, size = 64;
     242        char apip = DEFAULT_API_PROTO;
    243243        char *line = argv[1];
    244244#if defined(SUPPORT_INET6)
     
    262262
    263263#if defined(SUPPORT_INET6) && defined(SUPPORT_INET4)
     264        if (argc <= 2)
     265                return 0;
     266
    264267        if ('0' <= *line && *line <= '9') {
    265268                if (*line == '6')
     
    269272                line++;
    270273        }
     274
     275        line = argv[2];
     276#else
     277        if (argc <= 1)
     278                return 0;
    271279#endif  /* of #if defined(SUPPORT_INET6) && defined(SUPPORT_INET4) */
    272280
     
    276284        }
    277285
    278         line = argv[2];
    279         if ('0' <= *line && *line <= '9')
    280                 line = get_int(&tmo, line);
    281         else
    282                 tmo = 3;
    283 
    284         line = argv[3];
    285         if ('0' <= *line && *line <= '9')
    286                 line = get_int(&size, line);
    287         else
    288                 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        }
    289297
    290298#if defined(SUPPORT_INET6)
     
    337345{
    338346        ER ret;
     347
     348        if (argc < 2)
     349                return 0;
     350
    339351        if (ntlibc_strcmp(argv[1], "rel") == 0) {
    340352                ret = dhcp4c_rel_info();
     
    348360                dhcp4c_info();
    349361        }
     362
    350363        return 0;
    351364}
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/ntp_cli.c

    r359 r364  
    265265
    266266        nc->buf[0] = '\0';
    267 #ifndef _MSC_VER
     267#ifdef __NEED_struct_timespec
    268268        if (ctime_r(&tp.tv_sec, nc->buf) != NULL)
    269269#else
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/ntshell_main.c

    r342 r364  
    6060#include "socket_stub.h"
    6161#include "usb_hbth.h"
     62#include "mbed_api.h"
    6263
    6364extern int bt_bnep_mode;
     
    6970const struct utsname host_name = {
    7071        "TOPPERS/ASP3",
    71     TARGET_NAME,
    72     "3.2.0",
    73     "3.2.0",
    74     TARGET_NAME,
    75     "toppers.jp"
     72        TARGET_NAME,
     73        "3.2.0",
     74        "3.2.0",
     75        TARGET_NAME,
     76        "toppers.jp"
    7677};
    7778
     
    8889jmp_buf process_exit;
    8990void sys_init(void);
    90 
    91 void ntshell_task_init()
    92 {
     91NTSHELL_SERIAL_READ ntshell_serial_read = 0;
     92NTSHELL_SERIAL_WRITE ntshell_serial_write = 0;
     93void *ntshell_serial_extobj;
     94
     95unsigned char ntstdio_xi(struct ntstdio_t *handle)
     96{
     97        unsigned char buf[1];
     98        ntshell_serial_read((char *)buf, 1, ntshell_serial_extobj);
     99        return buf[0];
     100}
     101
     102void ntstdio_xo(struct ntstdio_t *handle, unsigned char c)
     103{
     104        char buf[1];
     105        buf[0] = c;
     106        ntshell_serial_write(buf, 1, ntshell_serial_extobj);
     107}
     108
     109void ntshell_task_init(NTSHELL_SERIAL_READ func_read,
     110        NTSHELL_SERIAL_WRITE func_write, void *extobj)
     111{
     112        ntshell_serial_read = func_read;
     113        ntshell_serial_write = func_write;
     114        ntshell_serial_extobj = extobj;
     115
    93116        sys_init();
    94117
     
    126149        int result = 0;
    127150        int found = 0;
     151
     152        if (*args == 0)
     153                return result;
    128154
    129155        if (strcmp((const char *)args[1], "help") == 0) {
     
    295321int shell_clock_getres(clockid_t clk_id, struct timespec *res)
    296322{
    297         if (clk_id != CLOCK_REALTIME)
     323        if ((clk_id != CLOCK_REALTIME) && (clk_id != CLOCK_MONOTONIC))
    298324                return -EINVAL;
    299325
     
    308334        SYSTIM now = 0;
    309335
    310         if (clk_id != CLOCK_REALTIME)
     336        if ((clk_id != CLOCK_REALTIME) && (clk_id != CLOCK_MONOTONIC))
    311337                return -EINVAL;
    312338
     
    320346int shell_clock_settime(clockid_t clk_id, const struct timespec *tp)
    321347{
    322         if (clk_id != CLOCK_REALTIME)
     348        if ((clk_id != CLOCK_REALTIME) && (clk_id != CLOCK_MONOTONIC))
    323349                return -EINVAL;
    324350
    325         rtc_write(tp->tv_sec);
     351        SYSTIM time;
     352        ER ret;
     353
     354        time = (tp->tv_sec * 1000000ll) + (tp->tv_nsec / 1000ll);
     355
     356        ret = set_tim(time);
     357        if (ret != E_OK) {
     358                return -EPERM;
     359        }
    326360
    327361        return 0;
     
    356390}
    357391
    358 struct sigaction sigtable[6];
     392struct sigaction sigtable[7];
    359393
    360394int shell_sigaction(int sig, const struct sigaction *restrict sa, struct sigaction *restrict old)
     
    381415                sat = &sigtable[5];
    382416                break;
     417        case SIGPIPE:
     418                sat = &sigtable[6];
     419                break;
    383420        default:
    384421                return -EINVAL;
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/ntshell_main.cfg

    r337 r364  
    4343CRE_TSK(NTSHELL_TASK, { TA_NULL, 0, ntshell_task, NTSHELL_PRIORITY, NTSHELL_STACK_SIZE, NULL });
    4444CRE_FLG(FLG_SELECT_WAIT, { TA_WMUL, 0x00 });
     45CRE_SEM(SEM_FILEDESC, { TA_TPRI, 1, 1 });
    4546CRE_SEM(SEM_MALLOC, { TA_TPRI, 1, 1 });
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/ntshell_main.h

    r337 r364  
    4949
    5050#include "usrcmd.h"
     51#include "core/ntshell.h"
    5152
    5253/*
     
    5455 */
    5556
    56 #define NTSHELL_PRIORITY        4               /* ntshellタスクの優先度 */
     57#define NTSHELL_PRIORITY        8               /* ntshellタスクの優先度 */
    5758
    5859#define NTSHELL_STACK_SIZE      8192    /* ntshellタスクのスタック領域のサイズ */
     
    7576extern PRI main_task_priority;
    7677
    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 
    8178/* ntshellタスク初期化 */
    82 void ntshell_task_init();
     79void ntshell_task_init(NTSHELL_SERIAL_READ func_read,
     80        NTSHELL_SERIAL_WRITE func_write, void *extobj);
    8381
    8482/* ntshellタスク */
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/shellif.h

    r342 r364  
    3939
    4040#ifdef _MSC_VER
    41 #define _CRT_NO_TIME_T
    42 #define tm msc_tm
    43 #include <time.h>
    44 #include <errno.h>
    45 #include <limits.h>
    46 #include <stdlib.h>
    47 #undef tm
    4841#undef NULL
    4942#endif
     
    133126#endif
    134127
     128#ifdef __cplusplus
     129extern "C" {
     130#endif
     131
    135132// time.h
    136133#define CLOCK_REALTIME 0
     
    179176int shell_access(const char *path, int mode);
    180177// 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);
     178int shell_sigprocmask(int how, const sigset_t *__restrict set, sigset_t *__restrict old);
     179int shell_sigaction(int sig, const struct sigaction *__restrict sa, struct sigaction *__restrict old);
    183180// socket.h
    184181int shell_socket(int, int, int);
    185182int shell_connect(int, const struct sockaddr *, socklen_t);
    186 ssize_t shell_send(int, const void *, size_t, int);
    187183ssize_t shell_sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t);
    188184ssize_t shell_sendmsg(int, const struct msghdr *, int);
     
    190186int shell_listen(int, int);
    191187int shell_accept(int, struct sockaddr *__restrict, socklen_t *__restrict);
    192 ssize_t shell_recv(int, void *, size_t, int);
    193188ssize_t shell_recvfrom(int, void *__restrict, size_t, int, struct sockaddr *__restrict, socklen_t *__restrict);
    194189ssize_t shell_recvmsg(int, struct msghdr *, int);
     
    263258int shell_pipe2(int [2], int);
    264259int 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);
     260int shell_pselect6(int, fd_set *__restrict, fd_set *__restrict,
     261        fd_set *__restrict, const struct timespec *__restrict, const sigset_t *__restrict);
    267262int shell_setpgid(pid_t, pid_t);
    268263int shell_setsid();
     
    308303#endif
    309304
    310 struct tm *gmtime_r(const time_t *t, struct tm *tm);
    311305void *malloc(size_t size);
    312306void *calloc(size_t size, size_t count);
     
    314308void free(void *ptr);
    315309
     310#ifdef __cplusplus
     311}
     312#endif
     313
    316314#endif /* SHELLIF_H */
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/socket_stub.c

    r337 r364  
    4242#include <sil.h>
    4343#include "syssvc/syslog.h"
     44#include <tinet_defs.h>
    4445#include <tinet_config.h>
     46#include <net/net.h>
     47#include <net/net_endian.h>
    4548#include <netinet/in.h>
    4649#include <netinet/in_itron.h>
     
    5356#include <net/if_var.h>
    5457#include <netinet/udp_var.h>
     58#include <net/net_buf.h>
    5559//#include <netinet/tcp_var.h>
    5660#include <netapp/resolver.h>
     
    5862#include "ff.h"
    5963#include "socket_stub.h"
     64#include "kernel_cfg.h"
    6065
    6166#define SOCKET_TIMEOUT 2000000
     
    181186                        fp->psock->buf_size = 512 + 512;
    182187                        fp->psock->buf = malloc(fp->psock->buf_size);
     188#ifdef _DEBUG
     189                        memset(fp->psock->buf, 0, fp->psock->buf_size);
     190#endif
    183191                        T_TCP_CCEP ccep = { 0, fp->psock->buf, 512, &fp->psock->buf[512], 512, (FP)socket_tcp_callback };
    184192                        ret = tcp_cre_cep(cepid, &ccep);
     
    279287                        fp->psock->buf_size = 512 + 512;
    280288                        fp->psock->buf = malloc(fp->psock->buf_size);
     289#ifdef _DEBUG
     290                        memset(fp->psock->buf, 0, fp->psock->buf_size);
     291#endif
    281292                        T_TCP_CCEP ccep = { 0, fp->psock->buf, 512, &fp->psock->buf[512], 512, (FP)socket_tcp_callback };
    282293                        ret = tcp_cre_cep(cepid, &ccep);
     
    298309                        return -EHOSTUNREACH;
    299310                }
    300                 fp->writable = 1;
    301311                break;
    302312        }
     
    322332        }
    323333
    324         memcpy(&fp->psock, &lfp->psock, sizeof(fp->psock));
     334        memcpy(fp->psock, lfp->psock, offsetof(socket_t, buf_size));
    325335
    326336        ER ret;
     
    335345                        fp->psock->buf_size = 512 + 512;
    336346                        fp->psock->buf = malloc(fp->psock->buf_size);
     347#ifdef _DEBUG
     348                        memset(fp->psock->buf, 0, fp->psock->buf_size);
     349#endif
    337350                        T_TCP_CCEP ccep = { 0, fp->psock->buf, 512, &fp->psock->buf[512], 512, (FP)socket_tcp_callback };
    338351                        ret = tcp_cre_cep(cepid, &ccep);
     
    346359                else {
    347360                        cepid = lfp->psock->cepid;
     361                        fp->handle = cepid;
    348362                        lfp->handle = tmax_tcp_cepid + lfp->psock->repid;
    349363                        lfp->psock->cepid = 0;
     
    356370                        return -ENOMEM;
    357371                }
    358                 fp->writable = 1;
    359372                struct sockaddr_in *raddr = &fp->psock->raddr4;
    360373                memset(raddr, 0, sizeof(*raddr));
     
    384397}
    385398
    386 ssize_t shell_send(int fd, const void *buf, size_t len, int flags)
     399ssize_t shell_sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *addr, socklen_t alen)
    387400{
    388401        SOCKET *fp = fd_to_fp(fd);
     
    396409                switch (fp->psock->type) {
    397410                case SOCK_STREAM: {
    398                         fp->writable = 0;
     411                        if ((addr != NULL) || (alen != 0)) {
     412                                return -EISCONN;
     413                        }
     414
    399415                        if (flags & MSG_OOB) {
    400416                                ret = tcp_snd_oob(fp->psock->cepid, (void *)buf, len, SOCKET_TIMEOUT);
     
    404420                        }
    405421                        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                                }
    455434                        }
    456435                        break;
     
    458437                case SOCK_DGRAM: {
    459438                        int sz = alen;
    460                         if (sz < 8) {
     439                        if ((addr == NULL) || (sz < 8)) {
    461440                                return -EINVAL;
    462441                        }
     
    465444                        memcpy(raddr, addr, sz);
    466445                        T_IPV4EP rep = { ntohl(raddr->sin_addr.s_addr), ntohs(raddr->sin_port) };
    467                         fp->writable = 0;
    468446                        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);
    470448                        if (ret < 0) {
    471                                 return -ECOMM;
     449                                return (ret == E_TMOUT) ? -ETIME : -ECOMM;
    472450                        }
    473451                        break;
     
    490468}
    491469
    492 ssize_t shell_recv(int fd, void *buf, size_t len, int flags)
     470ssize_t shell_recvfrom(int fd, void *__restrict buf, size_t len, int flags, struct sockaddr *__restrict addr, socklen_t *__restrict alen)
    493471{
    494472        SOCKET *fp = fd_to_fp(fd);
     
    505483                                ret = tcp_rcv_oob(fp->psock->cepid, buf, len);
    506484                                if (ret < 0) {
     485                                        syslog(LOG_ERROR, "tcp_rcv_oob => %d", ret);
    507486                                        return -ECOMM;
    508487                                }
    509488                        }
    510489                        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);
    512549                                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);
    550556                                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                                        }
    552579                                }
    553580                        }
    554581                        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);
    556595                                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;
    577608                }
    578609                }
     
    830861int tcp_fd_close(struct _IO_FILE *fp)
    831862{
    832         ER ret;
    833 
    834         free(fp->psock->buf);
    835         fp->psock->buf = NULL;
     863        ER ret, ret2;
    836864
    837865        switch (fp->psock->family) {
     
    844872                        }
    845873                        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;
    850877                        delete_tcp_fd(cepid);
    851878                        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;
    854881                        }
    855882                }
     
    857884                        ID repid = fp->psock->repid;
    858885                        ret = tcp_del_rep(repid);
     886                        free(fp->psock->buf);
     887                        fp->psock->buf = NULL;
    859888                        delete_tcp_fd(tmax_tcp_cepid + repid);
    860889                        delete_id(tcp_repid_table, tcp_repid_table_count, repid);
     
    864893                }
    865894                else {
     895                        free(fp->psock->buf);
     896                        fp->psock->buf = NULL;
    866897                        return -EINVAL;
    867898                }
     
    878909size_t tcp_fd_read(struct _IO_FILE *fp, unsigned char *dst, size_t dstsz)
    879910{
    880         return shell_recv(fp->fd, dst, dstsz, 0);
     911        return shell_recvfrom(fp->fd, dst, dstsz, 0, NULL, NULL);
    881912}
    882913
    883914size_t tcp_fd_write(struct _IO_FILE *fp, const unsigned char *src, size_t srcsz)
    884915{
    885         return shell_send(fp->fd, src, srcsz, 0);
     916        return shell_sendto(fp->fd, src, srcsz, 0, NULL, 0);
    886917}
    887918
     
    901932        ID cepid;
    902933
    903         free(fp->psock->buf);
    904         fp->psock->buf = NULL;
    905 
    906934        switch (fp->psock->family) {
    907935        case AF_INET: {
    908936                cepid = fp->psock->cepid;
    909937                ret = udp_del_cep(cepid);
     938                //free(fp->psock->buf);
     939                //fp->psock->buf = NULL;
    910940                delete_udp_fd(cepid);
    911941                delete_id(udp_cepid_table, udp_cepid_table_count, cepid);
     
    925955size_t udp_fd_read(struct _IO_FILE *fp, unsigned char *dst, size_t dstsz)
    926956{
    927         return shell_recv(fp->fd, dst, dstsz, 0);
     957        return shell_recvfrom(fp->fd, dst, dstsz, 0, NULL, NULL);
    928958}
    929959
    930960size_t udp_fd_write(struct _IO_FILE *fp, const unsigned char *src, size_t srcsz)
    931961{
    932         return shell_send(fp->fd, src, srcsz, 0);
     962        return shell_sendto(fp->fd, src, srcsz, 0, NULL, 0);
    933963}
    934964
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/socket_stub.h

    r337 r364  
    9999        int buf_size;
    100100        unsigned char *buf;
     101        void *input;
     102        int len;
    101103} socket_t;
    102104
  • asp3_tinet_ecnl_rx/trunk/ntshell/src/syscall.c

    r359 r364  
    172172
    173173long SYS_futex() {
     174        int futex(int *uaddr, int op, int val, const struct timespec *timeout, int *uaddr2, int val3);
    174175        return no_implement("futex\n");
    175176}
     
    280281
    281282long SYS_recv(long a, long b, long c, long d) {
    282         return shell_recv((int)a, (void *)b, (size_t)c, (int)d);
     283        return shell_recvfrom((int)a, (void *)b, (size_t)c, (int)d, NULL, NULL);
    283284}
    284285
    285286long SYS_recvfrom(long a, long b, long c, long d, long e, long f) {
    286         if (a == 0)
    287                 return shell_recv(a, (void *)b, (size_t)c, (int)d);
    288         else
    289                 return shell_recvfrom(a, (void *)b, (size_t)c, (int)d, (struct sockaddr *)e, (socklen_t *)f);
     287        return shell_recvfrom(a, (void *)b, (size_t)c, (int)d, (struct sockaddr *)e, (socklen_t *)f);
    290288}
    291289
     
    315313
    316314long SYS_send(long a, long b, long c, long d) {
    317         return shell_send((int)a, (const void *)b, (size_t)c, (int)d);
     315        return shell_sendto((int)a, (const void *)b, (size_t)c, (int)d, NULL, 0);
    318316}
    319317
     
    323321
    324322long SYS_sendto(long a, long b, long c, long d, long e, long f) {
    325         if (a == 0)
    326                 return shell_send(a, (const void *)b, (size_t)c, (int)d);
    327         else
    328                 return shell_sendto(a, (const void *)b, (size_t)c, (int)d, (const struct sockaddr *)e, (socklen_t)f);
     323        return shell_sendto(a, (const void *)b, (size_t)c, (int)d, (const struct sockaddr *)e, (socklen_t)f);
    329324}
    330325
     
    392387        return shell_writev((int)a, (const struct iovec *)b, (size_t)c);
    393388}
     389
     390long SYS_dup()
     391{
     392        return no_implement("dup\n");
     393}
     394
     395long SYS_dup2()
     396{
     397        return no_implement("dup2\n");
     398}
     399
     400long SYS_pipe()
     401{
     402        return no_implement("pipe\n");
     403}
     404
     405long SYS_readlink()
     406{
     407        return no_implement("readlink\n");
     408}
     409
     410long SYS_symlink()
     411{
     412        return no_implement("symlink\n");
     413}
     414
     415long SYS_umask()
     416{
     417        return no_implement("umask\n");
     418}
     419
     420long SYS_execve()
     421{
     422        return no_implement("execve\n");
     423}
     424
     425long SYS_fork()
     426{
     427        return no_implement("fork\n");
     428}
     429
     430long SYS_wait4()
     431{
     432        return no_implement("wait4\n");
     433}
     434
     435long SYS_socketpair()
     436{
     437        return no_implement("socketpair\n");
     438}
     439
     440long SYS_flock()
     441{
     442        return no_implement("flock\n");
     443}
  • asp3_tinet_ecnl_rx/trunk/wolfssl-3.12.2/.cproject

    r337 r364  
    2424                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2525                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    26                                 <option id="toolchain.version" value="4.8.4.201703"/>
     26                                <option id="toolchain.version" value="4.8.4.201803"/>
    2727                        </storageModule>
    2828                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3939                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.2035819984" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    4040                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections.1857594075" name="Function sections (-ffunction-sections)" superClass="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections" value="true" valueType="boolean"/>
     41                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.cpu.64bitdouble.804769475" name="Make the double data type be 64 bits in size" superClass="com.renesas.cdt.managedbuild.gcc.core.option.cpu.64bitdouble" value="true" valueType="boolean"/>
    4142                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.7353477" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    4243                                                        <builder buildPath="${workspace_loc:/wolfssl}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.778498533" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
     
    5354                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.gcc.core.option.compiler.includes.includeFileDir.1846433325" name="Include file directories" superClass="com.renesas.cdt.managedbuild.gcc.core.option.compiler.includes.includeFileDir" useByScannerDiscovery="false" valueType="includePath">
    5455                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/musl-1.1.18/include}&quot;"/>
     56                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/zlib-1.2.11/src}&quot;"/>
    5557                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}&quot;"/>
    5658                                                                </option>
  • asp3_tinet_ecnl_rx/trunk/wolfssl-3.12.2/src/internal.c

    r337 r364  
    1637816378            if (ret != 0)
    1637916379                return ret;
     16380
     16381            word32 tim = LowResTimer();
     16382            *((word32 *)(output + idx)) = (tim >> 24) | ((tim & 0xFF0000) >> 8)
     16383                | ((tim & 0xFF00) << 8)| (tim << 24);
    1638016384
    1638116385            /* store random */
  • asp3_tinet_ecnl_rx/trunk/wolfssl-3.12.2/user_settings.h

    r337 r364  
    11//#define DEBUG_WOLFSSL
    22
     3//#define HAVE_LIBZ     ƒXƒ^ƒbƒN‚ª‘½‚­•K—v
    34#define HAVE_ECC
     5#define HAVE_AESGCM
    46//#define HAVE_FIPS
     7#define HAVE_TLS_EXTENSIONS
     8#define HAVE_SNI
     9#define HAVE_SUPPORTED_CURVES
    510
    611#define ECC_TIMING_RESISTANT
     
    914#define WOLFSSL_RIPEMD
    1015#define WOLFSSL_SHA512
     16#define WOLFSSL_SMALL_STACK
    1117
    1218#define WC_RSA_BLINDING
  • asp3_tinet_ecnl_rx/trunk/zlib-1.2.11/.cproject

    r337 r364  
    2424                        <storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
    2525                                <option id="toolchain.id" value="RENESAS_GCC_RX"/>
    26                                 <option id="toolchain.version" value="4.8.4.201703"/>
     26                                <option id="toolchain.version" value="4.8.4.201803"/>
    2727                        </storageModule>
    2828                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
     
    3939                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize.795203519" name="Warn if stack size exceeds the limit (-Wstack-usage) (H')" superClass="com.renesas.cdt.managedbuild.gcc.core.option.debug.warnStackSize" useByScannerDiscovery="false" value="100" valueType="string"/>
    4040                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections.1534501362" name="Function sections (-ffunction-sections)" superClass="com.renesas.cdt.managedbuild.gcc.core.option.optimization.functionsections" value="true" valueType="boolean"/>
     41                                                        <option id="com.renesas.cdt.managedbuild.gcc.core.option.cpu.64bitdouble.1127099805" name="Make the double data type be 64 bits in size" superClass="com.renesas.cdt.managedbuild.gcc.core.option.cpu.64bitdouble" value="true" valueType="boolean"/>
    4142                                                        <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.renesas.cdt.managedbuild.gcc.core.targetPlatform.1904688740" isAbstract="false" osList="all" superClass="com.renesas.cdt.managedbuild.gcc.core.targetPlatform"/>
    4243                                                        <builder buildPath="${workspace_loc:/zlib}/Debug" id="com.renesas.cdt.managedbuild.gcc.core.builder.774629006" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GCC for Renesas Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.renesas.cdt.managedbuild.gcc.core.builder"/>
Note: See TracChangeset for help on using the changeset viewer.