convert to model
This commit is contained in:
		
							
								
								
									
										113
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,113 +0,0 @@ | |||||||
| # |  | ||||||
| #  There exist several targets which are by default empty and which can be  |  | ||||||
| #  used for execution of your targets. These targets are usually executed  |  | ||||||
| #  before and after some main targets. They are:  |  | ||||||
| # |  | ||||||
| #     .build-pre:              called before 'build' target |  | ||||||
| #     .build-post:             called after 'build' target |  | ||||||
| #     .clean-pre:              called before 'clean' target |  | ||||||
| #     .clean-post:             called after 'clean' target |  | ||||||
| #     .clobber-pre:            called before 'clobber' target |  | ||||||
| #     .clobber-post:           called after 'clobber' target |  | ||||||
| #     .all-pre:                called before 'all' target |  | ||||||
| #     .all-post:               called after 'all' target |  | ||||||
| #     .help-pre:               called before 'help' target |  | ||||||
| #     .help-post:              called after 'help' target |  | ||||||
| # |  | ||||||
| #  Targets beginning with '.' are not intended to be called on their own. |  | ||||||
| # |  | ||||||
| #  Main targets can be executed directly, and they are: |  | ||||||
| #   |  | ||||||
| #     build                    build a specific configuration |  | ||||||
| #     clean                    remove built files from a configuration |  | ||||||
| #     clobber                  remove all built files |  | ||||||
| #     all                      build all configurations |  | ||||||
| #     help                     print help mesage |  | ||||||
| #   |  | ||||||
| #  Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and |  | ||||||
| #  .help-impl are implemented in nbproject/makefile-impl.mk. |  | ||||||
| # |  | ||||||
| #  Available make variables: |  | ||||||
| # |  | ||||||
| #     CND_BASEDIR                base directory for relative paths |  | ||||||
| #     CND_DISTDIR                default top distribution directory (build artifacts) |  | ||||||
| #     CND_BUILDDIR               default top build directory (object files, ...) |  | ||||||
| #     CONF                       name of current configuration |  | ||||||
| #     CND_ARTIFACT_DIR_${CONF}   directory of build artifact (current configuration) |  | ||||||
| #     CND_ARTIFACT_NAME_${CONF}  name of build artifact (current configuration) |  | ||||||
| #     CND_ARTIFACT_PATH_${CONF}  path to build artifact (current configuration) |  | ||||||
| #     CND_PACKAGE_DIR_${CONF}    directory of package (current configuration) |  | ||||||
| #     CND_PACKAGE_NAME_${CONF}   name of package (current configuration) |  | ||||||
| #     CND_PACKAGE_PATH_${CONF}   path to package (current configuration) |  | ||||||
| # |  | ||||||
| # NOCDDL |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # Environment  |  | ||||||
| MKDIR=mkdir |  | ||||||
| CP=cp |  | ||||||
| CCADMIN=CCadmin |  | ||||||
| RANLIB=ranlib |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # build |  | ||||||
| build: .build-post |  | ||||||
|  |  | ||||||
| .build-pre: |  | ||||||
| # Add your pre 'build' code here... |  | ||||||
|  |  | ||||||
| .build-post: .build-impl |  | ||||||
| # Add your post 'build' code here... |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # clean |  | ||||||
| clean: .clean-post |  | ||||||
|  |  | ||||||
| .clean-pre: |  | ||||||
| # Add your pre 'clean' code here... |  | ||||||
| # WARNING: the IDE does not call this target since it takes a long time to |  | ||||||
| # simply run make. Instead, the IDE removes the configuration directories |  | ||||||
| # under build and dist directly without calling make. |  | ||||||
| # This target is left here so people can do a clean when running a clean |  | ||||||
| # outside the IDE. |  | ||||||
|  |  | ||||||
| .clean-post: .clean-impl |  | ||||||
| # Add your post 'clean' code here... |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # clobber |  | ||||||
| clobber: .clobber-post |  | ||||||
|  |  | ||||||
| .clobber-pre: |  | ||||||
| # Add your pre 'clobber' code here... |  | ||||||
|  |  | ||||||
| .clobber-post: .clobber-impl |  | ||||||
| # Add your post 'clobber' code here... |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # all |  | ||||||
| all: .all-post |  | ||||||
|  |  | ||||||
| .all-pre: |  | ||||||
| # Add your pre 'all' code here... |  | ||||||
|  |  | ||||||
| .all-post: .all-impl |  | ||||||
| # Add your post 'all' code here... |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # help |  | ||||||
| help: .help-post |  | ||||||
|  |  | ||||||
| .help-pre: |  | ||||||
| # Add your pre 'help' code here... |  | ||||||
|  |  | ||||||
| .help-post: .help-impl |  | ||||||
| # Add your post 'help' code here... |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| # include project implementation makefile |  | ||||||
| include nbproject/Makefile-impl.mk |  | ||||||
|  |  | ||||||
| # include project make variables |  | ||||||
| include nbproject/Makefile-variables.mk |  | ||||||
 Submodule generator updated: a808b1a1fb...6ddda29300
									
								
							| @@ -1,230 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <configurationDescriptor version="65"> |  | ||||||
|   <logicalFolder name="root" displayName="root" projectFiles="true"> |  | ||||||
|     <logicalFolder name="HeaderFiles" |  | ||||||
|                    displayName="Header Files" |  | ||||||
|                    projectFiles="true"> |  | ||||||
|       <logicalFolder name="app" displayName="app" projectFiles="true"> |  | ||||||
|         <itemPath>src/app/factory.h</itemPath> |  | ||||||
|         <itemPath>src/app/app.h</itemPath> |  | ||||||
|       </logicalFolder> |  | ||||||
|       <logicalFolder name="board" displayName="board" projectFiles="true"> |  | ||||||
|         <itemPath>src/board/led.h</itemPath> |  | ||||||
|         <itemPath>src/board/button.h</itemPath> |  | ||||||
|       </logicalFolder> |  | ||||||
|       <logicalFolder name="mcc_generated_files" |  | ||||||
|                      displayName="mcc_generated_files" |  | ||||||
|                      projectFiles="true"> |  | ||||||
|         <itemPath>src/mcc_generated_files/tmr0.h</itemPath> |  | ||||||
|         <itemPath>src/mcc_generated_files/pin_manager.h</itemPath> |  | ||||||
|         <itemPath>src/mcc_generated_files/mcc.h</itemPath> |  | ||||||
|         <itemPath>src/mcc_generated_files/interrupt_manager.h</itemPath> |  | ||||||
|         <itemPath>src/mcc_generated_files/device_config.h</itemPath> |  | ||||||
|       </logicalFolder> |  | ||||||
|       <logicalFolder name="middleware" displayName="middleware" projectFiles="true"> |  | ||||||
|         <itemPath>src/middleware/blinker.h</itemPath> |  | ||||||
|         <itemPath>src/middleware/click_handler.h</itemPath> |  | ||||||
|       </logicalFolder> |  | ||||||
|       <logicalFolder name="xf" displayName="xf" projectFiles="true"> |  | ||||||
|         <itemPath>src/xf/ireactive.h</itemPath> |  | ||||||
|         <itemPath>src/xf/event.h</itemPath> |  | ||||||
|         <itemPath>src/xf/xf.h</itemPath> |  | ||||||
|       </logicalFolder> |  | ||||||
|     </logicalFolder> |  | ||||||
|     <logicalFolder name="LinkerScript" |  | ||||||
|                    displayName="Linker Files" |  | ||||||
|                    projectFiles="true"> |  | ||||||
|     </logicalFolder> |  | ||||||
|     <logicalFolder name="SourceFiles" |  | ||||||
|                    displayName="Source Files" |  | ||||||
|                    projectFiles="true"> |  | ||||||
|       <logicalFolder name="app" displayName="app" projectFiles="true"> |  | ||||||
|         <itemPath>src/app/factory.c</itemPath> |  | ||||||
|         <itemPath>src/app/main.c</itemPath> |  | ||||||
|         <itemPath>src/app/app.c</itemPath> |  | ||||||
|       </logicalFolder> |  | ||||||
|       <logicalFolder name="board" displayName="board" projectFiles="true"> |  | ||||||
|         <itemPath>src/board/led.c</itemPath> |  | ||||||
|         <itemPath>src/board/button.c</itemPath> |  | ||||||
|       </logicalFolder> |  | ||||||
|       <logicalFolder name="mcc_generated_files" |  | ||||||
|                      displayName="mcc_generated_files" |  | ||||||
|                      projectFiles="true"> |  | ||||||
|         <itemPath>src/mcc_generated_files/mcc.c</itemPath> |  | ||||||
|         <itemPath>src/mcc_generated_files/interrupt_manager.c</itemPath> |  | ||||||
|         <itemPath>src/mcc_generated_files/device_config.c</itemPath> |  | ||||||
|         <itemPath>src/mcc_generated_files/pin_manager.c</itemPath> |  | ||||||
|         <itemPath>src/mcc_generated_files/tmr0.c</itemPath> |  | ||||||
|       </logicalFolder> |  | ||||||
|       <logicalFolder name="middleware" displayName="middleware" projectFiles="true"> |  | ||||||
|         <itemPath>src/middleware/blinker.c</itemPath> |  | ||||||
|         <itemPath>src/middleware/click_handler.c</itemPath> |  | ||||||
|       </logicalFolder> |  | ||||||
|       <logicalFolder name="xf" displayName="xf" projectFiles="true"> |  | ||||||
|         <itemPath>src/xf/xf.c</itemPath> |  | ||||||
|         <itemPath>src/xf/event.c</itemPath> |  | ||||||
|       </logicalFolder> |  | ||||||
|     </logicalFolder> |  | ||||||
|     <logicalFolder name="ExternalFiles" |  | ||||||
|                    displayName="Important Files" |  | ||||||
|                    projectFiles="false"> |  | ||||||
|       <itemPath>Makefile</itemPath> |  | ||||||
|     </logicalFolder> |  | ||||||
|   </logicalFolder> |  | ||||||
|   <sourceRootList> |  | ||||||
|     <Elem>src</Elem> |  | ||||||
|   </sourceRootList> |  | ||||||
|   <projectmakefile>Makefile</projectmakefile> |  | ||||||
|   <confs> |  | ||||||
|     <conf name="default" type="2"> |  | ||||||
|       <toolsSet> |  | ||||||
|         <developmentServer>localhost</developmentServer> |  | ||||||
|         <targetDevice>PIC18F87K22</targetDevice> |  | ||||||
|         <targetHeader></targetHeader> |  | ||||||
|         <targetPluginBoard></targetPluginBoard> |  | ||||||
|         <platformTool>PICkit3PlatformTool</platformTool> |  | ||||||
|         <languageToolchain>XC8</languageToolchain> |  | ||||||
|         <languageToolchainVersion>2.41</languageToolchainVersion> |  | ||||||
|         <platform>2</platform> |  | ||||||
|       </toolsSet> |  | ||||||
|       <packs> |  | ||||||
|         <pack name="PIC18F-K_DFP" vendor="Microchip" version="1.7.134"/> |  | ||||||
|       </packs> |  | ||||||
|       <ScriptingSettings> |  | ||||||
|       </ScriptingSettings> |  | ||||||
|       <compileType> |  | ||||||
|         <linkerTool> |  | ||||||
|           <linkerLibItems> |  | ||||||
|           </linkerLibItems> |  | ||||||
|         </linkerTool> |  | ||||||
|         <archiverTool> |  | ||||||
|         </archiverTool> |  | ||||||
|         <loading> |  | ||||||
|           <useAlternateLoadableFile>false</useAlternateLoadableFile> |  | ||||||
|           <parseOnProdLoad>false</parseOnProdLoad> |  | ||||||
|           <alternateLoadableFile></alternateLoadableFile> |  | ||||||
|         </loading> |  | ||||||
|         <subordinates> |  | ||||||
|         </subordinates> |  | ||||||
|       </compileType> |  | ||||||
|       <makeCustomizationType> |  | ||||||
|         <makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled> |  | ||||||
|         <makeUseCleanTarget>false</makeUseCleanTarget> |  | ||||||
|         <makeCustomizationPreStep></makeCustomizationPreStep> |  | ||||||
|         <makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled> |  | ||||||
|         <makeCustomizationPostStep></makeCustomizationPostStep> |  | ||||||
|         <makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID> |  | ||||||
|         <makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines> |  | ||||||
|         <makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile> |  | ||||||
|       </makeCustomizationType> |  | ||||||
|       <HI-TECH-COMP> |  | ||||||
|         <property key="additional-warnings" value="true"/> |  | ||||||
|         <property key="asmlist" value="true"/> |  | ||||||
|         <property key="call-prologues" value="false"/> |  | ||||||
|         <property key="default-bitfield-type" value="true"/> |  | ||||||
|         <property key="default-char-type" value="true"/> |  | ||||||
|         <property key="define-macros" value=""/> |  | ||||||
|         <property key="disable-optimizations" value="true"/> |  | ||||||
|         <property key="extra-include-directories" value=""/> |  | ||||||
|         <property key="favor-optimization-for" value="-speed,+space"/> |  | ||||||
|         <property key="garbage-collect-data" value="true"/> |  | ||||||
|         <property key="garbage-collect-functions" value="true"/> |  | ||||||
|         <property key="identifier-length" value="255"/> |  | ||||||
|         <property key="local-generation" value="false"/> |  | ||||||
|         <property key="operation-mode" value="free"/> |  | ||||||
|         <property key="opt-xc8-compiler-strict_ansi" value="false"/> |  | ||||||
|         <property key="optimization-assembler" value="true"/> |  | ||||||
|         <property key="optimization-assembler-files" value="true"/> |  | ||||||
|         <property key="optimization-debug" value="false"/> |  | ||||||
|         <property key="optimization-invariant-enable" value="false"/> |  | ||||||
|         <property key="optimization-invariant-value" value="16"/> |  | ||||||
|         <property key="optimization-level" value="-O0"/> |  | ||||||
|         <property key="optimization-speed" value="false"/> |  | ||||||
|         <property key="optimization-stable-enable" value="false"/> |  | ||||||
|         <property key="preprocess-assembler" value="true"/> |  | ||||||
|         <property key="short-enums" value="true"/> |  | ||||||
|         <property key="tentative-definitions" value="-fno-common"/> |  | ||||||
|         <property key="undefine-macros" value=""/> |  | ||||||
|         <property key="use-cci" value="false"/> |  | ||||||
|         <property key="use-iar" value="false"/> |  | ||||||
|         <property key="verbose" value="false"/> |  | ||||||
|         <property key="warning-level" value="-3"/> |  | ||||||
|         <property key="what-to-do" value="ignore"/> |  | ||||||
|       </HI-TECH-COMP> |  | ||||||
|       <HI-TECH-LINK> |  | ||||||
|         <property key="additional-options-checksum" value=""/> |  | ||||||
|         <property key="additional-options-code-offset" value=""/> |  | ||||||
|         <property key="additional-options-command-line" value=""/> |  | ||||||
|         <property key="additional-options-errata" value=""/> |  | ||||||
|         <property key="additional-options-extend-address" value="false"/> |  | ||||||
|         <property key="additional-options-trace-type" value=""/> |  | ||||||
|         <property key="additional-options-use-response-files" value="false"/> |  | ||||||
|         <property key="backup-reset-condition-flags" value="false"/> |  | ||||||
|         <property key="calibrate-oscillator" value="false"/> |  | ||||||
|         <property key="calibrate-oscillator-value" value="0x3400"/> |  | ||||||
|         <property key="clear-bss" value="true"/> |  | ||||||
|         <property key="code-model-external" value="wordwrite"/> |  | ||||||
|         <property key="code-model-rom" value=""/> |  | ||||||
|         <property key="create-html-files" value="false"/> |  | ||||||
|         <property key="data-model-ram" value=""/> |  | ||||||
|         <property key="data-model-size-of-double" value="32"/> |  | ||||||
|         <property key="data-model-size-of-double-gcc" value="no-short-double"/> |  | ||||||
|         <property key="data-model-size-of-float" value="32"/> |  | ||||||
|         <property key="data-model-size-of-float-gcc" value="no-short-float"/> |  | ||||||
|         <property key="display-class-usage" value="false"/> |  | ||||||
|         <property key="display-hex-usage" value="false"/> |  | ||||||
|         <property key="display-overall-usage" value="true"/> |  | ||||||
|         <property key="display-psect-usage" value="false"/> |  | ||||||
|         <property key="extra-lib-directories" value=""/> |  | ||||||
|         <property key="fill-flash-options-addr" value=""/> |  | ||||||
|         <property key="fill-flash-options-const" value=""/> |  | ||||||
|         <property key="fill-flash-options-how" value="0"/> |  | ||||||
|         <property key="fill-flash-options-inc-const" value="1"/> |  | ||||||
|         <property key="fill-flash-options-increment" value=""/> |  | ||||||
|         <property key="fill-flash-options-seq" value=""/> |  | ||||||
|         <property key="fill-flash-options-what" value="0"/> |  | ||||||
|         <property key="format-hex-file-for-download" value="false"/> |  | ||||||
|         <property key="initialize-data" value="true"/> |  | ||||||
|         <property key="input-libraries" value="libm"/> |  | ||||||
|         <property key="keep-generated-startup.as" value="false"/> |  | ||||||
|         <property key="link-in-c-library" value="true"/> |  | ||||||
|         <property key="link-in-c-library-gcc" value=""/> |  | ||||||
|         <property key="link-in-peripheral-library" value="false"/> |  | ||||||
|         <property key="managed-stack" value="false"/> |  | ||||||
|         <property key="opt-xc8-linker-file" value="false"/> |  | ||||||
|         <property key="opt-xc8-linker-link_startup" value="false"/> |  | ||||||
|         <property key="opt-xc8-linker-serial" value=""/> |  | ||||||
|         <property key="program-the-device-with-default-config-words" value="true"/> |  | ||||||
|         <property key="remove-unused-sections" value="true"/> |  | ||||||
|       </HI-TECH-LINK> |  | ||||||
|       <PICkit3PlatformTool> |  | ||||||
|         <property key="firmware.download.all" value="false"/> |  | ||||||
|       </PICkit3PlatformTool> |  | ||||||
|       <Tool> |  | ||||||
|         <property key="firmware.download.all" value="false"/> |  | ||||||
|       </Tool> |  | ||||||
|       <XC8-CO> |  | ||||||
|         <property key="coverage-enable" value=""/> |  | ||||||
|         <property key="stack-guidance" value="false"/> |  | ||||||
|       </XC8-CO> |  | ||||||
|       <XC8-config-global> |  | ||||||
|         <property key="advanced-elf" value="true"/> |  | ||||||
|         <property key="constdata-progmem" value="true"/> |  | ||||||
|         <property key="gcc-opt-driver-new" value="true"/> |  | ||||||
|         <property key="gcc-opt-std" value="-std=c99"/> |  | ||||||
|         <property key="gcc-output-file-format" value="dwarf-3"/> |  | ||||||
|         <property key="mapped-progmem" value="false"/> |  | ||||||
|         <property key="omit-pack-options" value="false"/> |  | ||||||
|         <property key="omit-pack-options-new" value="1"/> |  | ||||||
|         <property key="output-file-format" value="-mcof,+elf"/> |  | ||||||
|         <property key="smart-io-format" value=""/> |  | ||||||
|         <property key="stack-size-high" value="auto"/> |  | ||||||
|         <property key="stack-size-low" value="auto"/> |  | ||||||
|         <property key="stack-size-main" value="auto"/> |  | ||||||
|         <property key="stack-type" value="compiled"/> |  | ||||||
|         <property key="user-pack-device-support" value=""/> |  | ||||||
|         <property key="wpo-lto" value="false"/> |  | ||||||
|       </XC8-config-global> |  | ||||||
|     </conf> |  | ||||||
|   </confs> |  | ||||||
| </configurationDescriptor> |  | ||||||
| @@ -1,25 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project xmlns="http://www.netbeans.org/ns/project/1"> |  | ||||||
|     <type>com.microchip.mplab.nbide.embedded.makeproject</type> |  | ||||||
|     <configuration> |  | ||||||
|         <data xmlns="http://www.netbeans.org/ns/make-project/1"> |  | ||||||
|             <name>XFT</name> |  | ||||||
|             <creation-uuid>9d10e4b8-91cc-4d86-8f12-a6fd880b26ed</creation-uuid> |  | ||||||
|             <make-project-type>0</make-project-type> |  | ||||||
|             <sourceEncoding>UTF-8</sourceEncoding> |  | ||||||
|             <make-dep-projects/> |  | ||||||
|             <sourceRootList> |  | ||||||
|                 <sourceRootElem>src</sourceRootElem> |  | ||||||
|             </sourceRootList> |  | ||||||
|             <confList> |  | ||||||
|                 <confElem> |  | ||||||
|                     <name>default</name> |  | ||||||
|                     <type>2</type> |  | ||||||
|                 </confElem> |  | ||||||
|             </confList> |  | ||||||
|             <formatting> |  | ||||||
|                 <project-formatting-style>false</project-formatting-style> |  | ||||||
|             </formatting> |  | ||||||
|         </data> |  | ||||||
|     </configuration> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										217
									
								
								src/app/app.c
									
									
									
									
									
								
							
							
						
						
									
										217
									
								
								src/app/app.c
									
									
									
									
									
								
							| @@ -1,217 +0,0 @@ | |||||||
| /**  |  | ||||||
|  * @author R<>mi Heredero (remi@heredero.ch) |  | ||||||
|  * @version 1.0.0 |  | ||||||
|  * @date 2023-06-15 |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| #include "app.h" |  | ||||||
| #include "factory.h" |  | ||||||
| #include "../middleware/blinker.h" |  | ||||||
| #include "../middleware/click_handler.h" |  | ||||||
|  |  | ||||||
| void clickL(APP* me){ |  | ||||||
|     POST(me, &APP_processEvent, evAPclickL, 0, 0); |  | ||||||
| } |  | ||||||
| void clickLn(APP* me){ |  | ||||||
|     POST(me, &APP_processEvent, evAPclickLn, 0, 0); |  | ||||||
| } |  | ||||||
| void clickR(APP* me){ |  | ||||||
|     POST(me, &APP_processEvent, evAPclickR, 0, 0); |  | ||||||
| } |  | ||||||
| void clickRn(APP* me){ |  | ||||||
|     POST(me, &APP_processEvent, evAPclickRn, 0, 0); |  | ||||||
| } |  | ||||||
| void endL(APP* me){ |  | ||||||
|     POST(me, &APP_processEvent, evAPendL, 0, 0); |  | ||||||
| } |  | ||||||
| void endR(APP* me){ |  | ||||||
|     POST(me, &APP_processEvent, evAPendR, 0, 0); |  | ||||||
| } |  | ||||||
| void longClick(APP* me){ |  | ||||||
|     POST(me, &APP_processEvent, evAPlongClick, 0, 0); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void APP_init(APP* me){ |  | ||||||
|      |  | ||||||
|     me->state = STAP_INIT; |  | ||||||
|      |  | ||||||
|     CLICK_HANDLER_onSingle_click(ch1(), &clickL, me); |  | ||||||
|     CLICK_HANDLER_onSingle_click(ch3(), &clickR, me); |  | ||||||
|      |  | ||||||
|     CLICK_HANDLER_onDouble_click(ch1(), &clickLn, me); |  | ||||||
|     CLICK_HANDLER_onDouble_click(ch3(), &clickRn, me); |  | ||||||
|      |  | ||||||
|     CLICK_HANDLER_onLong_click(ch1(), &longClick, me); |  | ||||||
|     CLICK_HANDLER_onLong_click(ch3(), &longClick, me); |  | ||||||
|      |  | ||||||
|     BLINKER_onFinished(blL(), &endL, me); |  | ||||||
|     BLINKER_onFinished(blR(), &endR, me); |  | ||||||
|      |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void APP_startBehaviour(APP* me){ |  | ||||||
|     POST(me, &APP_processEvent, evAPinit, 0, 0); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| bool APP_processEvent(Event* ev){ |  | ||||||
|     bool processed = false; |  | ||||||
|     APP* me = (APP*) Event_getTarget(ev); |  | ||||||
|     APP_STATES oldState = me->state; |  | ||||||
|     evIDT evid = Event_getId(ev); |  | ||||||
|      |  | ||||||
|     switch(me->state) { // In state |  | ||||||
|         case STAP_INIT: |  | ||||||
|             if(evid == evAPinit) { |  | ||||||
|                 me->state = STAP_WAIT; |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|              |  | ||||||
|         case STAP_WAIT: |  | ||||||
|             if(evid == evAPclickL) { |  | ||||||
|                 me->state = STAP_BLINKER_L; |  | ||||||
|                 BLINKER_emitBlink(blL(), 0); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPclickLn) { |  | ||||||
|                 me->state = STAP_BLINKER_L; |  | ||||||
|                 BLINKER_emitBlinkN(blL(), 0); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPclickR) { |  | ||||||
|                 me->state = STAP_BLINKER_R; |  | ||||||
|                 BLINKER_emitBlink(blR(), 0); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPclickRn) { |  | ||||||
|                 me->state = STAP_BLINKER_R; |  | ||||||
|                 BLINKER_emitBlinkN(blR(), 0); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPlongClick) { |  | ||||||
|                 me->state = STAP_BLINKER_W; |  | ||||||
|                 BLINKER_emitBlink(blB(), 0); |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|              |  | ||||||
|         case STAP_BLINKER_L: |  | ||||||
|             if(evid == evAPclickR){ |  | ||||||
|                 me->state = STAP_BLINKER_LR; |  | ||||||
|                 BLINKER_emitBlink(blR(), 0); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPclickRn){ |  | ||||||
|                 me->state = STAP_BLINKER_LR; |  | ||||||
|                 BLINKER_emitBlinkN(blR(), 0); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPclickL) { |  | ||||||
|                 me->state = STAP_WAIT; |  | ||||||
|                 BLINKER_endBlink(blL()); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPendL) { |  | ||||||
|                 me->state = STAP_WAIT; |  | ||||||
|             } |  | ||||||
|             if(evid == evAPlongClick) { |  | ||||||
|                 me->state = STAP_BLINKER_W; |  | ||||||
|                 BLINKER_endBlink(blL()); |  | ||||||
|                 BLINKER_emitBlink(blB(), 0); |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|              |  | ||||||
|         case STAP_BLINKER_R: |  | ||||||
|             if(evid == evAPclickL){ |  | ||||||
|                 me->state = STAP_BLINKER_LR; |  | ||||||
|                 BLINKER_emitBlink(blL(), 0); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPclickLn){ |  | ||||||
|                 me->state = STAP_BLINKER_LR; |  | ||||||
|                 BLINKER_emitBlinkN(blL(), 0); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPclickR) { |  | ||||||
|                 me->state = STAP_WAIT; |  | ||||||
|                 BLINKER_endBlink(blR()); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPendR) { |  | ||||||
|                 me->state = STAP_WAIT; |  | ||||||
|             } |  | ||||||
|             if(evid == evAPlongClick) { |  | ||||||
|                 me->state = STAP_BLINKER_W; |  | ||||||
|                 BLINKER_endBlink(blR()); |  | ||||||
|                 BLINKER_emitBlink(blB(), 0); |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|              |  | ||||||
|         case STAP_BLINKER_LR: |  | ||||||
|             if(evid == evAPclickR) { |  | ||||||
|                 me->state = STAP_BLINKER_L; |  | ||||||
|                 BLINKER_endBlink(blR()); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPendR) { |  | ||||||
|                 me->state = STAP_BLINKER_L; |  | ||||||
|             } |  | ||||||
|             if(evid == evAPclickL) { |  | ||||||
|                 me->state = STAP_BLINKER_R; |  | ||||||
|                 BLINKER_endBlink(blL()); |  | ||||||
|             } |  | ||||||
|             if(evid == evAPendL) { |  | ||||||
|                 me->state = STAP_BLINKER_R; |  | ||||||
|             } |  | ||||||
|             if(evid == evAPlongClick) { |  | ||||||
|                 me->state = STAP_BLINKER_W; |  | ||||||
|                 BLINKER_endBlink(blL()); |  | ||||||
|                 BLINKER_endBlink(blR()); |  | ||||||
|                 BLINKER_emitBlink(blB(), 0); |  | ||||||
|                  |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|              |  | ||||||
|         case STAP_BLINKER_W: |  | ||||||
|             if(evid == evAPlongClick){ |  | ||||||
|                 me->state = STAP_WAIT; |  | ||||||
|                 BLINKER_endBlink(blB()); |  | ||||||
|             } |  | ||||||
|             break; |  | ||||||
|              |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     if(oldState != me->state) { |  | ||||||
|         switch(oldState) { // on exit |  | ||||||
|             case STAP_INIT: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|             case STAP_WAIT: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|             case STAP_BLINKER_L: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|             case STAP_BLINKER_R: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|             case STAP_BLINKER_LR: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|             case STAP_BLINKER_W: |  | ||||||
|                 break; |  | ||||||
|         } |  | ||||||
|          |  | ||||||
|         switch(me->state) { // on entry |  | ||||||
|             case STAP_INIT: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|             case STAP_WAIT: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|             case STAP_BLINKER_L: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|             case STAP_BLINKER_R: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|             case STAP_BLINKER_LR: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|             case STAP_BLINKER_W: |  | ||||||
|                 break; |  | ||||||
|                  |  | ||||||
|         } |  | ||||||
|         processed = true; |  | ||||||
|     } |  | ||||||
|     return processed; |  | ||||||
| } |  | ||||||
| @@ -1,40 +0,0 @@ | |||||||
| /** |  | ||||||
|  * @author R<>mi Heredero (remi@heredero.ch) |  | ||||||
|  * @version 1.0.0 |  | ||||||
|  * @date 2023-06-17 |  | ||||||
|  */ |  | ||||||
| #ifndef APP_H |  | ||||||
| #define	APP_H |  | ||||||
|  |  | ||||||
| #include "../xf/xf.h" |  | ||||||
|  |  | ||||||
| typedef enum { |  | ||||||
|     STAP_INIT, |  | ||||||
|     STAP_WAIT, |  | ||||||
|     STAP_BLINKER_L, |  | ||||||
|     STAP_BLINKER_R, |  | ||||||
|     STAP_BLINKER_LR, |  | ||||||
|     STAP_BLINKER_W |  | ||||||
| } APP_STATES; |  | ||||||
|  |  | ||||||
| typedef enum { |  | ||||||
|     evAPinit = 150, |  | ||||||
|     evAPclickL, |  | ||||||
|     evAPclickLn, |  | ||||||
|     evAPclickR, |  | ||||||
|     evAPclickRn, |  | ||||||
|     evAPendL, |  | ||||||
|     evAPendR, |  | ||||||
|     evAPlongClick |  | ||||||
| } APP_EVENTS; |  | ||||||
|  |  | ||||||
| typedef struct { |  | ||||||
|     APP_STATES state; // Actual state |  | ||||||
| } APP; |  | ||||||
|  |  | ||||||
| void APP_init(APP* me); |  | ||||||
| void APP_startBehaviour(APP* me); |  | ||||||
| bool APP_processEvent(Event* ev); |  | ||||||
|  |  | ||||||
| #endif	/* APP_H */ |  | ||||||
|  |  | ||||||
| @@ -103,7 +103,6 @@ void Factory_init() { | |||||||
|     LED_initHW(l9()); |     LED_initHW(l9()); | ||||||
|     LED_initHW(l10()); |     LED_initHW(l10()); | ||||||
|  |  | ||||||
|      |  | ||||||
|     BUTTON_init(b1(), 1); |     BUTTON_init(b1(), 1); | ||||||
|     BUTTON_init(b2(), 2); |     BUTTON_init(b2(), 2); | ||||||
|     BUTTON_init(b3(), 3); |     BUTTON_init(b3(), 3); | ||||||
| @@ -116,41 +115,6 @@ void Factory_init() { | |||||||
|     CLICK_HANDLER_init(ch2()); |     CLICK_HANDLER_init(ch2()); | ||||||
|     CLICK_HANDLER_init(ch3()); |     CLICK_HANDLER_init(ch3()); | ||||||
|  |  | ||||||
|     BLINKER_init(blL()); |  | ||||||
|     BLINKER_init(blR()); |  | ||||||
|     BLINKER_init(blB()); |  | ||||||
|     BLINKER_init(blT()); |  | ||||||
|  |  | ||||||
|     APP_init(app()); |  | ||||||
|      |  | ||||||
|     theFactory.bar.timeOn = 1000; |  | ||||||
|     theFactory.bar.timeOff = 500; |  | ||||||
|     theFactory.bar.n = 5; |  | ||||||
|      |  | ||||||
|      |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void warningBlink(void* on_){ |  | ||||||
|     bool on = (bool)on_; |  | ||||||
|     BLINKER_endBlink(blL()); |  | ||||||
|     BLINKER_endBlink(blR()); |  | ||||||
|     if(on) { |  | ||||||
|         LED_on(l1()); |  | ||||||
|         LED_on(l10()); |  | ||||||
|     } else { |  | ||||||
|         LED_off(l1()); |  | ||||||
|         LED_off(l10()); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void toggleBlink(void* st_){ |  | ||||||
|     foo* st = (foo*)st_; |  | ||||||
|     uint16_t timeOn= st->timeOn; |  | ||||||
|     uint16_t timeOff = st->timeOff; |  | ||||||
|     uint8_t n = st->n; |  | ||||||
|     BLINKER_setTimeOn(blT(), timeOn); |  | ||||||
|     BLINKER_setTimeOff(blT(), timeOff); |  | ||||||
|     BLINKER_setNumberOfBlink(blT(), n); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| //connect objects if required | //connect objects if required | ||||||
| @@ -164,18 +128,6 @@ void Factory_build() { | |||||||
|     BUTTON_onReleased(b2(), &CLICK_HANDLER_emitPbrelease, ch2()); |     BUTTON_onReleased(b2(), &CLICK_HANDLER_emitPbrelease, ch2()); | ||||||
|     BUTTON_onReleased(b3(), &CLICK_HANDLER_emitPbrelease, ch3()); |     BUTTON_onReleased(b3(), &CLICK_HANDLER_emitPbrelease, ch3()); | ||||||
|  |  | ||||||
|     CLICK_HANDLER_onSingle_click(ch2(), &BLINKER_emitBlinkN, blT()); |  | ||||||
|     CLICK_HANDLER_onLong_click(ch2(), &toggleBlink, &theFactory.bar); |  | ||||||
|      |  | ||||||
|     BLINKER_onOn(blL(), &LED_on, l1()); |  | ||||||
|     BLINKER_onOff(blL(), &LED_off, l1()); |  | ||||||
|     BLINKER_onOn(blR(), &LED_on, l10()); |  | ||||||
|     BLINKER_onOff(blR(), &LED_off, l10()); |  | ||||||
|     BLINKER_onOn(blB(), &warningBlink, true); |  | ||||||
|     BLINKER_onOff(blB(), &warningBlink, false); |  | ||||||
|      |  | ||||||
|     BLINKER_onOn(blT(), &LED_on, l5()); |  | ||||||
|     BLINKER_onOff(blT(), &LED_off, l5()); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| //start all state machines | //start all state machines | ||||||
| @@ -186,9 +138,4 @@ void Factory_start() { | |||||||
|     CLICK_HANDLER_startBehaviour(ch1()); |     CLICK_HANDLER_startBehaviour(ch1()); | ||||||
|     CLICK_HANDLER_startBehaviour(ch2()); |     CLICK_HANDLER_startBehaviour(ch2()); | ||||||
|     CLICK_HANDLER_startBehaviour(ch3()); |     CLICK_HANDLER_startBehaviour(ch3()); | ||||||
|     BLINKER_startBehaviour(blL()); |  | ||||||
|     BLINKER_startBehaviour(blR()); |  | ||||||
|     BLINKER_startBehaviour(blB()); |  | ||||||
|     BLINKER_startBehaviour(blT()); |  | ||||||
|     APP_startBehaviour(app()); |  | ||||||
| } | } | ||||||
| @@ -14,13 +14,6 @@ | |||||||
| #include "../board/button.h" | #include "../board/button.h" | ||||||
| #include "../middleware/click_handler.h" | #include "../middleware/click_handler.h" | ||||||
| #include "../middleware/blinker.h" | #include "../middleware/blinker.h" | ||||||
| #include "app.h" |  | ||||||
|  |  | ||||||
| typedef struct { |  | ||||||
|         uint16_t timeOn; |  | ||||||
|         uint16_t timeOff; |  | ||||||
|         uint8_t n; |  | ||||||
|     } foo; |  | ||||||
|  |  | ||||||
| typedef struct { | typedef struct { | ||||||
|     LED l1_; |     LED l1_; | ||||||
| @@ -39,12 +32,6 @@ typedef struct { | |||||||
|     CLICK_HANDLER ch1_; |     CLICK_HANDLER ch1_; | ||||||
|     CLICK_HANDLER ch2_; |     CLICK_HANDLER ch2_; | ||||||
|     CLICK_HANDLER ch3_; |     CLICK_HANDLER ch3_; | ||||||
|     BLINKER blL_; |  | ||||||
|     BLINKER blR_; |  | ||||||
|     BLINKER blB_; |  | ||||||
|     BLINKER blT_; |  | ||||||
|     APP app_; |  | ||||||
|     foo bar; |  | ||||||
| } Factory; | } Factory; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -72,11 +59,4 @@ CLICK_HANDLER* ch1(); | |||||||
| CLICK_HANDLER* ch2(); | CLICK_HANDLER* ch2(); | ||||||
| CLICK_HANDLER* ch3(); | CLICK_HANDLER* ch3(); | ||||||
|  |  | ||||||
| BLINKER* blL(); |  | ||||||
| BLINKER* blR(); |  | ||||||
| BLINKER* blB(); |  | ||||||
| BLINKER* blT(); |  | ||||||
|  |  | ||||||
| APP* app(); |  | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| /** | /** | ||||||
|  * @author R<EFBFBD>mi Heredero (remi@heredero.ch) |  * @author Rémi Heredero | ||||||
|  * @version. 1.0.0 |  * @version. 1.0.0 | ||||||
|  * @date 2023-06-15 |  * @date 2023-06-15 | ||||||
|  */ |  */ | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| /** | /** | ||||||
|  * @author R<EFBFBD>mi Heredero (remi@heredero.ch) |  * @author Rémi Heredero | ||||||
|  * @version. 1.0.0 |  * @version. 1.0.0 | ||||||
|  * @date 2023-06-15 |  * @date 2023-06-15 | ||||||
|  */ |  */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user