-// Copyright (c) 2015, Tobias Mueller tm(at)tm3d.de\r
+// Copyright (c) 2017, Tobias Mueller tm(at)tm3d.de\r
// All rights reserved. \r
// \r
// Redistribution and use in source and binary forms, with or without \r
#define OW_SEARCHROMR 4 ; next resive master answer\r
#define OW_READ_COMMAND1 5\r
#define OW_READ_COMMAND2 6\r
-#define OW_FWCONFIGINFO1 7\r
-#define OW_FWCONFIGINFO2 8\r
+#define OW_READ_COMMAND12 7 ;Skip ROM.... eigentlich nicht mit mehreren geraeten, aber bei loxone schon (CC 44)\r
+#define OW_FWCONFIGINFO1 8\r
+#define OW_FWCONFIGINFO2 9\r
\r
.comm idtable,64\r
\r
#ifdef _CHANGEABLE_ID_\r
-#define OW_WRITE_NEWID 9\r
-#define OW_READ_NEWID 10\r
-#define OW_SET_NEWID 11\r
-#define OW_FIRST_COMMAND 12\r
+#define OW_WRITE_NEWID 10\r
+#define OW_READ_NEWID 11\r
+#define OW_SET_NEWID 12\r
+#define OW_FIRST_COMMAND 13\r
.comm newid,8\r
- \r
+\r
+ \r
.macro CHANGE_ID_COMMANDS\r
cset 0x75,OW_WRITE_NEWID\r
cljmp 0xA7,hrc_set_readid\r
\r
\r
#else\r
-#define OW_FIRST_COMMAND 9\r
+#define OW_FIRST_COMMAND 10\r
#endif\r
\r
#ifndef _DIS_FLASH_\r
rjmp h_searchromr\r
rjmp h_readcommand1 \r
rjmp h_readcommand2\r
+#ifdef _HANDLE_CC_COMMAND_\r
+ rjmp h_readcommand12\r
+#else\r
+ rjmp handle_end_no_bcount\r
+#endif\r
rjmp h_fwconfiginfo1\r
rjmp h_fwconfiginfo2\r
#ifdef _CHANGEABLE_ID_\r
cjmp 0x55,hrc_set_matchrom\r
cjmp 0xF0,hrc_set_searchrom\r
cjmp 0xEC,hrc_set_alarm_search\r
- \r
+#ifdef _HANDLE_CC_COMMAND_\r
+ cjmp 0xCC,hrc_start_read_command12\r
+#endif\r
rjmp handle_end_sleep\r
\r
#ifndef _DIS_FLASH_\r
ldi r_mode,OW_READ_COMMAND2\r
rjmp handle_end\r
\r
+#ifdef _HANDLE_CC_COMMAND_\r
+hrc_start_read_command12:\r
+ ldi r_mode,OW_READ_COMMAND12\r
+ rjmp handle_end\r
+#endif\r
\r
hrc_set_alarm_search:\r
lds r_temp,alarmflag\r
configZ config_info2,r_bytep\r
\r
h_fwconfiginfo_go:\r
- cpi r_bytep,16\r
+ cpi r_bytep,24\r
breq h_fwconfiginfo_crc\r
#ifdef _CRC8_\r
- cpi r_bytep,17\r
+ cpi r_bytep,25\r
breq h_fwconfiginfo_all\r
#elif defined _CRC16_\r
- cpi r_bytep,17\r
- breq h_fwconfiginfo_crc2\r
- cpi r_bytep,18\r
+ cpi r_bytep,26\r
breq h_fwconfiginfo_all\r
#else\r
- cpi r_bytep,16\r
+ cpi r_bytep,25\r
breq h_fwconfiginfo_all\r
#warning No CRC known code implemented\r
#endif\r
+h_fwconfiginfo_end:\r
+ //configZ config_info1,r_bytep //crc16 wird in config_info1 gespeichert, auch bei config_info2 \r
ld r_rwbyte,Z\r
rjmp handle_end_inc\r
h_fwconfiginfo_crc:\r
+#ifdef _CRC8_ \r
lds r_rwbyte,crc\r
rjmp handle_end_inc\r
-h_fwconfiginfo_crc2:\r
- lds r_rwbyte,crc+1\r
- rjmp handle_end_inc\r
+#elif defined _CRC16_\r
+ lds r_temp,crc\r
+ com r_temp\r
+ sts config_info1+24,r_temp\r
+ lds r_temp,crc+1\r
+ com r_temp\r
+ sts config_info1+25,r_temp\r
+ rjmp h_fwconfiginfo_end\r
+#endif\r
h_fwconfiginfo_all:\r
rjmp handle_end_sleep\r
\r
;copy ids in config bytes\r
ldi xl,lo8(owid1)\r
ldi xh,hi8(owid1)\r
- ldi yl,lo8(config_info2+9)\r
- ldi yh,hi8(config_info2+9)\r
+ ldi yl,lo8(config_info2+17)\r
+ ldi yh,hi8(config_info2+17)\r
ldi r_temp,7\r
owinit_cpconfig1:\r
ld r_rwbyte,X+\r
brne owinit_cpconfig1\r
ldi xl,lo8(owid2)\r
ldi xh,hi8(owid2)\r
- ldi yl,lo8(config_info1+9)\r
- ldi yh,hi8(config_info1+9)\r
+ ldi yl,lo8(config_info1+17)\r
+ ldi yh,hi8(config_info1+17)\r
ldi r_temp,7\r
owinit_cpconfig2:\r
ld r_rwbyte,X+\r