diff --git a/avr/devices/0BUILD b/avr/devices/0BUILD index fc494f5..e1d949d 100644 --- a/avr/devices/0BUILD +++ b/avr/devices/0BUILD @@ -24,7 +24,9 @@ all n21 + n22 n23 + t03 diff --git a/avr/devices/all/apps.asm b/avr/devices/all/apps.asm index efbd423..dd43ec4 100644 --- a/avr/devices/all/apps.asm +++ b/avr/devices/all/apps.asm @@ -44,6 +44,11 @@ initApps: #ifdef APPS_STATS rcall AppStats_Init #endif + +#ifdef APPS_MA_LIGHT + rcall AppMotionLight_Init +#endif + ; done ret ; @end diff --git a/avr/devices/all/includes.asm b/avr/devices/all/includes.asm index 2867295..eabf9f8 100644 --- a/avr/devices/all/includes.asm +++ b/avr/devices/all/includes.asm @@ -36,6 +36,7 @@ .include "modules/network/msg/common.asm" .include "modules/network/msg/crc.asm" .include "modules/network/msg/value-w.asm" +.include "modules/network/msg/value-r.asm" .include "modules/network/msg/addr-r.asm" .include "modules/network/msg/addr-w.asm" #endif @@ -134,4 +135,12 @@ #endif +#ifdef APPS_MA_LIGHT +.include "apps/ma_light/defs.asm" +.include "apps/ma_light/data.asm" +.include "apps/ma_light/main.asm" +.include "apps/ma_light/recv.asm" +#endif + + diff --git a/avr/devices/all/main.asm b/avr/devices/all/main.asm index f92ea4d..dd3487c 100644 --- a/avr/devices/all/main.asm +++ b/avr/devices/all/main.asm @@ -53,13 +53,6 @@ main: #endif main_loop: - rcall runModules - rcall runApps - -#ifdef MODULES_NETWORK - rcall handleMessages -#endif - ; only modify SE, SM1 and SM0 cli in r16, MCUCR @@ -70,6 +63,14 @@ main_loop: out MCUCR, r16 sei ; make sure interrupts really are enabled sleep ; sleep, wait for interrupt + + rcall runModules + rcall runApps + +#ifdef MODULES_NETWORK + rcall handleMessages +#endif + rjmp main_loop main_loop_reboot: @@ -117,6 +118,10 @@ onSystemTimerTick: #ifdef APPS_DOOR rcall AppDoor_Every100ms #endif + +#ifdef APPS_MA_LIGHT + rcall AppMotionLight_Every100ms +#endif ret ; @end diff --git a/avr/devices/all/modules.asm b/avr/devices/all/modules.asm index c3a4750..e62f840 100644 --- a/avr/devices/all/modules.asm +++ b/avr/devices/all/modules.asm @@ -197,6 +197,11 @@ handleMessages: rcall AppNetwork_HandleMsg #endif +#ifdef APPS_MA_LIGHT + rcall AppMotionLight_OnPacketReceived +#endif + + ; add more here pop r16 rcall NET_Buffer_ReleaseByNum diff --git a/avr/devices/all/sendvalue.asm b/avr/devices/all/sendvalue.asm index a6761a7..0a870a6 100644 --- a/avr/devices/all/sendvalue.asm +++ b/avr/devices/all/sendvalue.asm @@ -26,21 +26,18 @@ Main_SendValueReport: push r17 - rcall NET_Buffer_Alloc ; (R16, R17, X) + rcall NET_Buffer_Alloc ; (R16, R17, X) pop r17 - brcc Main_SendValueReport_end ; jmp on error - push r16 ; buffer num - ldi r16, 0xff ; DEST addr + brcc Main_SendValueReport_end ; jmp on error + push r16 ; buffer num + ldi r16, 0xff ; DEST addr adiw xh:xl, 1 ldi yl, LOW(netInterfaceData) ldi yh, HIGH(netInterfaceData) - rcall NETMSG_ValueWriteReport ; (R16, R17, R18, R19, R20, R21, R23, R24, R25) + rcall NETMSG_ValueWriteReport ; (R16, R17, R18, R19, R20, R21, R23, R24, R25) sbiw xh:xl, 1 - pop r16 ; buffer num - rcall NET_Interface_AddOutgoingMsgNum ; (R17, R18, X) - brcs Main_SendValueReport_end ; jump if okay - rcall NET_Buffer_ReleaseByNum ; otherwise release buffer - clc + pop r16 ; buffer num + rcall NET_Interface_AddOrReleaseOutMsg ; (R16, R17, R18, X) Main_SendValueReport_end: ret ; @end @@ -53,27 +50,24 @@ Main_SendValueReport_end: ; @param R17 value id ; @param R19:R18 value ; @param R21:R20 denom (e.g. 100, meaning value must be divided by 100) -; @param R22 value type ; @param R23 command ; @param R25:R24 ref msg id Main_SendValueResponse: push r17 - rcall NET_Buffer_Alloc ; (R16, R17, X) + rcall NET_Buffer_Alloc ; (R16, R17, X) pop r17 - brcc Main_SendValueResponse_end ; jmp on error - push r16 ; buffer num - ldi r16, 0xff ; DEST addr + brcc Main_SendValueResponse_end ; jmp on error + push r16 ; buffer num + ldi r16, 0xff ; DEST addr + clr r22 ; value type adiw xh:xl, 1 ldi yl, LOW(netInterfaceData) ldi yh, HIGH(netInterfaceData) - rcall NETMSG_ValueWriteResponse ; (R16, R17, R18, R19, R20, R21, R23, R24, R25) + rcall NETMSG_ValueWriteResponse ; (R16, R17, R18, R19, R20, R21, R23, R24, R25) sbiw xh:xl, 1 - pop r16 ; buffer num - rcall NET_Interface_AddOutgoingMsgNum ; (R17, R18, X) - brcs Main_SendValueResponse_end ; jump if okay - rcall NET_Buffer_ReleaseByNum ; otherwise release buffer - clc + pop r16 ; buffer num + rcall NET_Interface_AddOrReleaseOutMsg ; (R16, R17, R18, X) Main_SendValueResponse_end: ret ; @end