tux-droid-svn Mailing List for Tux Droid CE (Page 216)
Status: Beta
Brought to you by:
ks156
You can subscribe to this list here.
2007 |
Jan
|
Feb
(32) |
Mar
(108) |
Apr
(71) |
May
(38) |
Jun
(128) |
Jul
(1) |
Aug
(14) |
Sep
(77) |
Oct
(104) |
Nov
(90) |
Dec
(71) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(81) |
Feb
(18) |
Mar
(40) |
Apr
(102) |
May
(151) |
Jun
(74) |
Jul
(151) |
Aug
(257) |
Sep
(447) |
Oct
(379) |
Nov
(404) |
Dec
(430) |
2009 |
Jan
(173) |
Feb
(236) |
Mar
(519) |
Apr
(300) |
May
(112) |
Jun
(232) |
Jul
(314) |
Aug
(58) |
Sep
(203) |
Oct
(293) |
Nov
(26) |
Dec
(109) |
2010 |
Jan
(19) |
Feb
(25) |
Mar
(33) |
Apr
(1) |
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: jaguarondi <c2m...@c2...> - 2007-10-17 13:07:28
|
Author: jaguarondi Date: 2007-10-17 15:07:03 +0200 (Wed, 17 Oct 2007) New Revision: 630 Modified: daemon/trunk/libs/USBDaemon_tcp_server.c Log: * Added a log message when a client is removed. Modified: daemon/trunk/libs/USBDaemon_tcp_server.c =================================================================== --- daemon/trunk/libs/USBDaemon_tcp_server.c 2007-10-17 13:06:13 UTC (rev 629) +++ daemon/trunk/libs/USBDaemon_tcp_server.c 2007-10-17 13:07:03 UTC (rev 630) @@ -256,7 +256,11 @@ continue; if (send(tcp_clients_handle[i], data, sizeof(tcp_frame_t), 0) == 0) + { + log_error("Sending data on TCP socket failed: %m"); + log_error("Client %i will be disconnected", i); tcp_remove_client(i); + } } } |
From: jaguarondi <c2m...@c2...> - 2007-10-17 13:06:13
|
Author: jaguarondi Date: 2007-10-17 15:06:13 +0200 (Wed, 17 Oct 2007) New Revision: 629 Modified: daemon/trunk/libs/USBDaemon_usb.c Log: * Now setting the usb configuration when opening the dongle, just in case it's not done already. Modified: daemon/trunk/libs/USBDaemon_usb.c =================================================================== --- daemon/trunk/libs/USBDaemon_usb.c 2007-10-17 10:49:32 UTC (rev 628) +++ daemon/trunk/libs/USBDaemon_usb.c 2007-10-17 13:06:13 UTC (rev 629) @@ -80,6 +80,16 @@ return NULL; } + /* Setting configuration is normally not necessary as the snd-usb-audio + * will already have that done at this point. But in case we don't have usb + * sound support, it may help to set the configuration. */ + if (usb_set_configuration(tux_hdl, 1) < 0) + { + log_debug("Couldn't set config 1: %s (%d)\n"\ + " Another module may have claimed an interface "\ + "already, see dmesg|tail.", strerror(errno), errno); + } + /* Claim device interface */ error = usb_claim_interface(tux_hdl, TUX_INTERFACE); if (error != 0) |
From: Paul_R <c2m...@c2...> - 2007-10-17 10:49:34
|
Author: Paul_R Date: 2007-10-17 12:49:32 +0200 (Wed, 17 Oct 2007) New Revision: 628 Modified: firmware/tuxaudio/trunk/flash.c firmware/tuxaudio/trunk/main.c Log: * Small changes in the status of the memory. Modified: firmware/tuxaudio/trunk/flash.c =================================================================== --- firmware/tuxaudio/trunk/flash.c 2007-10-17 10:28:54 UTC (rev 627) +++ firmware/tuxaudio/trunk/flash.c 2007-10-17 10:49:32 UTC (rev 628) @@ -80,35 +80,35 @@ else if (!(read_status() & BUSY)) { - send_status(STATUS_AUDIO_CMD, 0, 1, 0); + send_status(STATUS_AUDIO_CMD, 0, 2, 0); f_state ++; } } else if (f_state == FIRST_PROG_STATE) { + send_status(STATUS_AUDIO_CMD, 0, 3, 0); programmingNumSound(); + send_status(STATUS_AUDIO_CMD, 0, 4, 0); f_state ++; } else if (f_state == PROG_TOC_STATE) { if (TOCRX) { - send_status(STATUS_AUDIO_CMD, 0, 2, 0); programmingToc(); } if (flash_state) - { - send_status(STATUS_AUDIO_CMD, 0, 3, 0); f_state ++; - } } else if (f_state == INIT_SOUND_PROG_STATE) { - send_status(STATUS_AUDIO_CMD, 0, 4, 0); initSoundProgramming(); if (flash_state) + { + send_status(STATUS_AUDIO_CMD, 0, 5, 0); f_state ++; + } } if (f_state == SOUND_PROG_STATE) { Modified: firmware/tuxaudio/trunk/main.c =================================================================== --- firmware/tuxaudio/trunk/main.c 2007-10-17 10:28:54 UTC (rev 627) +++ firmware/tuxaudio/trunk/main.c 2007-10-17 10:49:32 UTC (rev 628) @@ -206,6 +206,7 @@ numSound = command[1]; f_state =0; /* First programming state */ flash_state = 1; /* Erasing flash flag */ + send_status(STATUS_AUDIO_CMD, 0, 1, 0); programmingFlash = 1; /* Set the flag to enter programming sequence */ } else if (command[0] == STORE_INDEX_CMD) |
From: jaguarondi <c2m...@c2...> - 2007-10-17 10:28:58
|
Author: jaguarondi Date: 2007-10-17 12:28:54 +0200 (Wed, 17 Oct 2007) New Revision: 627 Added: firmware/hex_dev/ firmware/hex_dev/fuxrf.hex firmware/hex_dev/fuxusb.hex firmware/hex_dev/tuxaudio.eep firmware/hex_dev/tuxaudio.hex firmware/hex_dev/tuxcore.eep firmware/hex_dev/tuxcore.hex firmware/hex_dev/tuxrf.hex Log: * Added development hex files, these are compiled from revision 626 and tuxaudio has been patched to reapply revision 455. See http://wiki.tuxisalive.com/index.php/Firmware for the status of these hex files. Added: firmware/hex_dev/fuxrf.hex =================================================================== --- firmware/hex_dev/fuxrf.hex (rev 0) +++ firmware/hex_dev/fuxrf.hex 2007-10-17 10:28:54 UTC (rev 627) @@ -0,0 +1,216 @@ +:1000000019C032C031C030C02FC02EC02DC02CC08E +:100010002BC02AC029C012C327C026C025C024C0B7 +:1000200023C022C011C5DBC4FEC41EC01DC01CC03D +:100030001BC01AC011241FBECFEFD2E0DEBFCDBF60 +:1000400011E0A0E0B1E0E8E4FDE002C005900D920F +:10005000AC30B107D9F711E0ACE0B1E001C01D92BE +:10006000AC30B107E1F701C0CBCFCFEFD2E0DEBFBC +:10007000CDBF1A9901C049C744D058D039D53DD118 +:1000800090D07894A2E0B0E057D6802D9927809345 +:1000900002028F3F19F485E08093020280910202F0 +:1000A000880F8093020251D15F98809118028034AA +:1000B00001F540913F02309140022091320290912F +:1000C0003102E22FFF27E050FF4F8081980F9D35CE +:1000D00008F09B552F5F2C3009F420E0941710F0A6 +:1000E000391778F7909331022093320280E18093A0 +:1000F0001802809133028823C1F210923302F8D49F +:10010000D4CF80E285B983E184B981E388B98FE1F6 +:1001100087B980EC8BB986EA8AB985E08093C40000 +:1001200080E48CBD1DBC0DB40EB408958DB78095D0 +:10013000ECE0F1E02FEF32E0281B3109E217F30782 +:1001400010F41192FBCF109201021092190210923A +:10015000170281E08093180210922F0210922E0253 +:100160001092330210924102109242021092440205 +:1001700080E491E09093EB018093EA0183EB91E0BE +:100180009093ED018093EC0180E091E09093EF017A +:100190008093EE0183E791E09093F1018093F00169 +:1001A000089531E890913B029F3F39F480913D02E0 +:1001B0008F3F11F431EC01C031EA25E5A3E7B1E04E +:1001C000E0E0F1E08AE021932D93815087FFFBCF9F +:1001D0002FEFAEE7B1E0EBE0F1E081E021932D936A +:1001E000815087FFFBCF80913A028093E701809393 +:1001F000810180930E019093E80190938201909386 +:100200000F01309383013093100180913E028130C1 +:1002100031F480E2809384018093110104C0109234 +:1002200084011092110180913C028093850180939A +:10023000120180913D02809386018093130185E530 +:10024000809387018093140180E091E044D083E79C +:1002500091E041D0089520E0281750F49FE000007D +:10026000000000000000915097FFF9CF2F5FF4CFFE +:100270000895CF939DD15D9AC0E02C2F00002F5F91 +:100280002F3FE1F740E050E020E4CA018770907012 +:10029000892B19F4CC0F4899C16021504F5F5F4FF3 +:1002A00027FFF3CFC3D18C2F9927CF910895E1DF9A +:1002B000982F9F779D3508F09C53923008F492E078 +:1002C00080913F02981720F080914002891778F7BB +:1002D000892F99270895FC01DC015096808987FFBA +:1002E00002C096E001C090E320E0913021F09150EF +:1002F0008D912827FACF2C930895FF920F931F9387 +:10030000CF93D5DF80930302C1E081E0F82E0C2F5C +:1003100011270D5F1D4FCBDFF801808390E0282F60 +:10032000E92FFF27ED5FFD4F8081281721F09F5FA8 +:10033000C917B1F702C0FF2051F7CF5FC43128F3CE +:10034000CF911F910F91FF9008958091F6018064E5 +:100350008093F6011092F70169D134D31092C00056 +:100360001092C1001092C20080E290E09093890048 +:100370008093880021E0E091EC01F091ED01809103 +:1003800001028823E1F3109201022130C1F480813F +:100390008238A9F78091F60180618093F6018091FF +:1003A0008301846080938301809310018091840194 +:1003B0008F7D809384018093110122E0E0CF223071 +:1003C000F1F68081992781FFDACF82FFD8CF809123 +:1003D00083018F77809383018093100195E5A9E8CD +:1003E000B1E0E6E1F1E088E291939D93815087FFCF +:1003F000FBCF8091F60182608093F6010895CF9340 +:10040000DF932091F0013091F101A091EE01B091C4 +:10041000EF018091F701FD0185878091F60181FF51 +:1004200047C080911802992782FF1AC08091190253 +:10043000868B909119029F5F90931902809183019E +:10044000877F809383018093100194FF31C01092C5 +:1004500018028091F6018D7F80628093F60128C09A +:1004600080FF26C0FD017796C3E0D2E093E1899139 +:100470008193915097FFFBCFFD0180898860808B2D +:1004800080911902868B809119028F5F80931902E7 +:1004900080910102882361F010920102E091EC0149 +:1004A000F091ED01808184FF03C084E08093180205 +:1004B0008091F60185FF41C08091180284FF3DC004 +:1004C000E091EE01F091EF0180898860808BE091EE +:1004D000EE01F091EF0180913002828BE091EE010C +:1004E000F091EF0180913102838BE091EE01F09168 +:1004F000EF018091310290913002890F848B8091BD +:1005000001028823D1F0E091EC01F091ED018081AE +:1005100084FF13C010920102E091EE01F091EF010F +:100520008089877F808BE091F001F091F1018089D3 +:10053000877F808B80E280931802FD01818981FF93 +:100540000DC0E901AD967B9690E181918993915020 +:1005500097FFFBCFF9018189846003C0F90181898C +:100560008B7F818B809142028130C9F4FD017796A7 +:10057000C6E3D2E093E089918193915097FFFBCF3E +:10058000FD0181898860818B809143028F5F809318 +:1005900043028F3F41F483E08093420204C0FD0197 +:1005A0008189877F818BCD0196DEDF91CF91089580 +:1005B000299A5A9A419A5D9828985C985998549A21 +:1005C0000895982F299A59985C98419834E360FFD0 +:1005D00006C0309102023167892F855E0FC0892FD6 +:1005E000845E20EA98E05C9827FF02C0599A01C017 +:1005F0005998220F5C9A915097FFF5CF8068232F6E +:100600003327322F2227280F311D9FE05C9837FFB8 +:1006100002C0599A01C05998220F331F5C9A915019 +:1006200097FFF4CF5C985998419A08955D9828985F +:1006300029985A9841985C98599808951F920F925A +:100640000FB60F9211242F933F934F935F936F93A5 +:100650007F938F939F93AF93BF93EF93FF9380917B +:10066000F8018F5F8093F801813009F053C08091C9 +:100670008800909189008B5B9F4F909389008093B5 +:10068000880096DF8091F60185FF37C090911702B0 +:10069000E92FFF27ED5FFD4F80818093F701892FC0 +:1006A0008F5F80931702843109F07BC1109217028B +:1006B0008091180285FF0FC080913002E82FFF273C +:1006C000DF01AD5FBD4F809131028C931092180213 +:1006D000E65EFD4F108280912E0290912F020196CE +:1006E00090932F0280932E02885E934009F059C1A7 +:1006F00010922F0210922E0254C18091F7018A5F4E +:100700008093F7018091F7018F3508F44AC1109268 +:10071000F70147C1823031F58091880090918900BE +:100720008B5A9E4F909389008093880061E080915E +:10073000F70147DFE091EE01F091EF018091F701C1 +:1007400085878091F60184FD5ADEE091EE01F091FB +:10075000EF01808987FF02C087E101C081E48093B7 +:10076000F9011FC1833089F480918800909189003C +:10077000CB969093890080938800289A80E4809398 +:10078000C00088E08093C1000CC18430C1F4809126 +:1007900088009091890085519B4F909389008093A8 +:1007A00088001092FB0186E48093C20088E2809367 +:1007B000C10085E58093C6008093C600F2C08530F5 +:1007C00061F480918800909189008B5B9F4F90939A +:1007D000890080938800ECDEE4C0863049F5809182 +:1007E00088009091890085579F4F9093890080934E +:1007F000880060E08091F701E4DE54988091F60172 +:1008000085FF0DC080912E0290912F02892B39F423 +:1008100080911702E82FFF27E65EFD4F10821092AD +:10082000FC011092FD01109201021092FE01B9C06C +:10083000873081F480918800909189008C5F9E4F71 +:1008400090938900809388005D9A8091F70180934E +:10085000E601A7C0883099F48091880090918900C2 +:10086000805C9B4F90938900809388001092C00019 +:1008700080E98093C10086E48093C20092C08930F1 +:1008800009F08FC0809188009091890084559F4F16 +:1008900090938900809388001092C0001092C1004C +:1008A0001092C200C3DE1092F8018091FD018F3FCB +:1008B00071F42091FE01222351F481E08093010222 +:1008C00088B198E0892788B9209345021AC081E051 +:1008D000809341029091F60194FF08C080914502F7 +:1008E0008F5F809345028F3F09F45F9A95FF09C09F +:1008F00080911702E82FFF27E65EFD4F80818F5F12 +:1009000080838091F60185FF1BC081E080933302D4 +:10091000809118028823A1F490911702A92FBB2778 +:10092000FD01E65EFD4F8081833050F090933002F0 +:10093000AD5FBD4F8C918093310280E480931802AB +:100940008091EE019091EF0123E731E063EB71E0DC +:1009500040E451E0E1E080309E0789F43093EF01FC +:100960002093EE019093F1018093F0017093EB01DD +:100970006093EA015093ED014093EC0112C080E0D6 +:1009800091E09093EF018093EE013093F101209379 +:10099000F0015093EB014093EA017093ED016093F5 +:1009A000EC01FF91EF91BF91AF919F918F917F915A +:1009B0006F915F914F913F912F910F900FBE0F90CC +:1009C0001F9018951092850010928400109280005C +:1009D00082E08093810080936F0086BB0895DEBB28 +:1009E000DFB7DABDCBBDC091EE01D091FB01CD0FD9 +:1009F000DF5FD093FB01D1E0D881D093C600D091C6 +:100A0000FB01DD3009F42998C091F901DC1731F4BC +:100A1000D0E4D093C000D8E4D093C100CBB5DAB510 +:100A2000DFBFDEB31895DEBBDFB7DABDD0E0D09311 +:100A3000C000D093C100D093C2005A982898419822 +:100A4000DAB5DFBFDEB318959EBBEABDFBBDFFB7CD +:100A5000F8BD9091FD019330B1F0E6EEF1E0E90FC1 +:100A6000F081E091C600FE17D9F593959093FD01B2 +:100A70009330C1F5E0918400E093FF01E09185009F +:100A8000E09300022FC09091C600E091EA01F0913E +:100A9000FC01EF0FFF5FF093FC01F1E09083F09118 +:100AA000FE01F927F093FE01F091FC01F13039F4D9 +:100AB00097FF02C0E6E001C0E0E3E093FA01909105 +:100AC000FA019F1779F49FEF9093FD0190E09093C6 +:100AD000C1009093C2005A985D984198299802C02D +:100AE0001092FD01F8B5FFBFFBB5EAB59EB31895AE +:100AF0000F931F93CF93DF93A091EC01B091ED0181 +:100B0000C091F001D091F10150E0152F052F452F34 +:100B100081E180933502509334021A9BFECF429AB2 +:100B20001A99FECF429880910102882309F441C0AE +:100B300010920102809141028823D1F0109241026B +:100B4000FD01818199279C012470307081FF0BC0C9 +:100B5000232B31F014E042E882E2809335020EC08C +:100B600011E042E00BC0232B49F012E0412F06C0F8 +:100B7000FD01818181FF02C042E011E0FD01818120 +:100B80009091440283FF0AC0992361F481E080932D +:100B900044024860186006C09068C8C0992311F0EC +:100BA00010924402FD01818187FF03C082E080939F +:100BB000420280914202882311F0486010614EBDCC +:100BC00040980DB407FEFDCF41E0612F772760719B +:100BD00070701A9994C0409A552311F40EB528C02C +:100BE000523180F401FF05C0FE01E50FF11D8EB505 +:100BF000828F5830E8F4E52FFF27E75CFD4F8EB574 +:100C0000808316C0852F8251843090F403FF10C07A +:100C100090914202992361F4E52FFF27EC5DFD4F8F +:100C20008EB58083553121F4409342029093430264 +:100C30005F5F20913402222339F5812F992780FFAD +:100C400005C0FD01E50FF11D828514C081FF04C0C0 +:100C5000FD01E50FF11D08C082FF0EC0E52FFF2743 +:100C6000523120F4EA0FFB1F848D04C0EA0FFB1FF2 +:100C7000379780818EBD01C02EBD809135025817F7 +:100C8000E9F5409334023AC02130F1F4812F9927DD +:100C900083FF0EC0E52FFF2782FF04C0EA0FFB1F72 +:100CA0007C9703C0EA0FFB1F3B9780818EBD01C07C +:100CB0001EBC252F332780913502992704962817CB +:100CC0003907E1F482E018C02230C9F461157105DA +:100CD00041F0809142028EBD813021F0109242029B +:100CE00001C01EBC252F3327809135029927059618 +:100CF0002817390719F483E08093340240980DB423 +:100D000007FEFDCF80913402833009F062CF409A14 +:100D1000998901FF02C0926001C09D7F998B8091EB +:100D200044029989882309F037CF9F77998BDF9107 +:100D3000CF911F910F910895F999FECFB2BDA1BD3A +:080D4000F89A119600B4089521 +:0C0D48000305070B0D1113171D1F2529B3 +:0C0EF000C8030200C9EEFF00CA000000A9 +:00000001FF Added: firmware/hex_dev/fuxusb.hex =================================================================== --- firmware/hex_dev/fuxusb.hex (rev 0) +++ firmware/hex_dev/fuxusb.hex 2007-10-17 10:28:54 UTC (rev 627) @@ -0,0 +1,671 @@ +:10000E000A0A3D2054555820737461727465642039 +:04001E003D3D0A005A +:10002600C281D2A3438F01D2AF121AAA1221647BD6 +:0D003600FF7A00790E1207A512004680FB2C +:0C22D800C8010200C9FFEE00CA000000AF +:041FC5004101940042 +:100A9F00537461636B696E672025427520646174BE +:100AAF00612066726F6D20737461747573206F6E41 +:100ABF0020555342206669666F2E0A0020434D442D +:100ACF0020444953434F4E4E454354200A00204380 +:100ADF004D4420434F4E4E454354200A0020434D72 +:100AEF00442052455155455354494E47205475782B +:100AFF0020494420446F6E676C65200A0020434DE7 +:100B0F00442052455155455354494E47205475780A +:100B1F00204944205246200A0020434D4420434898 +:100B2F00414E47494E47204944200A0020434D4437 +:100B3F002057414B45205550200A0020434D44205B +:100B4F004348414E4E454C2052414E4745200A00E6 +:100B5F004C4F4F503A20696E7465727275707420E5 +:100B6F00666C6167733A202542780A005553423A02 +:100B7F002053746174757320726561647920746F8A +:100B8F002062652073656E742E0A005553423A2019 +:100B9F005374617475732073656E742E0A0045501B +:100BAF005F434D445F4F55543A206E65772065760D +:100BBF00656E742C20666C6167733A202542780A43 +:100BCF000045505F434D445F4F55543A206E6F7749 +:100BDF002070726F63657373696E6720254264209E +:100BEF0062797465732E0A0054555820636F6D6DCA +:100BFF00616E64200025425820000A00444F4E4782 +:100C0F004C4520636F6D6D616E642000424F4F54F1 +:100C1F004C4F4144455220636F6D6D616E643A20B5 +:100C2F00004552524F523A20676F74204550204F63 +:100C3F005554206576656E74206275742055736205 +:100C4F005F72785F636F6D706C6574652072657429 +:100C5F0075726E732046616C73652E0A00454E44A3 +:100C6F00206F662045505F434D445F4F55542C20F5 +:100C7F00696E7465727275707420666C6167733A11 +:100C8F00202542780A005553423A20436F6E6E6515 +:100C9F0063742052460A002020203D3E20434F4ED1 +:100CAF004E4543544544200A002020203D3E204419 +:100CBF004953434F4E4E4543544544200A00555324 +:100CCF00423A20526571756573742049440A0020B9 +:100CDF0020203D3E2052465F434F4E4E45435445E4 +:100CEF0044200A002020203D3E2052465F444953B5 +:100CFF00434F4E4E4543544544200A005553423A04 +:0C0D0F00204368616E67652049440A00BB +:101FC90041028900C113C116C114C115430244015C +:021FD9000247BD +:10160D00900305A3A3A3E090030524FFFFEE34FF91 +:10161D00FEED34FFFDEC34FFFC020EEA900305E015 +:10162D00FCA3E0FDA3E0FEA3E0FFEC4D4E4F2290A6 +:10163D000346E0FF04F090034DE0FCA3E02FF5829C +:10164D00E43CF583E5CFF00516229001957440F04A +:10165D00A374FFF0A3F022D2009001927404F090D5 +:10166D00030522900149E014FFE516C39F227BFF7D +:10167D007A0C79042516F582E422E4900192F07B30 +:10168D00FF229001957440F022900192F07BFF2291 +:0A169D0090018CE0FEA3E0FF4E2256 +:101AAA00900305120EF60000271012238943BC800A +:101ABA0043BC1090030512162C600F900305A3A3D4 +:101ACA00A3E090030512161780E953BCEF7D80E46A +:101ADA00FF122382E4FF1222461220DF53F1FC4355 +:101AEA00F103D2B3C280C290C200E4900103F0C2F3 +:071AFA0004C215D208C21757 +:011B010022C1 +:1018380030176A90028AE0FF6063900289E0705D69 +:1018480075C704E4F5CF30A304F5CF800375CF0145 +:10185800900103E0F5CFEF1313543FF5CFE4F517EC +:1018680090028AE0FFE517C39F50091222868FCFA6 +:10187800051780EC90028AE0FF643C60108F17E542 +:1018880017C3943C5007E4F5CF051780F2900289FE +:0D1898007401F01223B7E4900103F0C217B1 +:0118A5002220 +:100F7300900104E0600302107DA3E0B4011EC200EF +:100F8300C28190014574FFF0A3F01223B3E49001F2 +:100F93009AF01216887A0A79CB1207A5900105E018 +:100FA3006402702DC20012168F900106E0FF9001BB +:100FB30096F0900107E0FE90019712165C900145B0 +:100FC300EFF0A3EEF074011216967A0A79DD120798 +:100FD300A5900105E0B403237FC61220FB900145D1 +:100FE300E0FF1220FB900146E0FF1220FBE4FF121A +:100FF30020FB7BFF7A0A79EC1207A5900105E0B488 +:101003000413121657A3F0A3F074021216967A0B68 +:10101300790C1207A5900105E0B40522121657902A +:101023000106E0900198F0900107E0900199F0909B +:1010330001927403F07BFF7A0B79281207A59001C4 +:1010430005E0B4061212168F90019A7401F07BFF2B +:101053007A0B793B1207A5900105E0B4071C121621 +:101063008F900106E090019BF0900107E090019CB6 +:10107300F07BFF7A0B794A1207A5900104E0640123 +:101083007064A3E07060A3E0705CA3E0FF7002D221 +:1010930017EFF47051F5A8F5B175C314FD7F401235 +:1010A3001EF27B017DF47F0412213190030A120E9C +:1010B300F60000271043BC1090030A12162C601888 +:1010C300EF24FFFFEE34FFFEED34FFFDEC34FFFCB5 +:1010D30090030A120EEA80E053BCEF12237375A645 +:1010E3001E75A6E180FE900104E0FFB4020FA3E0A9 +:1010F300FEB40103D21522EE705FC21522EF64061F +:1011030070579022D893FF1220FB9022D912115DC1 +:101113009022DA12115D9022DB1211649022DC120C +:1011230011649022DD12116B9022DDE4740193FFB0 +:101133001220FB9022DF12116B9022E012117290A9 +:1011430022E11211729022E1E4740193FF1220FB59 +:091153009022E3E493FF1220FB5B +:10115C0022E493FF1220FB22E493FF1220FB22E4F3 +:0D116C0093FF1220FB22E493FF1220FB22D0 +:10004600200719E5BD20E5030203C953BCBFD2074B +:1000560053BDFE53BDDF53BDF70203C9E5BD5431A1 +:10006600602EE5BD30E00CC207D2B3C28153BDFE9F +:1000760043BC40E5BD30E41853BDEF1220DFD20784 +:10008600121CE41222571222671223B3D2B3C28182 +:10009600E5BD20E30302015C53BDF790018DE0044A +:1000A600F0700690018CE004F0900289E0B4010C37 +:1000B6009002897402F075C70443CE10900147E0A0 +:1000C6007002A3E06010900148E024FFF090014721 +:1000D600E034FFF0801020160DE4F514F513D21865 +:1000E600D291C219C21A900194E0600214F030074E +:1000F60065900191E0605F30A32C20040F53F1FC62 +:1001060043F101E490018CF0A3F0D20412169D7025 +:1001160002D2B3BE0205BFFF02C2B3EFF47003EE14 +:1001260064037032802730040F53F1FC43F103E47B +:1001360090018CF0A3F0C20412169D7002D2B3EFA8 +:1001460064104E7002C2B3EF64204E700990018CA9 +:1001560074FFF0A314F012183820131C900191E0DC +:100166006016301D1375C701751608121BE28FCF76 +:10017600D516F843CE10D213E5F870030203C9E58D +:10018600F830E41075C704E5CE30E00853CEFEE43F +:10019600900289F0E5F830E00BE4F5C7E5CE30E2F1 +:1001A60003122397E5F830E31A75C7031223C7EF46 +:1001B600600E30150B751608AFCF121E94D516F8C3 +:1001C60053CEFDE5F830E21A75C7021223C7EF6079 +:1001D6000E20150B751608AFCF121E94D516F853C0 +:1001E600CEFDE5F830E10D75C701E5CE30E00553EB +:1001F600CEFEC2132008030203C9E5F820E5030278 +:1002060003C975C705E5CE544270030203C0122325 +:10021600C7900149EFF070030203C990018EE5CF44 +:10022600F090018EE070337BFF7A0B79F71207A509 +:10023600D201E4F516121670501A744B2516F58283 +:10024600E43401F583E5CFF0744B12167B340112CA +:10025600072380E11207300203AE90018EE06401AD +:10026600704EF516121670500E74042516F582E4BB +:10027600340112164F80ED900104E0B4010CA3E0A6 +:100286007008A3E07004A3E060207BFF7A0C790B72 +:100296001207A5E4F516121670500C740412167B9C +:1002A600340112072380EF120730120F730203AED8 +:1002B60090018EE0640260030203AE7BFF7A0C7944 +:1002C6001B1207A5D216C200900352E5CFF0E064D8 +:1002D600017042C281C291F5160516E516B4FFF902 +:1002E600E4F5160516E516B4FFF9D281122224E5C7 +:1002F600CF25E0900349F0900350E5CFF0900348F6 +:10030600E5CFF0E4900346F090034FF0900194742B +:0D031600FAF002038E900352E0FFB40311D1 +:0E032300C216900309E5CFF0E5CFF0E5CFF06C +:1003310002038EEF6402705590034FE07034AFCF2B +:1003410090034AF0A3EFF0E0F8E4F0E890034AF0FC +:10035100AFCFA3E02FF090034AE03400F0E4F516AC +:10036100900149E024FCFFE516C39F501A12163C88 +:1003710080EEE4F516900149E024FEFFE516C39FE7 +:10038100500512163C80EE90034FE004F0900348B4 +:10039100E0FF90034FE0B50714900350E0FF900396 +:1003A10046E0B50708E4F090034FF0D202200505BE +:1003B10053CEFD800353CEBFA205B3920580097BC6 +:1003C100FF7A0C79301207A520070302070E3016B9 +:1003D1006D20020302070E900289E0600302070EFE +:1003E100900194E0600302070E780A7C037D017B93 +:1003F100017A037949FE7F06120DEB9003107440D8 +:10040100F0121F20900242E020E0F9900194741450 +:10041100F075C70475CFF0900242E0C41313540382 +:1004210030E009E054BFF0E4F5CF800375CF01E47B +:10043100F5CFF5CFF5CF90028904F0C202229001E9 +:1004410092E0FF7005C281D29122EF640170307A8F +:100451000C799512070F601D121664120EF600003A +:100461000BB8121629600512160D80F67BFF7A0C67 +:1004710079A60204FB1216877A0C79B80204FB9064 +:100481000192E06402702F7A0C79CD12070F601D82 +:10049100121664120EF600000BB81216296005122E +:1004A100160D80F67BFF7A0C79DE0204FB121687AB +:1004B1007A0C79F38044900192E06403703F7BFFF2 +:1004C1007A0D790B1207A5D2817B017A0179957D8D +:1004D100171217C8EF601C121664120EF600000BFB +:1004E100B8121629600512160D80F67BFF7A0C7979 +:1004F100DE80071216877A0C79F30207A590019224 +:10050100E06404600302070E30A3030206ECD21478 +:1005110020000302070E30B41E30181B90014774EF +:1005210017F0A37470F0C21AE4F515F514F513C2AF +:1005310018C291D219C20820190302070E201A030A +:1005410002070EE4F54BC21AE5147023301C0D307E +:10055100010575110A8010751102800B30010575B6 +:1005610011088003E4F5118511C5751401804DE56D +:1005710014B40114E515B41103751402E51130E149 +:1005810038121C268FC58034E51464027026E515E7 +:10059100B4150AE51130E302C201751403E5113007 +:1005A100E31074392515F582E43401F583E0F5C5CE +:1005B100800A8005E514B40303E4F5C50515E513C8 +:1005C1007025AFC4BF8003D38001C3400430A3F2C0 +:1005D1002285C510E5C530E7057512228003751225 +:1005E100117513010206DCE51364017036AFC4BF57 +:1005F1008003D38001C3400430A3F222E51030E12F +:1006010009D29074232515F8A6C5E5122401FFE44B +:1006110033FEE5156F7001EE60030206DC7513020F +:100621000206DCE513640260030206DCAFC4BF808E +:1006310003D38001C3400430A3F222E51030E34725 +:10064100AF127E00EF2405FDEE33FCAB157A00D32B +:10065100EB9DEC6480F8748098500BC3EB9512FD10 +:1006610074452DF8A6C5EF2406FFE43EFEEBB50761 +:1006710016EAB50612900193E5C5F0E0FF9001037B +:10068100E0C39F5002EFF0E5122406FFE433FEE5DC +:10069100156F7001EE7044D208C219D291D218E5DB +:1006A1001054826016E4F51674252516F8E6FF123B +:1006B1001D560516E516C3951240EDE51030E34DC4 +:1006C100E5476049E4F51674472516F8E6FF122060 +:1006D100FB0516E516C3940440ED22054B301A2D97 +:1006E100E54BC3940550030205472230141FC28114 +:1006F100C21412168F900145E0900196F0900146C8 +:0D070100E090019712165C9001927401F0D7 +:10070E00227BFF1207A5D2817B017A0179957D1795 +:10071E001217C8EF22F583E0900311F01207A5051A +:0C072E0016227BFF7A0C79091207A52225 +:061FDB00C198C11AC119F2 +:1020490024FFFFEE34FFFEED34FFFDEC34FFFC22EC +:0E20590090030BE0FCA3E0FDA3E0FEA3E02259 +:0E229500E4F514F513D218D291C219C21A2220 +:101CE40053AFFE43C31043C30253C3F753C3FB4371 +:101CF400C32043C340D2B2D2B4D291D288D2A8E492 +:101D0400F514F513C2007F17900195E4F0A3DFFCEE +:081D140090014574FFF0A3F0FB +:011D1C0022A4 +:030003000223BB1A +:0323BB00D21A3201 +:0517C80090030AEDF0A2 +:1017CD00A3120EF6000186A07FA07E867D017C000F +:1017DD00EC4D4E4F6006EF12204980F420B41A12E2 +:1017ED002059FFEC4D4E4F7002FF2212205912204E +:1017FD004990030B120EEA80E3C291E4FF90030AB5 +:10180D00E0FEEFC39E501F301AFDC21A120E11F5E5 +:10181D00C5AEC4BE8003D38001C350F5740129F950 +:0A182D00E43AFA0F80D7D2917F0150 +:01183700228E +:102224001223A312237B90034D7401F0A374AEF028 +:012234002287 +:101F2000900242E054BFF090030AE0900243F09028 +:101F3000030BE0FCA3E0FDEC9001ACF0A3EDF0900E +:0C1F40000310E02402900241F00222771E +:101B9C00900235E0FF04F074362FF582E43402F540 +:101BAC0083E595F022E0FF04F074AC2FF582E43469 +:101BBC0001F58322900241E0FF9001ABE0C39F222C +:101BCC00E0FBA3E0FAA3E0F9EA494B22A3E0FAA375 +:061BDC00E0F5828A83227D +:0423A300759380228C +:07237B007593C043B102227B +:0C22E40090022EEBF0A3EAF0A3E9F02238 +:0C22F000900232EBF0A3EAF0A3E9F02228 +:0F227700900242E04401F0E49001ABF00223A793 +:0423A700439320221A +:0B231400439310900242E054FEF022C0 +:0323BE008F9522D6 +:0423AB004393042232 +:0423AF005393FB2227 +:0323C100AF9522B3 +:0323C400AF9422B1 +:030043000214B0F4 +:1014B000C0E0C0F0C083C082C0D075D008AF94EF48 +:1014C000120F2715FC00151508151510151D1815F8 +:1014D0003D20151D28153D30154738154D40153D4B +:1014E00048154A50153A58155D60155D68155D70D0 +:1014F000155D781573801585881573901585981579 +:101500008CA015B8A815B8B015DFB81547C0154799 +:10151000C8000015FF5393DF9002438008121BC0E0 +:10152000500B121BB1E0FF1223BE0215FF12231451 +:10153000900242E04440F00215FF121B9C900242D0 +:10154000E04402F00215FC0215F7121B9C900231D8 +:10155000E014FF900235E0C39F50278022900242A2 +:10156000E04401F0900235E4F0900242E054FBF0D8 +:101570000215ED121B9C900235E0C3940850030243 +:1015800015ED0215F2900242E04404F012237B9024 +:10159000022E121BCC6018900235E0FF7B017A020C +:1015A0007936C00A90022E121BD8D00A120F519021 +:1015B0000242E054FEF08047900232121BCC601AC7 +:1015C0007B017A0179ACC00A900232121BD8D00A92 +:1015D0007F82120F51900241EFF09001ABE4F09046 +:1015E00001AB121BB1E0F595121BC050051223ABE5 +:1015F000800D1223AF800812237B80031223145323 +:0D16000093F7D0D0D082D083D0F0D0E0326C +:10214B00AE4EAF4FC390036EE09FFF90036DE09ECA +:09215B00FED3EF94FFEE947F2205 +:101DC500AC4EAD4FED2FFFEC3E90036DF0A3EFF061 +:101DD50020AF1312214B50047F0080027F01EF706A +:101DE5001312232A80ED12214B50047F0080027FBD +:041DF50001EF60F2A8 +:011DF90022C7 +:10202A00E4F54FF54EF54DF54C90036FF0A3F0F53E +:0F203A008A758CF0438901438F02D28CD2A92280 +:0A232A0020AF06308D031219E722E0 +:03000B000219E7F0 +:1019E700C0E0C0F0C083C082C0D075D000C000C0C6 +:1019F70004C005C006C007C28D438CF090036F7406 +:101A07000C75F04A120EBEFEC3E5F0944AEE940C34 +:101A1700E450047F0380027F02FEFDFCE54F2FF5B3 +:101A27004FE54E3EF54EE54D3DF54DE54C3CF54C4D +:101A3700D007D006D005D004D000D0D0D082D08334 +:051A4700D0F0D0E032F8 +:10131F001201100100000020EB0307FF2001010262 +:10132F0003010C034B00790073006F006800140376 +:10133F005400750078002000440072006F006900AF +:10134F0064000C0331003000300030003100040322 +:10135F000904140354007500780020004400720043 +:10136F006F006900640009023B0106010480320925 +:10137F0004000000010100000A24010001460002E0 +:10138F0001020C24020101020001000000000C24E4 +:10139F000202010100010000000009240303010102 +:1013AF0000050009240304010300060009240605B3 +:1013BF0001020300000924060602020300000904CB +:1013CF0001000001020000090401010101020000F7 +:1013DF00072401030102000B24020101010801404F +:1013EF001F00090581010800010000072501000009 +:1013FF0000000904020000010200000904020101BB +:10140F0001020000072401020102000B2402010166 +:10141F00010801401F000905020108000100000733 +:10142F00250100000000090403000200000000076E +:10143F00058403400001070505034000010904046A +:10144F000000010100000924010001270001050C23 +:10145F002402070101000100000000092403080114 +:10146F000300090009240609070203000009040507 +:10147F00000001020000090405010101020000073C +:10148F002401070102000B24020101010801401F82 +:10149F0000090503010800010000072501000000F5 +:0114AF00003C +:10197E00E5CFF0A3E5CFF0A3E5CFF0A3E5CFF022BE +:10198E0090030AE4F0740CA3F090034074FFF0A3EC +:10199E002253CEFB43CE202253CE7F53CEFB43CEDB +:1019AE00102253CEFB43CE8022900340E0FBA3E0F7 +:1019BE00FAA3E0F92253CEFD53CE7F2253CEDF534E +:1019CE00CEF72253CEFEE5CE54422290030AE4F027 +:0919DE00A322E4F5CF43CE102250 +:1020DF00E4900344F0A3F0A3F0900191F0C20790B5 +:0C20EF00018CF0A3F090014AF0C2052221 +:101CA8007D857F011223827F011222467D817F027A +:101CB8001223827F021222467D817F031223827FB4 +:101CC800031222467D877F041223827F0412224654 +:0C1CD8007D837F051223827F05022246D7 +:06239700E4F5C70216A7E1 +:1016A70090033FE5CFF090033EE5CFF0A3E0546011 +:1016B700703A90033EE024FB601924FD601014602B +:1016C7001724FE60182405701912117980631220FF +:1016D700A3805E12217D8059121B528054121D8EE9 +:1016E700804F12199FE5CE30E3FB804290033FE025 +:1016F70054606420703090033EE0247E600F1460D5 +:10170700111460132403701412206780241220859B +:10171700801F121FE8801A122009801512199FE5F1 +:10172700CE30E3FB800812199FE5CE30E3FB121998 +:05173700CA53CE7F2221 +:10217D00AFCF1219A943BC01E5CE30E0FB53CEFE23 +:05218D00EF4480F5C6DF +:01219200222A +:101B5200AFCF53CE7F53CEFBEFD39401501E9001F3 +:101B620091EFF064017021C2B3121CE412226712D9 +:101B720022571223B3E4900192F0800C43CE20E569 +:101B8200CE30E3FB1219CA2243CE10E5CE30E0FB81 +:091B920053CEFE121CA843BC0254 +:011B9B002227 +:101D8E00AFCF90030AE5CFF0AECFA3E5CFF053CEA1 +:101D9E007F53CEFBEEB40313EF701090014AF0C2E6 +:101DAE00057F041222467F0512224643CE10E5CE51 +:061DBE0030E0FB53CEFEF5 +:011DC40022FC +:10117900C21BAFCFAECFEE24FE601E146031240235 +:10118900600302122490030AE4F074121219957490 +:1011990013F0A3741FF002123B90030A7401F0A329 +:1011A900743B1219967413F0A37475F002123BEF95 +:1011B90014601F14602814603614603F2404704CB6 +:1011C9001219D974041219967413F0A3745DF002FC +:1011D900123B12198E7413F0A37431F08054121952 +:1011E900D974141219967413F0A3743DF080431244 +:1011F900198E7413F0A37451F080371219D974142D +:101209001219967413F0A37461F0802612199FE5E0 +:10121900CE20E314E5CE20E2F6800D12199FE5CE2B +:1012290020E305E5CE20E2F653CEF753CEDF53CEC9 +:101239007F22E5CFE5CF90030DE5CFF090030CE5D4 +:10124900CFF090030AE0FEA3E0FFA3E0FCA3E0FDDA +:10125900D39FEC9E400DEF541F7004D21B800CC22B +:101269001B800890030AECF0A3EDF01219B0D3909B +:10127900030BE0942090030AE0940040281219B768 +:101289007D2012131090030BE024E0F090030AE094 +:1012990034FFF0E5CE54427005E5CE30E0F5121981 +:1012A900D160CB80401219B790030AA3E0FD121355 +:1012B90010E490030AF0A3F0E5CE54427005E5CEA0 +:1012C90030E0F51219D16002801B301B1D1219B7CD +:1012D900E4FD122212E5CE54427005E5CE30E0F568 +:1012E9001219D1600553CEEF8019E5CE544270052D +:1012F900E5CE30E2F5E5CE20E20CE5CE54426006BB +:0613090053CE7F53CEFD20 +:10130F0022122212900340EBF0A3EAF0A3E9F0229D +:1020670090030A12197E1219B01219E0E5CE30E07A +:0D207700FB53CEFEE5CE544260FA1219C3B1 +:012084002239 +:1020850090030A12197E1219B01219E0E5CE30E05C +:0D209500FB53CEFEE5CE544260FA1219C393 +:0120A200221B +:101FE80090030A12197E1219B075CF0A43CE10E574 +:101FF800CE30E0FB53CEFEE5CE544260FA1219C350 +:0120080022B5 +:1020090090030A12197E1219B075CF0143CE10E55B +:10201900CE30E0FB53CEFEE5CE544260FA1219C32E +:012029002294 +:1021A60090035312197E1219A6E5CE30E0FB53CEEA +:0121B600FE2A +:0121B7002205 +:1021B80090035712197E1219A6E5CE30E0FB53CED4 +:0121C800FE18 +:0121C90022F3 +:1021CA0090035B12197E1219A6E5CE30E0FB53CEBE +:0121DA00FE06 +:0121DB0022E1 +:1021DC0090035F12197E1219A6E5CE30E0FB53CEA8 +:0121EC00FEF4 +:0121ED0022CF +:1020A3001219B0900191E0F5CF43CE10E5CE30E0A8 +:0E20B300FB53CEFEE5CE544260FA1219C32252 +:1021EE001219B043CE20E5CE30E3FB1219CA53CEFE +:0221FE007F223E +:101B0200E5CFE5CFAFCF1219B090033FE0247F605D +:101B12000C14600E2402701975CF018014E4F5CF05 +:101B2200800FEF547F2443F582E43403F583E0F51C +:101B3200CF1219E0E5CE30E0FBE5CE20E2F653CE3F +:0F1B4200FEE5CE544260FAE5CE20E2F51219C35B +:011B51002271 +:101A4C0090033FE0700B12199FE5CE30E3FB53CEB1 +:101A5C00DF90033FE0B4010B12199FE5CE30E3FB9E +:101A6C0053CEDF90033FE064027032E5CF702EE579 +:101A7C00CFAFCFEF247F701A75C70143CE20E4F5AA +:101A8C00C790034404F01219A9E5CE30E0FB53CE05 +:0E1A9C00FE2212199FE5CE30E3FB1219CA227A +:1018A60090033FE0700B12199FE5CE30E3FB53CE59 +:1018B600DF90033FE0B4010B12199FE5CE30E3FB46 +:1018C60053CEDF90033FE064027042E5CF703EE501 +:1018D600CFAFCFEF6020247F702875C70153CEDFCE +:1018E6007F01122246E4F5C7900344F01219A9E5D8 +:1018F600CE30E0FB80081219A9E5CE30E0FB53CECE +:0E190600FE2212199FE5CE30E3FB53CEDF2206 +:021FE100C11C21 +:1020C100E024CDF582E43402F583229002CBE004D2 +:0E20D100F0E0FEC39420229002CBE014F02237 +:10225700E49002CBF09002CAF09002C9F0C21C22AF +:101DFA007F081220CC4002D21CEEB438041220D83C +:101E0A0022AECFEE9002C970081220C17401F08090 +:101E1A00051220C1EEF09002C9E004F0E0B43802E5 +:041E2A00E4F0DFCE33 +:011E2E002291 +:101E94001220CC4002D21CEEB438041220D822EF17 +:101EA4009002C970081220C17401F080051220C18B +:0E1EB400EFF09002C9E004F0E0B43802E4F070 +:011EC20022FD +:101C26009002CBE0FEC394105002C21CEE701A90D4 +:101C360002CAE0FE7006900304E0FF2274CC2EF583 +:101C460082E43402F583E0FF221220D89002CA1201 +:101C560020C1E0FF9002CAE004F0E0B43802E4F0EC +:011C6600225B +:021FE300C11D1E +:0B231F00E02403F582E43400F5832283 +:10226700E4900002F0900001F0900000F0C21D22FF +:101D5600900002E004F0E0FEC394804002D21DEE43 +:101D6600FD7C00BC010ABD0107900002E014F022D0 +:101D760090000012231FEFF0900000E004F0E0B4A2 +:081D86000005E4B40101F022A4 +:101BE200900002E0FE7002C21DEE701A900001E049 +:101BF200FE7006900102E0FF2274022EF582E434A8 +:101C020000F583E0FF22900002E014F09000011240 +:101C1200231FE0FF900001E004F0E0B40005E4B40B +:031C22000101F0CD +:011C2500229C +:101E6200E0FBA3E0FAA3E0F9900040120E2AFF90F3 +:101E72000041020E2A9000417401120E57E92441DA +:101E8200F9E43AFA120E11543F020E8A900040020F +:021E92000E2A16 +:0E22A300900040E4120E9C900041E4020E9C5C +:10219300121E8E04543F121E70B507047F01800285 +:0321A3007F002298 +:0D22B100121E6AB507047F0180027F002223 +:0D22BE00121E71FF121E8EC39F543FFF229F +:081F4C00900371ECF0A3EDF02D +:101F5400121E8E04543F121E706F6014900040EFE6 +:101F6400120E9C900371A3E08F82758300120E9C65 +:011F7400224A +:101E2F00900367EBF0A3EAF0A3E9F0900367121EAB +:101E3F00626F601C121E77900367E0FBA3E0FAA3AA +:101E4F00E0F9121E71F582758300120E2A7F0022AF +:031E5F007F0122DE +:101EC30090036AEBF0A3EAF0A3E9F090036A121E11 +:101ED300626F6003121E7790036AE0FBA3E0FAA32C +:0F1EE300E0F9121E71F582758300120E2AFF229C +:10220000121E715405FFB403081222BE900376EF2C +:01221000F0DD +:0122110022AA +:021FE500C11E1B +:10211600E490028CF090028BF090028AF0C21E22AC +:0B212600E0248DF582E43402F58322F2 +:06239D00A21EE433FF2242 +:0423B30012211622BB +:0423B70012211622B7 +:1020FB00301E031223B790028A122126EFF09002B2 +:0B210B008AE004F0E0B43C02D21E2287 +:0E22860090028B122126E0FF90028BE004F004 +:012294002227 +:0D22CB00120E11F5CF740129F9E43AFA2240 +:072382008FC7AF058FD422C5 +:101D1D0030F805E4F5C7802E30F90575C70180262A +:101D2D0030FA0575C702801E30FB0575C703801696 +:101D3D0030FC0575C704800E30FD0575C70580069E +:091D4D0030FE0375C706AFC72282 +:0323C700AFE22260 +:09234800AFE3EFFEADE2EDFF2270 +:10221200E4F5C7AF051DEF60051222CB80F543CE72 +:02222200102288 +:0C22FC00AF051DEF60051222CB80F5221B +:10223500AF051DEF600AE5CF120E8A1222D080F09D +:012245002276 +:092351008FC7E4F5CE43CE202233 +:102246007401A807088002C333D8FCF5D5E4F5D598 +:012256002265 +:0723890075A41043A302221A +:0723900012238943BC8022E7 +:101F750041746D656C202852290A63353133312D42 +:101F85007573622D6364632D315F305F320A0A0019 +:091F95001B631B5B3F32356C003D +:0B1C6700900363EBF0A3EAF0A3E9F0A8 +:101C7200900363E0FBA3E475F001120ED4A9F0FA1D +:101C8200120E11900366F06013E0B40A057F0D1284 +:101C92002363900366E0FF12236380D47F0D122337 +:061CA200637F0A022363C8 +:09235A007BFF7A1F7995021C67D4 +:10191400900374EDF0900373EFF070097F0D1223C0 +:10192400637F0A80377F1B1223637F5B12236390DC +:101934000374E0FFD39409400312197290037412E4 +:1019440019647F3B122363900373E0FFD39409402F +:10195400031219729003731219647F4812236322CD +:10196400E075F00A84E5F02430FF12236322EF755A +:0A197400F00A842430FF12236322DE +:05000600A298921F22E8 +:10216400759840538FF7438F0175CBFF75CAF3758C +:09217400C834D2CA439812D322E8 +:082363003099FDC2998F992207 +:07236B003098FDAF99C29804 +:012372002248 +:0A2334008FC5E5C430E7FB7F0122EE +:0A233E0043A22012FFC053A2DF22C9 +:0C2308008F1CAF058F1F12233EAF1D225B +:10213100A2AF920AC2AF8F1CAF038F1FAF058F1DD5 +:0921410012233EA20A92AF7F01B5 +:01214A002272 +:081EF20090030EEFF0A3EDF0E8 +:101EFA00A2AF920AC2AFE4FD7F0812230890030E34 +:101F0A00E0F45FFFA3E04FF51D751C0712233EA204 +:051F1A000A92AF7F01F7 +:011F1F00229F +:08237300C2AF43A22002F400F6 +:0300000002173CA8 +:0C173C00787FE4F6D8FD75814F0217831A +:100D1B00E709F608DFFA8046E709F208DFFA803EBA +:100D2B0088828C83E709F0A3DFFA8032E309F608A7 +:100D3B00DFFA8078E309F208DFFA807088828C830F +:100D4B00E309F0A3DFFA806489828A83E0A3F608C3 +:100D5B00DFFA805889828A83E0A3F208DFFA804C9D +:100D6B0080D280FA80C680D4806980F28033801074 +:100D7B0080A680EA809A80A880DA80E280CA8033DD +:100D8B0089828A83ECFAE493A3C8C582C8CCC58355 +:100D9B00CCF0A3C8C582C8CCC583CCDFE9DEE78025 +:100DAB000D89828A83E493A3F608DFF9ECFAA9F0A4 +:100DBB00EDFB2289828A83ECFAE0A3C8C582C8CCFA +:100DCB00C583CCF0A3C8C582C8CCC583CCDFEADE13 +:100DDB00E880DB89828A83E493A3F208DFF980CC75 +:100DEB0088F0EF60010E4E60C388F0ED2402B4046E +:100DFB000050B9F582EB2402B4040050AF23234515 +:060E0B008223900D6B73C1 +:100E1100BB010689828A83E0225002E722BBFE02DF +:090E2100E32289828A83E4932212 +:100E2A00BB010CE58229F582E5833AF583E022507D +:100E3A0006E92582F8E622BBFE06E92582F8E222C7 +:0D0E4A00E58229F582E5833AF583E49322E1 +:100E5700BB010FF8E58229F582E5833AF583E0289F +:100E6700F0225009C58229F8E58226F622BBFE0941 +:100E7700C58229F8E22582F222F8EA2583F583E97B +:030E87009328228B +:100E8A00BB010689828A83F0225002F722BBFE0147 +:020E9A00F32241 +:100E9C00F8BB010DE58229F582E5833AF583E8F08C +:100EAC00225006E92582C8F622BBFE05E92582C838 +:020EBC00F22220 +:100EBE00C5F0F8A3E028F0C5F0F8E58215827002BF +:060ECE001583E038F0225C +:100ED400A3F8E0C5F025F0F0E582158270021583D1 +:060EE400E0C838F0E8222E +:0C0EEA00ECF0A3EDF0A3EEF0A3EFF0227B +:100EF600A8828583F0D083D082120F0D120F0D12B7 +:100F06000F0D120F0DE473E493A3C583C5F0C583DB +:100F1600C8C582C8F0A3C583C5F0C583C8C582C845 +:010F260022A8 +:100F2700D083D082F8E4937012740193700DA3A359 +:100F370093F8740193F5828883E47374029368606D +:060F4700EFA3A3A380DF6D +:060F4D008A838982E4732F +:10073A00E5172411F582E43403F583E005172290C6 +:10074A00030E301103900311E475F001120F5302E6 +:10075A000E11200AE97F2ED20A8018EF540F249036 +:10076A00D43440D4FF300E0BEF24BFB41A00500328 +:10077A002461FFE51860021518051BE51B700205C8 +:10078A001A30110E90030EE475F001120F53EF02A6 +:10079A000E8A021F9E7403D2118003E4C211F51758 +:1007AA0090030E120F6AE4F518F51AF51BE51860A6 +:1007BA00077F2012077D80F57519FFC20BC20AC296 +:1007CA000CC20DC20FC210C212120749FF700D30BF +:1007DA0011057F0012078EAF1BAE1A22B4255FC225 +:1007EA00D5C20E120749FF24D0B40A00501A75F078 +:1007FA000A781830D50508B6FF0106C6A426F620E1 +:10080A00D5047002D20D80D924CFB41A00EF500457 +:10081A00C2E5D20E02098FD20B80C6D20A80C0D29C +:10082A000C80BCD2D580BAD20F80B47F2012077D4B +:10083A00200C077401B5180040F112073AFF12079D +:10084A007D0207B7D212D210809512073AFB12071F +:10085A003AFA12073AF94A4B700679607A0A7BFF2C +:10086A00200C2EE518602A7E008E82758300120EF7 +:10087A002A60060EEE651970F0C2D5EBC0E0EAC038 +:10088A00E0E9C0E0EE1209D6D0E0F9D0E0FAD0E013 +:10089A00FB120E11FF60AAEBC0E0EAC0E0E9C0E07B +:1008AA0012077DD0E02401F9D0E03400FAD0E0FB51 +:1008BA00E5190460DCD519D980877BFF7A0979D2DA +:1008CA00D20C809C791080027908C210C21280086A +:1008DA00D2D5790A8004790AC2D5E519047002F5DD +:1008EA0019E4FAFDFEFF12073AFC7B08200B1312EB +:1008FA00073AFD7B10300A0A12073AFE12073AFF3E +:10090A007B20EC3382D592D55013C3E4300A069F7C +:10091A00FFE49EFEE4200B039DFDE49CFCE4CBF87F +:10092A00C20BEC700CCFCECDCCE824F8F870F38073 +:10093A0017C3EF33FFEE33FEED33FDEC33FCEB333D +:10094A00FB994002FB0FD8E9EB300B05F8D0E0C465 +:10095A0048B20BC0E00AEC4D4E4F78207B0070C2C3 +:10096A00EAB5190040BCC0E01209D8D0F0D0E020A6 +:10097A000B04C4C0E0C4B20BC0F0120766D0F0D5B5 +:10098A00F0EB0207B7120F2708545308CE58082570 +:10099A004C08214208D24F08DA4408DA49083A4397 +:0809AA0008E05508C44608C42A +:1009B2004508C4470A805008292D082D2E08502BBF +:1009C200083123084E200A692A07E948000008482E +:1009D2003F3F3F00790AA2D5200D14300F09B9100C +:1009E200020404B9080104A2D52010025001042017 +:1009F2000C68920CB518005034C0E07F20300D19FD +:100A02007F30A20C7210720F500F120A2FC20CC24A +:100A120010C20FC2127F30800F300F03E9C0E01204 +:100A2200077D300F03D0E0F9D0E0B518CC300F17B6 +:100A32007F30B9100C12077D7F58300E077F788007 +:100A420003B9080312077D300C057F2D02077D7F55 +:100A5200202012F87F2B2010F322920C80CF286ED8 +:100A6200756C6C2900D20B12073A300BF8C20B7866 +:100A72001830D50108F60207E92D504349581207EC +:100A82003A2403B405004001E4900A7B9312076EF6 +:0D0A9200743A12076ED20D7518040208CEDA +:10174800020026E493A3F8E493A34003F68001F291 +:1017580008DFF48029E493A3F85407240CC8C333A2 +:10176800C4540F4420C8834004F456800146F6DF71 +:10177800E4800B0102040810204080901FC5E47E1D +:10178800019360BCA3FF543F30E509541FFEE49366 +:10179800A360010ECF54C025E060A840B8E493A32D +:1017A800FAE493A3F8E493A3C8C582C8CAC583CA58 +:1017B800F0A3C8C582C8CAC583CADFE9DEE780BE10 +:011FE70000F9 +:100F5300F8E0FBA3A3E0F925F0F0E5821582700227 +:070F63001583E0FA38F022CB +:090F6A00EBF0A3EAF0A3E9F02288 +:101F9E00EFB40A07740D121FA9740A309811A8998C +:101FAE00B8130CC2983098FDA899C298B811F630A3 +:071FBE0099FDC299F599227B +:00000001FF Added: firmware/hex_dev/tuxaudio.eep =================================================================== --- firmware/hex_dev/tuxaudio.eep (rev 0) +++ firmware/hex_dev/tuxaudio.eep 2007-10-17 10:28:54 UTC (rev 627) @@ -0,0 +1,2 @@ +:0100000000FF +:00000001FF Added: firmware/hex_dev/tuxaudio.hex =================================================================== --- firmware/hex_dev/tuxaudio.hex (rev 0) +++ firmware/hex_dev/tuxaudio.hex 2007-10-17 10:28:54 UTC (rev 627) @@ -0,0 +1,336 @@ +:1000000019C0B3C0C1C039C0A6C037C036C035C0E2 +:1000100034C033C032C031C030C02FC02EC02DC05C +:10002000C2C02BC02AC029C028C027C026C025C0F6 +:10003000FEC823C0E0E0F1E08FE5819393E0E0307B +:10004000F907D9F711241FBECFEFD4E0DEBFCDBF33 +:1000500011E0A0E0B1E0E0E4F4E102C005900D920F +:10006000A439B107D9F712E0A4E9B1E001C01D92AB +:10007000AA3DB107E1F716D2E2C9C2CFCF93DF9311 +:10008000CDB7DEB721970FB6F894DEBF0FBECDBF58 +:100090008FEA84B987EC85B98FE088B988E087B9A1 +:1000A000198203C089818F5F898389818233D0F36C +:1000B00017B883ED8BB981EE8AB983E284BD89E0FC +:1000C00085BD16BC8AEF87BD18BC109280001092C7 +:1000D0008100109285001092840010928700109287 +:1000E0008600109289001092880010928B00109266 +:1000F0008A001092B6001092B0001092B1001092D7 +:10010000B2001092B3001092B40081E080936E00B0 +:1001100010926F001092700080E880BF10927B00F8 +:1001200010927E0086E080937C0086E880937A00BF +:1001300080E58CBD1DBC8EB589838FE080936900FE +:1001400083E08CBB21960FB6F894DEBF0FBECDBF07 +:10015000DF91CF9108951F920F920FB60F92112445 +:100160000F900FBE0F901F9018951F920F920FB611 +:100170000F9211248F9381E0809397018F910F90BC +:100180000FBE0F901F9018951F920F920FB60F92EF +:1001900011248F9381E0809396018F910F900FBE71 +:1001A0000F901F9018951F920F920FB60F92112467 +:1001B0002F933F934F935F936F937F938F939F936F +:1001C000AF93BF93EF93FF93CF93DF93CDB7DEB79A +:1001D0002197DEBFCDBF80917A00806480937A0042 +:1001E000809100018150809300018823E1F584E033 +:1001F000809300016091780066958091790080FF7E +:1002000060688DE091E0EBD1BE016F5F7F4F83E0CE +:1002100091E0F5D1882359F4898188BD10929D0120 +:100220008091A3018823A9F05F9A559A12C080910A +:100230009D018F5F80939D0180919D018E3148F0DB +:100240008091A301882311F05F9855988EE18093E7 +:100250009D018091B80181508093B801882319F4E1 +:1002600081E08093B7012196F894DEBFCDBFDF9186 +:10027000CF91FF91EF91BF91AF919F918F917F911E +:100280006F915F914F913F912F910F900FBE0F9003 +:100290001F901895CF93DF93CDB7DEB724970FB695 +:1002A000F894DEBF0FBECDBF80EF898396B189B1D0 +:1002B0009F70807D982B9A831E9B02C090629A83C8 +:1002C0008A819BE989278A838091B4018B838091FD +:1002D000B2018C83CE01019669D524960FB6F894AD +:1002E000DEBF0FBECDBFDF91CF910895FC018081AD +:1002F000823589F480919B01882311F010929B0133 +:1003000081818093BA0110928D0281E080938B02EB +:10031000809399010895803D71F4838180933E021A +:10032000828180933D02818180933C0281E08093B1 +:100330009A0110820895833021F481E08093950121 +:100340000895CF0133D5089580918E028039D1F47C +:1003500080919B018823C9F5809199018823A9F593 +:10036000809190028093AC0160918F02609386022D +:1003700020E040E08CECFCD481E080939B018093F2 +:100380008B0221C0823951F480918F02882319F0A9 +:100390005F98559818C05F9A559A15C0873B99F495 +:1003A0008EE180939401F89487EF80938E02809180 +:1003B00090028093910281E0809390026EE872E057 +:1003C00084E086D4789410929E010895109294014E +:1003D000F89480E885B918B81BB8E4E6F0E090819D +:1003E00089EE808388E080936C0082E08BBBE8E636 +:1003F000F0E080818260808383B7817F846083BFE7 +:1004000083B7816083BF7894889583B78E7F83BFDD +:1004100010926C009093640031DE70D562D508951F +:10042000CF93DF93CDB7DEB72C970FB6F894DEBF2E +:100430000FBECDBF80EF9DE1DE011196FC0101965C +:10044000E491ED932DE18C3F9207C1F7F894BE0142 +:100450006F5F7F4F84E03CD4BE016B5F7F4F84E0D1 +:1004600037D4BE01675F7F4F84E032D478948BEC41 +:10047000898340E060E080E04AD18A831B821C824D +:10048000F894BE016F5F7F4F84E022D4789410927D +:1004900095012C960FB6F894DEBF0FBECDBFDF914D +:1004A000CF910895CDEFD4E0DEBFCDBFE7DD83E08F +:1004B00091E069D08DE091E066D09BD712D5789419 +:1004C00083E08093AD018DEA91E010DF1A821982FA +:1004D00020E007C01E9B21E089819A8101969A83C2 +:1004E000898389819A818F5F9F41A0F3222319F02C +:1004F00083E08CBB8DBB789409D5809198018823CB +:1005000029F0109298018DEA91E0F0DE8091990136 +:10051000811160D280919B0181117FD18091B701BF +:10052000882309F11092B70180919401823020F064 +:1005300081508093940101C0ADDE90911701992301 +:1005400091F0519A198203C089818F5F89838981D3 +:100550008F3FD1F7892F815080931701882311F4A1 +:10056000519A01C0519880919E018111EDDE3FD4D6 +:1005700080919501811154DF80919401813009F0BF +:10058000BACF24DFB8CFFC01138214821582168201 +:10059000178286EE80878FEF81870895FC0120E027 +:1005A00030E083818F5F928189239481981711F4C1 +:1005B00021E030E0C9010895FC0120E030E09481A1 +:1005C0008381981711F421E030E0C9010895FC01FE +:1005D00083819481891B9281892399270895FC0145 +:1005E00093819F5F828198238481891739F0938357 +:1005F0000190F081E02DE90FF11D60830895FC0169 +:10060000DB0194818381981719F481E090E00895CB +:10061000892F8F5F9281892384830190F081E02D5F +:10062000E80FF11D80818C9380E090E00895FC013B +:1006300094818381981721F09F5F8281982394830E +:1006400084810190F081E02DE80FF11D80819927D0 +:100650000895FC013381248192818681882309F0E9 +:100660004AC08781883091F487B58E3F18F487B5EA +:100670008E5F01C08FEF818787B5883E18F087B500 +:10068000825001C086EE808789E08783832F821B9A +:100690008923803448F097B58085891760F587B540 +:1006A000815087BD81E00AC0813150F497B58185C2 +:1006B000981708F587B58F5F87BD82E085831BC0DB +:1006C0008581882399F0813039F497B58185981711 +:1006D00050F487B58F5F06C097B58085891718F4E9 +:1006E00087B5815087BD1582178205C08781893003 +:1006F00011F08F5F878386818F5F81708683089575 +:100700008EBD0DB407FEFDCF8EB599270895FF92DB +:100710000F931F93182F062FF42E299883E0F0DFF4 +:10072000812FEEDF802FECDF8F2DEADF80E0E8DF26 +:10073000299A99271F910F91FF900895FF920F9387 +:100740001F93182F062FF42E299889E3D9DF812FC4 +:10075000D7DF802FD5DF8F2DD3DF299A1F910F91FF +:10076000FF9008951F93182F299881E0C9DF812FEA +:10077000C7DF299A1F910895299884E0C1DF299A3B +:100780000895299886E0BCDF299A0895CF93DF93D6 +:1007900080E0E8DFC9E1D1E0F4DF4A816981888146 +:1007A000CDDF239681E0CA33D807B1F7EADF299875 +:1007B00080E6A6DF299ADF91CF910895299885E0F8 +:1007C0009FDF80E09DDF299A99270895EF92FF929D +:1007D0000F931F93182F062FF42EE22EEFDF80FDCC +:1007E000FDCFCFDF299882E08BDF812F89DF802F3B +:1007F00087DF8F2D85DF8E2D83DF299A1F910F9143 +:10080000FF90EF90089510929B0120E040E060E09F +:100810008CECAED2289A299A08950F931F93CF9308 +:10082000DF9380918B02882309F486C000918602B1 +:10083000289A40E060E080E06ADF8F3F09F462C000 +:10084000002309F45FC0801708F45CC091E010E059 +:1008500081E002C01F5F9F5F901741F08F3F11F052 +:100860008E3F09F41F5F8D5FA9F3F5CF299883E0D0 +:1008700047DF80E045DF812F43DF802F880F800F27 +:1008800082503EDFC4EAD1E080E03ADF899381E024 +:10089000CA3AD807C9F7299A8091A401883090F5FF +:1008A0008091A701883070F58091A401882321F4FC +:1008B0008091A501843030F18091A801882321F432 +:1008C0008091A9018430F0F09091A7018091A4015A +:1008D0009817C0F09091A7018091A4019817A9F4EE +:1008E0009091A8018091A501981760F09091A801BE +:1008F0008091A501981749F49091A9018091A601D2 +:10090000891718F010929B0160C083E091E03BDEF4 +:10091000299883E0F5DE8091A401F2DE8091A501A3 +:10092000EFDE8091A601ECDE28988AEF87BD109259 +:100930008B024BC068DF48C0289A3CC080E0E0DEF4 +:100940002091AC01992702C0959587952A95E2F7E9 +:10095000682F83E091E043DE8091A6018F5F809352 +:10096000A6018091A601882391F48091A5018F5F53 +:100970008093A5018091A501882349F48091A40169 +:100980008F5F8093A4018091A401883099F29091A7 +:10099000A4018091A701981769F49091A501809115 +:1009A000A801981739F49091A6018091A901981790 +:1009B00009F4C0CF80919701882331F483E091E05E +:1009C000EDDD882309F4BACF2898DF91CF911F91EC +:1009D0000F9108951F931CBC80E58CBD289A10913F +:1009E0008D021123B1F480918B02882361F014BC35 +:1009F00015BC17BC10926E0083E091E0C4DDC6DE2A +:100A000010928B02B6C0DADE80FDB3C020E041E078 +:100A10006EC0113079F42091BA0140E060E080E0CE +:100A2000D5DE109388021092890210928C021092E7 +:100A30008A029AC0123009F070C080919A0188230E +:100A400009F44EC020E042E060E08CEC91D11092BD +:100A50009A0110928B0210928702E0E0FF27E45C7B +:100A6000FD4F2081409188026091890280918C0223 +:100A7000ADDE809188028F5F80938802882329F4FD +:100A8000809189028F5F80938902E0918702EF5FF6 +:100A9000E0938702E33010F320918A022F5F2093C6 +:100AA0008A028091BA0133279927019628173907BE +:100AB000B9F480913E028093A40180913D0280931D +:100AC000A50180913C028093A60110928C0284E0E3 +:100AD000809389021092880281E080938B0205C086 +:100AE00080918B02882309F444C020E043E060E059 +:100AF0008CEC3ED139C083E091E099DD01DE80913C +:100B000088028F5F8093880281E080938B02299A0C +:100B10002BC081E080938B0272C0133051F520E02E +:100B200044E060E08CEC24D110928B022ADE2998FC +:100B30008FEAE6DD80918C02E3DD80918902E0DDC1 +:100B400080918802DDDD07C083E091E035DD8823F8 +:100B500091F210928B02809197018823A9F3299A30 +:100B600080918B02882329F080918D028F5F809382 +:100B70008D0280918D02843009F047C010928B0263 +:100B800036C083E091E018DD8823F1F429988FEADC +:100B9000B7DD83E091E04BDDB3DD299A80918802D7 +:100BA0008F5F80938802882361F4809189028F5F30 +:100BB00080938902882329F480918C028F5F80932F +:100BC0008C02FCDD80FDFDCF9091A60180918C020E +:100BD000891769F49091A50180918902891739F4E8 +:100BE0009091A40180918802891709F492CF809195 +:100BF0009701882331F280918B02882319F180912B +:100C00008D028F5F80938D021DC08530D9F4B4DDD5 +:100C100010928B0283E284BD89E085BD89EF87BD98 +:100C200081E080936E008091BC008F74816080931E +:100C3000BC001092990120E040E060E08CEC98D07C +:100C400010928D021F9108950F931F93CF93DF93FE +:100C5000EC018091510190915201AEDC882329F082 +:100C600001C0789481E090E013C0F8948E010C5F8D +:100C70001F4FBE018091510190915201C0DC882329 +:100C800081F72196C017D107A1F7789480E090E012 +:100C9000DF91CF911F910F9108958091BB00803C0F +:100CA00050F480919E01882391F48091C402806861 +:100CB0008093C4020895809151019091520187DC84 +:100CC0008B3128F48091C40280688093C402089517 +:100CD0000F931F93CF93DF93282FEB018881803CE4 +:100CE00088F490E00AC0E92FFF27DE01AE0FBF1F96 +:100CF0008C91E257FD4F80839F5F9217A1F720935D +:100D00009E0131C08F3FE1F48091C2029981382F5A +:100D100031503093C2022981891728F42093C202EE +:100D20001092C3020AC0231740F48091C3028F5F60 +:100D30008093C30289818093C2028091C3028A8317 +:100D4000809151019091520142DC8B3160F48E010F +:100D50000C5F1F4F699180915101909152013FDCCE +:100D6000C017D107B9F7DF91CF911F910F91089567 +:100D7000CF93DF93CDB7DEB724970FB6F894DEBFDD +:100D80000FBECDBF89836A834B832C83F894BE0149 +:100D90006F5F7F4F84E09CDF789424960FB6F894C1 +:100DA000DEBF0FBECDBFDF91CF9108951F93CF93CC +:100DB000DF93EC0188818823A1F080914501909117 +:100DC000460105DC8D3068F410E0699180914501A1 +:100DD0009091460104DC1F5F1530B9F780E090E088 +:100DE00002C081E090E0DF91CF911F910895CF93F1 +:100DF000DF938091C40280FD58C08AEF80933A014E +:100E00008091C40282FF0EC0F0D1F8948091C40298 +:100E10008B7F8093C4028091C40281608093C4025E +:100E200078945CC08091C40281FD09C0DED1F89441 +:100E30008091C40281608093C40278944FC08091F5 +:100E4000450190914601B8DB882309F047C0F8942A +:100E50008091C40280648093C4028091C4028D7F1B +:100E60008093C402789484E08093CF02C7ECD2E0F0 +:100E7000BE018091450190914601C1DB882311F0AC +:100E80001092CF02219682E0CC3CD80789F7ADD1F1 +:100E9000F8948091C4028F7B8093C4028091C40235 +:100EA00081608093C402789419C080913A01815086 +:100EB00080933A018F3F91F41092BC008091C4025C +:100EC0008E7F8093C4028091C4028D7F8093C40280 +:100ED0008091C4028B7F8093C40277D2DF91CF913F +:100EE000089573D288E696E076D184E58093C602B1 +:100EF0008091C40282608093C4020895809145016C +:100F00009091460140DB10929E01089580919701D7 +:100F1000882309F459C180910101882309F454C13F +:100F2000109297011092010110927F021092B60167 +:100F30001092B5011092AB011092AA018091990113 +:100F4000882319F480919B018111289880E58CBD3C +:100F50001DBC0DB40EB42A98809196018823E1F34C +:100F6000109296018091B5019091B601892BC1F53F +:100F70008DE091E02CDB813120F082E08093B301A1 +:100F800002C01092B30180918502833051F48091A8 +:100F900002018823D9F08091B30188608093B30166 +:100FA00013C0813099F080910201882379F080E8A4 +:100FB00092E04ADE882351F48091B30188608093E7 +:100FC000B30181E080938502109202018091B30108 +:100FD0008EBD81E090E09093B6018093B5013EC054 +:100FE0008091B5019091B6010197A9F480917F029B +:100FF000813131F482E090E09093B6018093B501A5 +:101000008091B30181FF29C0F8948DE091E00FDB5E +:101010008EBD789423C08091B5019091B60102975E +:10102000B1F480917F02853131F483E090E09093B8 +:10103000B6018093B5018091B30183FF0EC0E091AA +:101040007F02FF27E259FD4F80818EBD07C080914E +:10105000B5019091B601039709F41EBC0DB407FECB +:10106000FDCF80917F028F5F80937F028091AA01E4 +:101070009091AB01892BC9F58EB58093B901809110 +:10108000B90183FF03C081E0809398018091B90189 +:1010900087FF02C082E201C081E18093BB0181E051 +:1010A00090E09093AB018093AA01809199018823ED +:1010B00009F052CF80919B01882309F04DCF809198 +:1010C000B90181FD0FC080911801882339F483E0B4 +:1010D00091E0BFDA81E0809318013ECF83E091E098 +:1010E00052DA3ACF1092180137CF8091AA0190912D +:1010F000AB010197F1F48091B90181FF08C08091A3 +:101100009B01882321F46EB583E091E068DA209199 +:101110007F028091BB013327992701962817390751 +:1011200009F01ACF82E090E09093AB018093AA017E +:1011300013CF8091AA019091AB01029709F00CCFD7 +:101140008091B90183FF29C08091B90187FF07C051 +:10115000E0917F02FF278EB5E757FE4F06C0E09172 +:101160007F02FF278EB5E656FE4F808320917F02D7 +:101170008091BB0133279927069628173907A9F4D0 +:101180008091B101823021F08091B101833069F406 +:101190008091B1018093850208C0809185028250C0 +:1011A000823018F481E08093020120917F028091C7 +:1011B000BB013327992706962817390709F0CCCEAB +:1011C0002A9A81E08093010108951092B90080E28B +:1011D0008093B80008959093A00180939F01089593 +:1011E0009093A2018093A1010895CF93DF93CDB78F +:1011F000DEB721970FB6F894DEBF0FBECDBF1982C0 +:1012000003C089818F5F898389818431D0F3809184 +:10121000C40280FD03C085EE8093BC0021960FB60A +:10122000F894DEBF0FBECDBFDF91CF9108951F921E +:101230000F920FB60F9211242F933F934F935F930A +:101240006F937F938F939F93AF93BF93EF93FF938E +:101250008091C40281608093C402E091B900E69558 +:10126000E695E695FF27EE0FFF1FED5AFE4F019022 +:10127000F081E02D09941092C5028091C6020EC043 +:101280009091C5028091CF02981760F4E92FFF2753 +:10129000E953FD4F80819F5F9093C5028093BB000F +:1012A00085EC76C085ED8093BC008091C4028E7F72 +:1012B0008093C4028091C402826073C001C000C0E8 +:1012C0008091C40284608093C40265C059C080913B +:1012D000D1029091BB00E82FFF27EE52FD4F908383 +:1012E0008F5F8093D1022091D10233278091D00269 +:1012F000992701972817390724F127C001C000C09A +:101300001092D1028091C402877F8093C4028091A1 +:10131000C4028F778093C40214C08091D10290914F +:10132000BB00E82FFF27EE52FD4F90838F5F809325 +:10133000D1028091C40287FFB0DC8091C40287FF94 +:1013400004C08091BC00806423C08091BC008F7B6E +:101350001FC08091C40288608093C40211C0809134 +:10136000C40283FD0DC0E0919F01F091A00162EDE8 +:1013700072E08091D102099503C002C001C000C093 +:101380008091C4028E7F8093C4028091BC00856CE2 +:101390008093BC0009C085ED8093BC008091C4029D +:1013A0008E7F8093C40200C0FF91EF91BF91AF91F7 +:1013B0009F918F917F916F915F914F913F912F916D +:1013C0000F900FBE0F901F9018951092B90080E2F9 +:1013D0008093B80085E18093BA0085EC8093BC00CF +:1013E000089581E0E3EAF1E0A0E0B0E0182E0ED02D +:1013F000089581E0E3EAF1E0A0E0B0E0182E01D02A +:10140000089509D001921A94E1F7089501900BD044 +:101410001A94E1F70895F999FECFB2BDA1BDF89AEB +:10142000119600B40895F999FECFB2BDA1BD00BCDC +:1014300011960FB6F894FA9AF99A0FBE0895FFCF55 +:10144000040101BC017F000000000000003F023FDA +:101450000000000000000014010000000100000274 +:101460000000030000040000050000060000070063 +:101470000007800007A00007C000FA92020F0000DA +:1014800000000000003B01A2021F0000000000005D +:10149000004701CB093B093B09400960094009604D +:1014A00009660973095F0967095E097E097F09807A +:1014B0000980098D09A9098D09A909AF09BD09BECE +:1014C00009BF09C009C009CB09CB09CB09CB09CB9E +:0414D00009D4090032 +:0C1DF000C8010301C9F20100CA00000094 +:00000001FF Added: firmware/hex_dev/tuxcore.eep =================================================================== --- firmware/hex_dev/tuxcore.eep (rev 0) +++ firmware/hex_dev/tuxcore.eep 2007-10-17 10:28:54 UTC (rev 627) @@ -0,0 +1,16 @@ +:100000001831331A00144102000012900400000A53 +:100010001B350000003E020000FF00000000000051 +:100020009A021E00FF000000000000000000000017 +:100030009A021E00FF000000000000000000000007 +:100040009A021E00FF0000000000000000000000F7 +:1000500041020000009A0432000090030000FF03F8 +:10006000900200000041020000FF00000000000AB2 +:1000700038900100FF0000000000000000000000B8 +:1000800033900500FF0000000000000000000000A9 +:100090001A000000FF000000000000000000000047 +:1000A0001B000000FF000000000000000000000531 +:1000B000900600000541020000FF00000000000A59 +:1000C000900700000A410200000A80020500FF0AB2 +:1000D000900800000A410200000080020500FF01B4 +:0200E00001001D +:00000001FF Added: firmware/hex_dev/tuxcore.hex =================================================================== --- firmware/hex_dev/tuxcore.hex (rev 0) +++ firmware/hex_dev/tuxcore.hex 2007-10-17 10:28:54 UTC (rev 627) @@ -0,0 +1,423 @@ +:1000000019C064C719C489C342C443C32EC02EC0DB +:100010002CC02BC02AC029C028C027C0ACC725C00F +:1000200024C023C022C021C020C02FC21EC01DC0BA +:100030003CC61BC011241FBECFEFD4E0DEBFCDBF36 +:1000400011E0A0E0B1E0E0EFF9E102C005900D920F +:10005000A835B107D9F712E0A8E5B1E001C01D92BB +:10006000AC30B107E1F73BD0C2CCCACF1F920F92A0 +:100070000FB60F9211242F933F938F9380915E01BF +:100080008F5F80935E0121E030E03093590120932F +:100090005801893199F410925E0130935B012093ED +:1000A0005A0180915F018F5F80935F018A3031F444 +:1000B00010925F0130935D0120935C018F913F911D +:1000C0002F910F900FBE0F901F901895269A87B111 +:1000D0008C6087B92F9A87E08BBB78940895CFEF17 +:1000E000D4E0DEBFCDBF6CD281D882E08093B00077 +:1000F00096E09093B1001092B2009DE79093B30008 +:1001000080937000E3DFF0D186DA90D582D88091B9 +:10011000580190915901892B19F1109259011092AF +:10012000580112D4809186018111E3D18091DC01C4 +:10013000882329F08091DC0181508093DC0180913B +:100140009101882319F081508093910184D480918A +:100150000D01882321F088B1837F88B901C070D454 +:1001600080915A0190915B01892B81F010925B0183 +:1001700010925A0191E090938F018091010288239F +:1001800029F08150809301029093000280915C01DC +:1001900090915D01892B21F010925D0110925C011C +:1001A00080918F01882309F407C180910B01909100 +:1001B0000C01892B09F000C110928F01E09115010B +:1001C000F091160193818481981709F0F5C081E0C0 +:1001D00080936B0161ECCF0139D6609176018091FB +:1001E00015019091160132D6609177018091150129 +:1001F000909116012BD66091780180911501909114 +:10020000160124D660EC80911501909116011ED63E +:1002100063B1809115019091160118D666B1809155 +:1002200015019091160112D669B180911501909136 +:1002300016010CD663EC809115019091160106D63B +:10024000609187018091150190911601FFD5609111 +:1002500088018091150190911601F8D560918A016D +:100260008091150190911601F1D564EC80911501F2 +:1002700090911601EBD560918C01809115019091C0 +:100280001601E4D5609180018091150190911601CD +:10029000DDD560E08091150190911601D7D5809150 +:1002A000850180FF1EC08E7F8093850162EC809166 +:1002B000150190911601CAD560917A0180911501BE +:1002C00090911601C3D560917901809115019091AB +:1002D0001601BCD560917B018091150190911601AA +:1002E000B5D58091850181FF1EC08D7F80938501EA +:1002F00067EC8091150190911601A8D560917D0160 +:100300008091150190911601A1D560917C01809199 +:100310001501909116019AD560917E018091150189 +:100320009091160193D5809184018823F1F081503A +:100330008093840165EC809115019091160186D51A +:1003400060917F0180911501909116017FD5609198 +:100350008401809115019091160178D560917F01FB +:10036000809115019091160171D580918E0188239D +:10037000E1F0815080938E016FEF80911501909193 +:10038000160164D560918E0180911501909116013E +:100390005DD560E0809115019091160157D560E020 +:1003A000809115019091160151D58091860181604F +:1003B0008093860110926B0111D48091700181119C +:1003C000ACD81CDA80910B0190910C01029709F0D6 +:1003D0009ECE80910102882309F099CEF894109264 +:1003E00068001DBA10927A0080916C01837F80931F +:1003F0006C0101D777D00FD1ECD170D1B5D19091EC +:10040000640089EE8093640080E280936B0081E059 +:100410008BBB8091680081608093680083B7817F87 +:10042000846083BF83B7816083BF7894889583B7E6 +:100430008E7F83BF90936400F9D3C2D047DE54D03F +:1004400083E090E090930C0180930B0182E0809315 +:1004500001025DCE909361018093600108958FE861 +:1004600080937A00089510927A00089580937C001A +:10047000EAE7F0E08081806480830895209178002D +:10048000822F20917900922F08951F920F920FB61C +:100490000F9211242F933F934F935F936F937F930A +:1004A0008F939F93AF93BF93EF93FF93E09160017E +:1004B000F09161010995FF91EF91BF91AF919F91EB +:1004C0008F917F916F915F914F913F912F910F90FD +:1004D0000FBE0F901F9018958091860182608093C7 +:1004E00086010895C0DF08958CE692E0B3DFB7DFA0 +:1004F000089580916201882339F4809186018E7F6E +:100500008093860186E02EC0813099F5B7DF9C018B +:1005100088B1817080937B012932310528F440999C +:100520000BC0409A389A08C083E0283E380720F074 +:10053000409B02C0409838982093790130937A010B +:1005400080918501816080938501809186018D7FF6 +:100550008093860180918101882319F081E0809346 +:10056000630187E083DF809162018F5F8093620186 +:100570000895823021F580918101882319F081E06E +:10058000809363017BDF80937C0190937D01809158 +:100590006301882321F081E080937E0102C01092E4 +:1005A0007E011092630180918501826080938501B4 +:1005B000809186018D7F809386011092620108955B +:1005C0003998419A8AB18F738AB98BB1806C8BB993 +:1005D00084B1877E84B985B1886185B953985B9A67 +:1005E00088E180936B00E8E6F0E0808181608083A1 +:1005F00082E080936C0080818260808380E88093B9 +:100600006D00808184608083E9E6F0E0808188600D +:100610008083E99A08954198399A8BB18F738BB989 +:100620008AB1806C8AB985B1877E85B984B18861C9 +:1006300084B95B98539A0895809181018D7F80934E +:1006400081018BB18C7F8BB908959091810192606B +:100650009093810180938701109265015998589A6F +:1006600008954E9B04C04F9B02C082E003C04F9987 +:1006700003C081E0EADF089582E080938701089556 +:100680004F9B03C081E0E1DF089582E08093870102 +:1006900008951F920F920FB60F9211248F934F99C6 +:1006A00004C081E080930D0102C010920D01809181 +:1006B0008701882369F0815080938701882341F462 +:1006C0008BB18C7F8BB95898599A84E080936501DF +:1006D0008F910F900FBE0F901F9018958091810100 +:1006E0008D7F809381018BB18C7F8BB90895909120 +:1006F000810192609093810180938801109266013C +:100700005898599A08951C9902C081E0F0DF089525 +:100710001B9902C081E0EBDF08951F920F920FB684 +:100720000F9211248F939F9383B199278095909571 +:1007300088719070892B89F080918801882369F0F5 +:10074000815080938801882341F48BB18C7F8BB9D1 +:100750005998589A88E0809366019F918F910F90E5 +:100760000FBE0F901F901895809181018B7F809311 +:10077000810180918B018E7F80938B015C982898FA +:1007800008959091810194609093810180938A01F2 +:1007900060930001109267015C9880918B018160E9 +:1007A00080938B0108958FEF8093890165E082E04B +:1007B000E8DF089580918001882319F465E081E0E5 +:1007C000E0DF089580918001813011F465E0D9DF88 +:1007D0000895809181018E7F8093810180918B01AA +:1007E000897F80938B0185B1897F85B90895909128 +:1007F00081019160909381011092690180938C0135 +:100800006093010180918B018B7F826080938B01CB +:1008100008959091810191609093810191E090936E +:10082000690180938C016093010180918B018D7F20 +:10083000846080938B0108951F920F920FB60F92E0 +:1008400011248F939F9380918C018823C9F081504C +:1008500080938C018823A1F490918B01997F9093D0 +:100860008B0185B1897F85B98AE080936801809189 +:100870006901882311F4946001C0926090938B0108 +:100880009F918F910F900FBE0F901F9018951F9200 +:100890000F920FB60F9211242F933F9... [truncated message content] |
From: Paul_R <c2m...@c2...> - 2007-10-17 09:21:47
|
Author: Paul_R Date: 2007-10-17 11:21:48 +0200 (Wed, 17 Oct 2007) New Revision: 626 Modified: api/python/trunk/tuxapi_class.py api/python/trunk/tuxapi_const.py Log: * Added the flash_status function in the tux.status class Modified: api/python/trunk/tuxapi_class.py =================================================================== --- api/python/trunk/tuxapi_class.py 2007-10-17 09:20:28 UTC (rev 625) +++ api/python/trunk/tuxapi_class.py 2007-10-17 09:21:48 UTC (rev 626) @@ -2527,6 +2527,7 @@ Functions list for the users: tux.status.charger_state + tux.status.flash_status tux.status.eyes_closed tux.status.eyes_counter tux.status.eyes_motor @@ -3281,6 +3282,35 @@ return 0 #-------------------------------------------------------------------------- + # Get the last state of sound status + #-------------------------------------------------------------------------- + def flash_status(self): + """ + Get the last sound flash status + + Return a tupple with the audio flash status: + (play state, record state, sound number) + play state : Return the sound number or 0 if no sound is played + record state : Return the recording state + sound number : Return the track which is recorded. + + Example: + >>> (play_state, record_state, sound_number) = tux.status.flash_status() + + """ + if not self.parent.daemon.connected: + return 0 + frame = self.get(0x26) + try: + if len(frame) > 0: + return (ord(frame[5]), ord(frame[6]), ord(frame[7])) + else: + return 0 + except: + return 0 + + + #-------------------------------------------------------------------------- # Get the last state of eyes position counter status #-------------------------------------------------------------------------- def get_eyes_position_counter(self): Modified: api/python/trunk/tuxapi_const.py =================================================================== --- api/python/trunk/tuxapi_const.py 2007-10-17 09:20:28 UTC (rev 625) +++ api/python/trunk/tuxapi_const.py 2007-10-17 09:21:48 UTC (rev 626) @@ -157,6 +157,7 @@ DATAS_STATUS_SOUND_COUNT = 0x23 DATAS_STATUS_PONG = 0x24 DATAS_STATUS_BATTERY = 0x25 +DATAS_STATUS_AUDIO = 0x26 STATUS_WINGS_MOTOR_BACKWARD = 0x01 STATUS_SPIN_MOTOR_BACKWARD = 0x02 |
From: Paul_R <c2m...@c2...> - 2007-10-17 09:20:28
|
Author: Paul_R Date: 2007-10-17 11:20:28 +0200 (Wed, 17 Oct 2007) New Revision: 625 Modified: daemon/trunk/libs/USBDaemon_command_tux.c daemon/trunk/libs/USBDaemon_status_table.c daemon/trunk/libs/USBDaemon_status_table.h Log: * Added the flash memory status Modified: daemon/trunk/libs/USBDaemon_command_tux.c =================================================================== --- daemon/trunk/libs/USBDaemon_command_tux.c 2007-10-17 09:12:57 UTC (rev 624) +++ daemon/trunk/libs/USBDaemon_command_tux.c 2007-10-17 09:20:28 UTC (rev 625) @@ -616,6 +616,11 @@ result[2] = battery.level % 256; result[3] = battery.status; break; + case DATA_STATUS_AUDIO: + result[1] = audio.play; + result[2] = audio.record; + result[3] = audio.status; + break; case DATA_STATUS_EYES_POSITION_COUNTER: result[1] = position1.eyes_position.Byte; break; Modified: daemon/trunk/libs/USBDaemon_status_table.c =================================================================== --- daemon/trunk/libs/USBDaemon_status_table.c 2007-10-17 09:12:57 UTC (rev 624) +++ daemon/trunk/libs/USBDaemon_status_table.c 2007-10-17 09:20:28 UTC (rev 625) @@ -253,6 +253,27 @@ tcp_server_send_raw(tcp_frame); } +static void audio_event(int play, int record, int status) +{ + tcp_frame_t tcp_frame; + + tcp_frame_zero(&tcp_frame); + + tcp_frame[0] = SOURCE_TUX; + tcp_frame[1] = SS_DEFAULT; + tcp_frame[2] = DATA_TP_RSP; + tcp_frame[3] = SUBDATA_TP_STATUS; + + tcp_frame[4] = DATA_STATUS_AUDIO; + + + tcp_frame[5] = play; + tcp_frame[6] = record; + tcp_frame[7] = status; + tcp_server_send_raw(tcp_frame); +} + + static void pong_event(unsigned char pong_number, unsigned char pong_received) { tcp_frame_t tcp_frame; @@ -595,6 +616,21 @@ } break; + case STATUS_AUDIO_CMD: + { + int play; + int record; + int status; + play = new_status[1]; + record = new_status[2]; + status = new_status[3]; + audio.play = play; + audio.record = record; + audio.status = status; + audio_event(play, record, status); + } + break; + case STATUS_POSITION1_CMD: if (position1.eyes_position.Byte != new_status[1] || position1.mouth_position.Byte != new_status[2] Modified: daemon/trunk/libs/USBDaemon_status_table.h =================================================================== --- daemon/trunk/libs/USBDaemon_status_table.h 2007-10-17 09:12:57 UTC (rev 624) +++ daemon/trunk/libs/USBDaemon_status_table.h 2007-10-17 09:20:28 UTC (rev 625) @@ -176,6 +176,7 @@ #define DATA_STATUS_SOUND_COUNT 0x23 #define DATA_STATUS_PONG 0x24 #define DATA_STATUS_BATTERY 0x25 +#define DATA_STATUS_AUDIO 0x26 /* tux connection commands available on the usb dongle */ typedef enum @@ -250,6 +251,13 @@ } battery; struct { + int play; + int record; + int status; +} audio; + +struct +{ _PORT_BYTE_ eyes_position; _PORT_BYTE_ mouth_position; _PORT_BYTE_ wings_position; |
From: Paul_R <c2m...@c2...> - 2007-10-17 09:12:56
|
Author: Paul_R Date: 2007-10-17 11:12:57 +0200 (Wed, 17 Oct 2007) New Revision: 624 Modified: firmware/tuxdefs/commands.h Log: * Oups I forgot to update command.h in my previous commit... Modified: firmware/tuxdefs/commands.h =================================================================== --- firmware/tuxdefs/commands.h 2007-10-17 09:05:07 UTC (rev 623) +++ firmware/tuxdefs/commands.h 2007-10-17 09:12:57 UTC (rev 624) @@ -328,6 +328,16 @@ /* 1st parameter: battery level high byte */ /* 2nd parameter: battery level low byte */ /* 3rd parameter: battery measure status : 0 - motors off; 1 - motors on*/ + +#define STATUS_AUDIO_CMD 0xCC +/* 1st parameter: The number of the played sound. If no sound played, 0 */ +/* 2nd parameter: Programming steps : + * 0 : no programming + * 1 : Flash erased + * 2 : TOC + * 3 : Sounds track */ +/* 3rd parameter: The track number which is programming*/ + /* * Special commands */ |
From: Paul_R <c2m...@c2...> - 2007-10-17 09:05:07
|
Author: Paul_R Date: 2007-10-17 11:05:07 +0200 (Wed, 17 Oct 2007) New Revision: 623 Modified: firmware/tuxaudio/trunk/PC_communication.c firmware/tuxaudio/trunk/communication.c firmware/tuxaudio/trunk/communication.h firmware/tuxaudio/trunk/flash.c firmware/tuxaudio/trunk/main.c Log: * Added some status when the flash memory is used * Added some protections when a play or write command is received : An write command has the highest priority. Modified: firmware/tuxaudio/trunk/PC_communication.c =================================================================== --- firmware/tuxaudio/trunk/PC_communication.c 2007-10-17 08:33:59 UTC (rev 622) +++ firmware/tuxaudio/trunk/PC_communication.c 2007-10-17 09:05:07 UTC (rev 623) @@ -66,8 +66,6 @@ || (rf_data_sent_ack == RF_DATA_SENT_DROPPED)) { spi_headerb |= 0x08; /* resend the previous status if nacked */ - cli(); - sei(); } else if (rf_data_sent_ack != RF_DATA_SENT_BUSY) /* wait the end of transmission */ if (!popStatus(spi_commandTX)) /* fetch the next status */ @@ -82,7 +80,9 @@ spi_slave = PUT_COMMAND; // Next state if (spi_headerb & 0x02) { + cli(); SPDR = pullFifo(&ADCFifo); // Get data from FIFO + sei(); } else SPDR = 0x00; // No data to transmit Modified: firmware/tuxaudio/trunk/communication.c =================================================================== --- firmware/tuxaudio/trunk/communication.c 2007-10-17 08:33:59 UTC (rev 622) +++ firmware/tuxaudio/trunk/communication.c 2007-10-17 09:05:07 UTC (rev 623) @@ -79,6 +79,20 @@ , *statusFifo = &_statusBuf; + +void send_status(uint8_t status ,uint8_t byte1 ,uint8_t byte2 ,uint8_t byte3) +{ + uint8_t buf[4]; + buf[0] = status; + buf[1] = byte1; + buf[2] = byte2; + buf[3] = byte3; + cli(); + i2cSlaveReceiveService(4, buf); + sei(); +} + + /* * Initializes (clear) the communication buffers */ Modified: firmware/tuxaudio/trunk/communication.h =================================================================== --- firmware/tuxaudio/trunk/communication.h 2007-10-17 08:33:59 UTC (rev 622) +++ firmware/tuxaudio/trunk/communication.h 2007-10-17 09:05:07 UTC (rev 623) @@ -46,6 +46,7 @@ /* From i2c to RF */ void acceptData(void); void i2cSlaveReceiveService(uint8_t receiveDataLength, uint8_t * receiveData); +void send_status(uint8_t status ,uint8_t byte1 ,uint8_t byte2 ,uint8_t byte3); uint8_t popStatus(uint8_t * command); /* XXX move to a global definition file */ Modified: firmware/tuxaudio/trunk/flash.c =================================================================== --- firmware/tuxaudio/trunk/flash.c 2007-10-17 08:33:59 UTC (rev 622) +++ firmware/tuxaudio/trunk/flash.c 2007-10-17 09:05:07 UTC (rev 623) @@ -22,6 +22,7 @@ #include <avr/io.h> #include <avr/interrupt.h> #include "varis.h" +#include "communication.h" #include "spi.h" #include "i2c.h" #include "flash.h" @@ -78,7 +79,10 @@ erasingFlash(); else if (!(read_status() & BUSY)) + { + send_status(STATUS_AUDIO_CMD, 0, 1, 0); f_state ++; + } } else if (f_state == FIRST_PROG_STATE) { @@ -88,12 +92,20 @@ else if (f_state == PROG_TOC_STATE) { if (TOCRX) + { + send_status(STATUS_AUDIO_CMD, 0, 2, 0); programmingToc(); + } + if (flash_state) + { + send_status(STATUS_AUDIO_CMD, 0, 3, 0); f_state ++; + } } else if (f_state == INIT_SOUND_PROG_STATE) { + send_status(STATUS_AUDIO_CMD, 0, 4, 0); initSoundProgramming(); if (flash_state) f_state ++; @@ -108,6 +120,7 @@ else if (f_state == END_STATE) { endProgramming(); + send_status(STATUS_AUDIO_CMD, 0, 0, 0); f_state = 0; } } @@ -302,6 +315,7 @@ static void stopPlaying(void) { flashPlay = 0; + send_status(STATUS_AUDIO_CMD, 0, 0, 0); PORTB |= 0x01; // Set the HOLD signal PORTB |= 0x02; // Chip Deselect } Modified: firmware/tuxaudio/trunk/main.c =================================================================== --- firmware/tuxaudio/trunk/main.c 2007-10-17 08:33:59 UTC (rev 622) +++ firmware/tuxaudio/trunk/main.c 2007-10-17 09:05:07 UTC (rev 623) @@ -161,11 +161,12 @@ /* audioBuf[2] : mic sound intensity */ { /* postpone the command if a sound is already playing */ - if (flashPlay) + if (flashPlay || programmingFlash) return; audioLevel = audioBuf[2]; //playingAudio(audioBuf[1]); /* start playing the sound */ soundNum = audioBuf[1]; + send_status(STATUS_AUDIO_CMD, audioBuf[1], 0, 0); flashPlay = 1; flash_state = 1; } @@ -199,6 +200,8 @@ { if (command[0] == STORE_SOUND_CMD) { + if (flashPlay) + flashPlay = 0; /* param: command[1] : number of sounds */ numSound = command[1]; f_state =0; /* First programming state */ @@ -332,11 +335,13 @@ DDRD &= ~0x02; } } - sendCommands(); /* Send commands on I2C */ - if (audioBufIdx) audioIntParser(); + sendCommands(); /* Send commands on I2C */ + + + /* Send information to the computer. */ if (info_flg) send_info(); @@ -344,7 +349,8 @@ /* Sleep mode */ if (pre_sleep_delay == 1) sleep(); - } + + } } // External Interrupt 0 service routine PD2 |
From: Paul_R <c2m...@c2...> - 2007-10-17 08:34:00
|
Author: Paul_R Date: 2007-10-17 10:33:59 +0200 (Wed, 17 Oct 2007) New Revision: 622 Modified: firmware/tuxaudio/trunk/flash.c Log: * Fix a little bug in the while loop of the playingSound function. Modified: firmware/tuxaudio/trunk/flash.c =================================================================== --- firmware/tuxaudio/trunk/flash.c 2007-10-16 15:53:29 UTC (rev 621) +++ firmware/tuxaudio/trunk/flash.c 2007-10-17 08:33:59 UTC (rev 622) @@ -261,7 +261,7 @@ { uint8_t sound; HOLD_OFF; - while (spi_start && !isFifoFull(&PWMFifo)) + while (!spi_start && !isFifoFull(&PWMFifo)) { sound = spiSend(0x00); // Wait response sound = sound >> audioLevel; |
From: jaguarondi <c2m...@c2...> - 2007-10-16 15:53:32
|
Author: jaguarondi Date: 2007-10-16 17:53:29 +0200 (Tue, 16 Oct 2007) New Revision: 621 Modified: firmware/fuxrf/trunk/device.c firmware/fuxrf/trunk/prot.c firmware/tuxrf/trunk/prot.c Log: * Increased the number of attempts to get a command through the RF, otherwise it fails at initialization. This needs some debugging. Modified: firmware/fuxrf/trunk/device.c =================================================================== --- firmware/fuxrf/trunk/device.c 2007-10-16 15:48:28 UTC (rev 620) +++ firmware/fuxrf/trunk/device.c 2007-10-16 15:53:29 UTC (rev 621) @@ -11,11 +11,20 @@ #include "version.h" /* + * Configuration + */ +/* Bootloader can be included with the program. */ +#define BOOTLOADER 1 +/* Include version numbers. */ +#define VERSIONING 1 + +/* * Version number */ #define CPU_NUMBER FUXRF_CPU_NUM /* sound CPU */ +#if (VERSIONING) /* XXX Add the linker script to have fixed version positions once the project will compile with latest gcc under linux. */ const author_t author __attribute__ ((section(".version"))) = { @@ -29,10 +38,8 @@ { VERSION_CMD, CPU_VER_JOIN(CPU_NUMBER, VER_MAJOR), VER_MINOR, VER_UPDATE, }; +#endif -/* Bootloader can be included with the program */ -#define BOOTLOADER 1 - #if (BOOTLOADER) #include "bootloader.h" #endif Modified: firmware/fuxrf/trunk/prot.c =================================================================== --- firmware/fuxrf/trunk/prot.c 2007-10-16 15:48:28 UTC (rev 620) +++ firmware/fuxrf/trunk/prot.c 2007-10-16 15:53:29 UTC (rev 621) @@ -200,7 +200,7 @@ *(pbuffer_tx + 23 + i) = commandBuffer[i]; *(pbuffer_tx + 17) |= 0x08; // Update header commandCmpt++; - if (commandCmpt == 25) + if (commandCmpt == 255) commandStatus = 0x03; // Command fail } else Modified: firmware/tuxrf/trunk/prot.c =================================================================== --- firmware/tuxrf/trunk/prot.c 2007-10-16 15:48:28 UTC (rev 620) +++ firmware/tuxrf/trunk/prot.c 2007-10-16 15:53:29 UTC (rev 621) @@ -98,7 +98,7 @@ if (*(prf_buffer_rx + 1) & 0x20) // Go out sleep { eeprom_write_byte(&ee_sleepMode, 0xFF); // Cancel the sleep mode - DDRD &= ~0x40; // Configure PORTD.6 as output + DDRD &= ~0x40; // Configure PORTD.6 as output XXX sounds like bugs here PORTD |= 0x40; // Send signal to wake up over CPU _delay_ms(300); // Wait 300 msec PORTD &= ~0x40; // Stop sending signal of wake up @@ -269,11 +269,15 @@ } commandBuffer[3] = 0x01; // RF ACK } + commandBuffer[3] = commandCmpt; /* XXX DEBUG add the number of attempts + before the command gets through */ for (i = 0; i < 4; i++) // Copy command into the frame *(pbuffer_tx + 23 + i) = commandBuffer[i]; *(pbuffer_tx + 17) |= 0x08; // Update header commandCmpt++; - if (commandCmpt == 25) + if (commandCmpt == 255) /* XXX changed to 255 otherwise this fails too + quickly when initializing, need some + debugging */ commandStatus = 0x03; // Command fail } else |
From: jaguarondi <c2m...@c2...> - 2007-10-16 15:48:30
|
Author: jaguarondi Date: 2007-10-16 17:48:28 +0200 (Tue, 16 Oct 2007) New Revision: 620 Modified: firmware/fuxusb/trunk/config.h firmware/fuxusb/trunk/main.c firmware/fuxusb/trunk/modules/spi/spi_task.c firmware/fuxusb/trunk/modules/usb/usb_task.c Log: * Updated the debugging messages, added SPI_DEBUG. Modified: firmware/fuxusb/trunk/config.h =================================================================== --- firmware/fuxusb/trunk/config.h 2007-10-16 15:32:53 UTC (rev 619) +++ firmware/fuxusb/trunk/config.h 2007-10-16 15:48:28 UTC (rev 620) @@ -34,6 +34,7 @@ //#define USB_TASK_DEBUG //#define BOOTLOAD_DEBUG //#define USB_CMD_DEBUG +//#define SPI_DEBUG #define VERBOSE 0 #define DEBUG_1 P3_6 #define DEBUG_2 P4_0 Modified: firmware/fuxusb/trunk/main.c =================================================================== --- firmware/fuxusb/trunk/main.c 2007-10-16 15:32:53 UTC (rev 619) +++ firmware/fuxusb/trunk/main.c 2007-10-16 15:48:28 UTC (rev 620) @@ -68,7 +68,7 @@ #ifdef MAIN_DEBUG uart_init(); - printf("= TUX started ==\n"); + printf("\n\n= TUX started ==\n"); #endif while (1) usb_task(); Modified: firmware/fuxusb/trunk/modules/spi/spi_task.c =================================================================== --- firmware/fuxusb/trunk/modules/spi/spi_task.c 2007-10-16 15:32:53 UTC (rev 619) +++ firmware/fuxusb/trunk/modules/spi/spi_task.c 2007-10-16 15:48:28 UTC (rev 620) @@ -136,7 +136,8 @@ * return: none *---------------------------------------------------------------------------- * PURPOSE: -* Interrupt manages the DREADY Signal From RF Module +* This interrupt manages the READY signal from the rf module. +* Configured as falling edge. *---------------------------------------------------------------------------- * EXAMPLE: *---------------------------------------------------------------------------- @@ -145,11 +146,10 @@ * REQUIREMENTS: *****************************************************************************/ -void it_INT0(void) - interrupt IRQ_INT0 - { - spi_ready = 1; - } +void it_INT0(void) interrupt IRQ_INT0 +{ + spi_ready = 1; +} /*F************************************************************************** * NAME: spi_SendFrame @@ -167,7 +167,7 @@ *---------------------------------------------------------------------------- * REQUIREMENTS: *****************************************************************************/ - unsigned char spi_Send_InitFrame(Uchar * Data, unsigned char Length) +unsigned char spi_Send_InitFrame(Uchar * Data, unsigned char Length) { unsigned char i; unsigned long TimeOut = 100000, Delay = 100000; @@ -180,12 +180,18 @@ //-------------------------------------------------------------------------- // Wait the START Event //-------------------------------------------------------------------------- +#ifdef SPI_DEBUG + printf ("SPI: Init frame, waiting for the start signal.\n"); +#endif while (!SPI_START) // Wait start { if (!TimeOut) return 0; TimeOut--; } +#ifdef SPI_DEBUG + printf ("SPI: Transfer data:"); +#endif //-------------------------------------------------------------------------- // Transfer Data //-------------------------------------------------------------------------- @@ -197,9 +203,15 @@ spi_ready = 0; SPDAT = *Data; +#ifdef SPI_DEBUG + printf (" %Bx", *Data); +#endif while (!(SPSTA == 0x80)) ; // Wait SPI response Data++; } SPI_CSn = 1; // Chip select +#ifdef SPI_DEBUG + printf ("\nSPI: Transfer done.\n"); +#endif return 1; } Modified: firmware/fuxusb/trunk/modules/usb/usb_task.c =================================================================== --- firmware/fuxusb/trunk/modules/usb/usb_task.c 2007-10-16 15:32:53 UTC (rev 619) +++ firmware/fuxusb/trunk/modules/usb/usb_task.c 2007-10-16 15:48:28 UTC (rev 620) @@ -1041,7 +1041,7 @@ else if (RF_Connection_Status == RF_TO_CONNECT) { #ifdef USB_CMD_DEBUG - printf("Status RF_TO_CONNECT"); + printf("USB: Connect RF\n"); #endif rf_reset_signal = 1; if (spi_Send_InitFrame(RF_InitFrame, 23)) @@ -1053,14 +1053,14 @@ while (ConnectionDelay) ConnectionDelay--; #ifdef USB_CMD_DEBUG - printf(" => RF_CONNECTED \n"); + printf(" => CONNECTED \n"); #endif } else { RF_Connection_Status = RF_DISCONNECTED; #ifdef USB_CMD_DEBUG - printf(" => RF_DISCONNECTED \n"); + printf(" => DISCONNECTED \n"); #endif } } @@ -1070,7 +1070,7 @@ else if (RF_Connection_Status == RF_REQUEST_ID) { #ifdef USB_CMD_DEBUG - printf("Status RF_REQUEST_ID"); + printf("USB: Request ID\n"); #endif rf_reset_signal = 1; if (spi_Send_InitFrame(RF_InitFrame, 23)) @@ -1082,14 +1082,14 @@ while (ConnectionDelay) ConnectionDelay--; #ifdef USB_CMD_DEBUG - printf(" => RF_CONNECTED \n"); + printf(" => RF_CONNECTED \n"); #endif } else { RF_Connection_Status = RF_DISCONNECTED; #ifdef USB_CMD_DEBUG - printf(" => RF_DISCONNECTED \n"); + printf(" => RF_DISCONNECTED \n"); #endif } @@ -1100,7 +1100,7 @@ else if (RF_Connection_Status == RF_CHANGE_ID) { #ifdef USB_CMD_DEBUG - printf("Status RF_CHANGE_ID"); + printf("USB: Change ID\n"); #endif rf_reset_signal = 1; if (spi_Send_InitFrame(RF_InitFrame, 23)) @@ -1112,14 +1112,14 @@ while (ConnectionDelay) ConnectionDelay--; #ifdef USB_CMD_DEBUG - printf(" => RF_CONNECTED \n"); + printf(" => RF_CONNECTED \n"); #endif } else { RF_Connection_Status = RF_DISCONNECTED; #ifdef USB_CMD_DEBUG - printf(" => RF_DISCONNECTED \n"); + printf(" => RF_DISCONNECTED \n"); #endif } } @@ -1140,6 +1140,9 @@ //-------------------------------------------------------------------------- if ((SPI_START) && (spi_enable)) // Wait start { +#ifdef SPI_DEBUG + printf ("SPI: Transaction:\n"); +#endif spi_watchdog_ctr = SPI_WATCHDOG_MAX; spi_ready = 0; spi_count = 0; // Reset spi counter @@ -1158,6 +1161,9 @@ //-------------------------------------------------------------------------- if (spi_Start_Flag) { +#ifdef SPI_DEBUG + printf (" f"); +#endif //-------------------------------------------------------------------------- // @@ -1168,6 +1174,9 @@ //-------------------------------------------------------------------------- if (spi_ready) { +#ifdef SPI_DEBUG + printf ("r "); +#endif Spi_Overflow_Ctr = 0; do { @@ -1175,6 +1184,7 @@ //-------------------------------------------------------------------------- // Prepare the Byte to Send //-------------------------------------------------------------------------- + /* XXX simplify this bit setting */ if (spi_slave == HEADERS) { if (Fifoready_SPK) // FIFO ready to be empty @@ -1251,7 +1261,12 @@ { while (!(SPSTA == 0x80)) // Wait SPI response if (RF_OFFLINE) + { +#ifdef SPI_DEBUG + printf ("\nRF_OFFLINE!\n"); +#endif return; + } spi_master_config = SPDAT; @@ -1265,7 +1280,12 @@ { while (!(SPSTA == 0x80)) // Wait SPI response if (RF_OFFLINE) + { +#ifdef SPI_DEBUG + printf ("\nRF_OFFLINE!\n"); +#endif return; + } if (spi_master_config & RF_AUDIO_HDR) { @@ -1280,10 +1300,14 @@ { while (!(SPSTA == 0x80)) // Wait SPI response if (RF_OFFLINE) + { +#ifdef SPI_DEBUG + printf ("\nRF_OFFLINE!\n"); +#endif return; + } if (spi_master_config & RF_CMD_HDR) { - if (spi_count <= spi_lenght_data + 5) received_status[spi_count - spi_lenght_data - 2] = @@ -1340,16 +1364,24 @@ } //if (spi_slave_config & RF_CMD_HDR) //printf("\n"); +#ifdef SPI_DEBUG + printf ("\n"); +#endif return; } } +#ifdef SPI_DEBUG + printf("%Bd:0x%Bx ", spi_count, SPDAT); +#endif Spi_Overflow_Ctr++; } while (spi_ready && (Spi_Overflow_Ctr < 5)); +#ifdef SPI_DEBUG + printf ("\n"); +#endif } } } - } else // if RF_OFFLINE { @@ -1371,5 +1403,4 @@ } } } - } |
From: jaguarondi <c2m...@c2...> - 2007-10-16 15:33:21
|
Author: jaguarondi Date: 2007-10-16 17:32:53 +0200 (Tue, 16 Oct 2007) New Revision: 619 Modified: firmware/tuxrf/trunk/device.c Log: * Avoid a connection by changing the ID without the head pressed. Modified: firmware/tuxrf/trunk/device.c =================================================================== --- firmware/tuxrf/trunk/device.c 2007-10-16 14:57:07 UTC (rev 618) +++ firmware/tuxrf/trunk/device.c 2007-10-16 15:32:53 UTC (rev 619) @@ -91,13 +91,13 @@ { if (changeID) // Change ID request { - _delay_ms(5000); // Wait 5 sec + _delay_ms(5000); // Wait 5 sec XXX bug, _delay_ms accepts a maximum of 32 if (!(PIND & 0x40)) // Head button is pushed { eeprom_write_byte(&ee_toy_id_h, toy_id_h); // Write toy id into the eeprom eeprom_write_byte(&ee_toy_id_l, toy_id_l); - requestID = 1; // Send the new ID to the PC for confirmation } + requestID = 1; // Send the new ID to the PC for confirmation } if (requestID) // Send ID to PC |
From: remi <c2m...@c2...> - 2007-10-16 15:16:13
|
Author: remi Date: 2007-10-16 16:57:07 +0200 (Tue, 16 Oct 2007) New Revision: 618 Modified: api/python/trunk/tuxapi_class.py api/python/trunk/tuxapi_const.py Log: ADD: Wav system, monitoring UP: Documentation Modified: api/python/trunk/tuxapi_class.py =================================================================== --- api/python/trunk/tuxapi_class.py 2007-10-16 13:00:24 UTC (rev 617) +++ api/python/trunk/tuxapi_class.py 2007-10-16 14:57:07 UTC (rev 618) @@ -31,6 +31,7 @@ import string import signal from tuxapi_const import * +from copy import deepcopy #============================================================================== # Constants @@ -48,16 +49,18 @@ Sub class of this class: "cmd" as class : Class which manages the tux commands + "connect" as class : Class which manages connection functions "daemon" as class : Class which manages the daemon commands "event" as class : Class which manages the events "hw" as class : Class which manages the tux hardware "misc" as class : Class which manages the miscellaneous functions + "monitoring" as class : Class which manages the monitoring "status" as class : Class which manages the request of a status - "connect" as class : Class which manages connection functions "sys" as class : Class which manages the system functions "tts" as class : Class which manages the text to speech + "wav" as class : Class which manages the wav functions Global variables of this class: "my_name" as string : Name of the api instance @@ -107,6 +110,7 @@ self.tts=TUXtts(self) self.misc=TUXmisc(self) self.monitoring = TUXmonitoring(self) + self.wav = TUXwav(self) self.connected=False #deprecated t=threading.Thread(target=self.daemon._loop_auto_connect) t.setName('daemon._loop_auto_connect') @@ -989,6 +993,34 @@ # TUXTCPCommunicator - monitoring - class #============================================================================== class TUXmonitoring(object): + """ + Class which manages the monitoring + + Status constants list: + (STATUS_WINGS_MOTOR_BACKWARD, STATUS_SPIN_MOTOR_BACKWARD, + STATUS_SPIN_MOTOR_FORWARD, STATUS_MOUTH_OPEN_POSITION, + STATUS_MOUTH_CLOSED_POSITION, STATUS_HEAD_PUSH_POSITION, + STATUS_CHARGER_INHIBIT_SIGNAL, STATUS_WINGS_POSITION_SWITCH, + STATUS_MOTOR_FOR_WINGS, STATUS_LEFT_BLUE_LED, + STATUS_I2C_SDA_LINE, STATUS_I2C_SCL_LINE , + STATUS_HEAD_MOTOR_FOR_MOUTH, STATUS_HEAD_MOTOR_FOR_EYES, + STATUS_IR_RECEIVER_SIGNAL, STATUS_SPIN_POSITION_SWITCH, + STATUS_WINGS_MOTOR_FORWARD, STATUS_IR_LED, + STATUS_EYES_OPEN_POSITION_SWITCH, STATUS_EYES_CLOSED_POSITION_SWITCH, + STATUS_LEFT_WING_PUSH, STATUS_RIGHT_WING_PUSH, + STATUS_POWER_PLUG_SWITCH, STATUS_HEAD_PUSH_SWITCH, + STATUS_CHARGER_LED, STATUS_MUTE_STATUS, + STATUS_LIGHT_LEVEL, STATUS_EYES_POSITION_COUNTER, + STATUS_MOUTH_POSITION_COUNTER, STATUS_WINGS_POSITION_COUNTER, + STATUS_SPIN_POSITION_COUNTER, STATUS_RIGHT_BLUE_LED, + STATUS_RF_CONNECTED, STATUS_IR_CODE, + STATUS_SOUND_COUNT, STATUS_PONG + ) + + Functions list: + tux.monitoring.insert + tux.monitoring.remove + """ def __init__(self, parent): self.parent = parent @@ -996,14 +1028,38 @@ self._event_list = [] def insert(self, status, function): + """ + Insert a monitoring event. + + Parameters: + "status" as integer : Status index + (See status contants list) + "function" as pointer of function : Function to bind + + Returns: + The index of your event in the monitoring manager. + You must save this index if you want removing your event. + + Exemple: + >>> monitor_idx = tux.monitoring.insert(STATUS_LIGHT_LEVEL, my_function) + """ self._event_mutex.acquire() self._event_list.append([status, function]) self._event_mutex.release() return len(self._event_list) - 1 def remove(self, event_id): + """ + Remove a monitoring event. + + Parameters: + "event_id" as integer : Index of the event. + + Exemple: + >>> tux.monitoring.remove(monitor_idx) + """ self._event_mutex.acquire() - self._event_list.pop(event_id) + self._event_list[event_id][1] = None self._event_mutex.release() def check_events(self, frame): @@ -1018,13 +1074,14 @@ self.remove(idx) for i, event in enumerate(events): - if event[0] == ord(frame[4]): - frame = frame[5:] - ord_frame = [] - for val in frame: - ord_frame.append(ord(val)) - args = tuple(ord_frame) - thread.start_new_thread(__load_funct_async, (i, event[1], args)) + if event[1] != None: + if event[0] == ord(frame[4]): + frame = frame[5:] + ord_frame = [] + for val in frame: + ord_frame.append(ord(val)) + args = tuple(ord_frame) + thread.start_new_thread(__load_funct_async, (i, event[1], args)) #============================================================================== @@ -2852,7 +2909,7 @@ Example: >>>var = tux.status.charger_state() """ - return self.get_one_status(DATAS_STATUS_CHARGER_INHIBIT_SIGNAL) + return self.get_one_status(DATAS_STATUS_CHARGER_LED_STATUS) #-------------------------------------------------------------------------- # Get the last state of wings position switch status @@ -4099,6 +4156,8 @@ self.on_connected = None self.on_disconnected = None self.on_voice_list = None + self.on_wav_raw = None + self.__last_wav_raw = [0] * 1024; self.sound_on=False self.my_pitch=100 self.my_voice=SPK_US_MALE @@ -4128,12 +4187,22 @@ self.speaking_stack_mutex.acquire() curr_speaking_conf = self.speaking_stack.pop(0) self.speaking_stack_mutex.release() - self.my_pitch = curr_speaking_conf[1][1] - self.my_voice = curr_speaking_conf[1][0] - if curr_speaking_conf[2] == True: + if curr_speaking_conf[2] == 'speak_free': + self.my_pitch = curr_speaking_conf[1][1] + self.my_voice = curr_speaking_conf[1][0] self.__speak_free(curr_speaking_conf[0]) - else: + elif curr_speaking_conf[2] == 'speak': + self.my_pitch = curr_speaking_conf[1][1] + self.my_voice = curr_speaking_conf[1][0] self.__speak(curr_speaking_conf[0]) + elif curr_speaking_conf[2] == 'wav_free': + self.parent.wav._set_begin_end( curr_speaking_conf[1][0], + curr_speaking_conf[1][1]) + self.__wav_free(curr_speaking_conf[0]) + elif curr_speaking_conf[2] == 'wav': + self.parent.wav._set_begin_end( curr_speaking_conf[1][0], + curr_speaking_conf[1][1]) + self.__wav(curr_speaking_conf[0]) curr_speaking_conf[3].acquire() curr_speaking_conf[3].notify() curr_speaking_conf[3].release() @@ -4146,6 +4215,15 @@ self.speaking_stack_mutex.release() def speak(self, text): + """ + Speak a text with the acapela text to speech engine + + Parameters: + "text" as string : text to read + + Example: + >>> tux.tts.speak('My name is tux! tux droid !') + """ if not self.connected: return speaking_conf = [] @@ -4154,7 +4232,7 @@ voice_conf.append(self.my_voice) voice_conf.append(self.my_pitch) speaking_conf.append(voice_conf) - speaking_conf.append(False) + speaking_conf.append('speak') my_lock = threading.Condition(threading.Lock()) speaking_conf.append(my_lock) self.speaking_stack_add(speaking_conf) @@ -4163,6 +4241,15 @@ my_lock.release() def speak_free(self, text): + """ + Speak a text with the acapela text to speech engine in free mode + + Parameters: + "text" as string : text to read + + Example: + >>> tux.tts.speak_free('My name is tux! tux droid !') + """ if not self.connected: return speaking_conf = [] @@ -4171,13 +4258,51 @@ voice_conf.append(self.my_voice) voice_conf.append(self.my_pitch) speaking_conf.append(voice_conf) - speaking_conf.append(True) + speaking_conf.append('speak_free') my_lock = threading.Condition(threading.Lock()) speaking_conf.append(my_lock) self.speaking_stack_add(speaking_conf) my_lock.acquire() my_lock.wait() my_lock.release() + + def _wav(self, wav_path, begin, end): + if not os.path.isfile(wav_path): + return + if not self.connected: + return + speaking_conf = [] + speaking_conf.append(wav_path) + voice_conf = [] + voice_conf.append(begin) + voice_conf.append(end) + speaking_conf.append(voice_conf) + speaking_conf.append('wav') + my_lock = threading.Condition(threading.Lock()) + speaking_conf.append(my_lock) + self.speaking_stack_add(speaking_conf) + my_lock.acquire() + my_lock.wait() + my_lock.release() + + def _wav_free(self, wav_path, begin, end): + if not os.path.isfile(wav_path): + return + if not self.connected: + return + speaking_conf = [] + speaking_conf.append(wav_path) + voice_conf = [] + voice_conf.append(begin) + voice_conf.append(end) + speaking_conf.append(voice_conf) + speaking_conf.append('wav_free') + my_lock = threading.Condition(threading.Lock()) + speaking_conf.append(my_lock) + self.speaking_stack_add(speaking_conf) + my_lock.acquire() + my_lock.wait() + my_lock.release() #-------------------------------------------------------------------------- # Allow to connect the api to tuxttsd automatically @@ -4339,7 +4464,7 @@ """ while self.connected: try: - tcp_data=self.sock.recv(32) + tcp_data=self.sock.recv(256) except socket.timeout: time.sleep(0.01) continue @@ -4348,7 +4473,7 @@ self.connected=False time.sleep(0.01) continue - if len(tcp_data) < 32: + if len(tcp_data) < 256: time.sleep(0.01) continue if self.print_status: @@ -4357,7 +4482,7 @@ self.tcp_mutex.acquire() self.tcp_data_list.append(tcp_data) self.tcp_mutex.release() - time.sleep(0.01) + time.sleep(0.002) #-------------------------------------------------------------------------- # SYSTEM function @@ -4373,11 +4498,11 @@ data = self.tcp_data_list.pop(0) else: self.tcp_mutex.release() - time.sleep(0.003) + time.sleep(0.002) continue self.tcp_mutex.release() self._dispatch_data_main(data) - time.sleep(0.003) + time.sleep(0.002) #-------------------------------------------------------------------------- # Dispatch data from tcp server @@ -4416,6 +4541,20 @@ # A voice has been loaded if ord(data[1])==CMD_INFO_VOICE_OK: self.voice_loaded = True + # WAV INFO + if ord(data[0]) == WAV_INFO: + idx = ord(data[1]) + if idx < 4: + spectre_idx = idx * 254 + for i in range(254): + self.__last_wav_raw[spectre_idx + i] = ord(data[i + 2]) + else: + spectre_idx = idx * 254 + for i in range(8): + self.__last_wav_raw[spectre_idx + i] = ord(data[i + 2]) + if self.on_wav_raw != None: + tmp_raw = deepcopy(self.__last_wav_raw) + thread.start_new_thread(self.on_wav_raw, (tmp_raw,)) #-------------------------------------------------------------------------- # Send command to tuxttsd @@ -4631,25 +4770,75 @@ self.parent.cmd.audio_channel_general() self.tts_mutex.release() return True - + #-------------------------------------------------------------------------- - # Speak a text with the acapela text to speech engine in free mode + # Play a wav with tuxttsd #-------------------------------------------------------------------------- - def __speak_free(self,text): + def __wav(self, wav_path): """ - Speak a text with the acapela text to speech engine in free mode + Speak a text with the acapela text to speech engine Parameters: "text" as string : text to read Example: - >>> tux.tts.speak_free('My name is tux! tux droid !') + >>> tux.tts.speak('My name is tux! tux droid !') """ + self.tts_mutex.acquire() + if not self.connected: + if self.parent.print_warnings: + print "WARNING : Resource text to speech Acapela not found" + self.tts_mutex.release() + return False + if self.sound_on == True: + self.stop() + u = unicode(wav_path, "utf-8") + text_to_send = u.encode('latin-1','replace') + text_length = len(text_to_send) + self.send_command_to_tts(CMD_TYPE_WAV, CMD_WAV_INSERT_PLAY, \ + (text_length & 0x0000FF00) >> 8, (text_length & 0x000000FF), \ + 0, 0) + self._sock_send_frame(text_to_send) + self.parent.cmd.audio_channel_tts() + counter = 0 + while ((self.sound_on == False) and (counter < 100)): + counter = counter + 1 + self.parent.sys.wait(0.1) + if self.speaking_stack_get_size() > 0: + break + if counter == 100: + self.stop() + self.parent.cmd.audio_channel_general() + print "WAV play : Timeout 10 sec" + self.tts_mutex.release() + return False + while self.sound_on == True: + self.parent.sys.wait(0.1) + if self.speaking_stack_get_size() > 0: + break + self.parent.cmd.audio_channel_general() + self.tts_mutex.release() + return True + + #-------------------------------------------------------------------------- + # Speak a text with the acapela text to speech engine in free mode + #-------------------------------------------------------------------------- + def __speak_free(self,text): t=threading.Thread(target=self.__speak, args=(text,)) t.setName('tts.speak_free') t.start() self.parent.daemon.free_thread_list.append(t) return True + + #-------------------------------------------------------------------------- + # Play a wav with tuxttsd in free mode + #-------------------------------------------------------------------------- + def __wav_free(self, wav_path): + t=threading.Thread(target=self.__wav, args=(wav_path,)) + t.setName('tts.wav_free') + t.start() + self.parent.daemon.free_thread_list.append(t) + return True #-------------------------------------------------------------------------- # Play the sound if it's in "pause" state @@ -4745,7 +4934,138 @@ >>> tux.tts.kill_daemon() """ self.send_command_to_tts(CMD_TYPE_DAEMON,CMD_DAEMON_KILL,0,0,0,0) + +#============================================================================== +# TUXTCPCommunicator - wav - class +#============================================================================== +class TUXwav(object): + """ + Class which manages the wav functions. + Functions list for the users: + tux.wav.play + tux.wav.play_free + tux.wav.pause + tux.wav.stop + tux.wav._continue + tux.wav.get_duration + """ + + #-------------------------------------------------------------------------- + # Constructor of class + #-------------------------------------------------------------------------- + def __init__(self,parent): + self.parent = parent + self.__wav_path = "" + self.__wav_length = 0 + + def __load(self, wav_path): + if os.path.isfile(wav_path): + try: + size = os.stat(wav_path)[6] - 44 + self.__wav_length = (float)(size) / 8000 + self.__wav_path = wav_path + except: + return False + return True + else: + return False + + def _set_begin_end(self, begin = 0., end = 0.): + begin_100m = (int)(round(begin * 10)) + end_100m = (int)(round(end * 10)) + begin_lower = begin_100m & 0x000000FF + begin_upper = (begin_100m & 0x0000FF00) >> 8 + end_lower = end_100m & 0x000000FF + end_upper = (end_100m & 0x0000FF00) >> 8 + self.parent.tts.send_command_to_tts( + CMD_TYPE_WAV, + CMD_WAV_BEGIN_END, + begin_lower, + begin_upper, + end_lower, + end_upper) + + def get_duration(self, wav_path): + """ + Get the duration of a wave file. + + Parameters: + "wav_path" as string : Path of the wave file + + Returns: + The time duration in seconds as float. + + Exemple: + >>> print tux.wav.get_duration('/home/tux/test.wav') + """ + if self.__load(wav_path): + self.__wav_path = "" + return self.__wav_length + else: + return 0. + + def play(self, wav_path, begin = 0., end = 0.): + """ + Play a wave file with tuxttsd daemon. + + Parameters: + "wav_path" as string : Path of the wave file + "begin" as float : Starting index in seconds(Optional) + "end" as float : Ending index in seconds(Optional) + + Exemple: + >>> tux.wav.play('/home/tux/test.wav') + >>> tux.wav.play('/home/tux/test.wav', 0., 5.5) + """ + if self.__load(wav_path): + self.parent.tts._wav(self.__wav_path, begin, end) + + def play_free(self, wav_path, begin = 0., end = 0.): + """ + Play a wave file with tuxttsd daemon in free mode. + + Parameters: + "wav_path" as string : Path of the wave file + "begin" as float : Starting index in seconds(Optional) + "end" as float : Ending index in seconds(Optional) + + Exemple: + >>> tux.wav.play_free('/home/tux/test.wav') + >>> tux.wav.play_free('/home/tux/test.wav', 0., 5.5) + """ + if self.__load(wav_path): + self.parent.tts._wav_free(self.__wav_path, begin, end) + + def stop(self): + """ + Stop the current played wave file. + + Exemple: + >>> tux.wav.stop() + """ + self.parent.tts.stop() + + def pause(self): + """ + Pause the current played wave file. + + Exemple: + >>> tux.wav.pause() + """ + self.parent.tts.pause() + + def _continue(self): + """ + Continue the playing of a paused wave file. + + Exemple: + >>> tux.wav._continue() + """ + self.parent.tts.play() + + + #============================================================================== # TUXTCPCommunicator - misc - class #============================================================================== @@ -4807,7 +5127,7 @@ c_header='' my_doc='' for i in range(80-len(indent)): c_header=c_header+'-' - my_doc='%s%s) Class : %s (%s)<br>'%(my_doc,class_num, \ + my_doc='%s%s) Object : %s (%s)<br>'%(my_doc,class_num, \ class_name,str(type(class_obj))[8:-2]) self.header_doc=self.header_doc+indent+'<a href="#%s">'%(class_num) \ +my_doc+'</a>' @@ -4855,7 +5175,7 @@ c_header='' my_doc='' for i in range(80-len(indent)): c_header=c_header+'-' - my_doc='%s%s)\tFunction : %s<br>'%(my_doc,funct_num,funct_name) + my_doc='%s%s)\tMethode : %s<br>'%(my_doc,funct_num,funct_name) self.header_doc=self.header_doc+indent+'<a href="#%s">'%(funct_num) \ +my_doc+'</a>' my_doc=indent+'<a name=%s></a>'%(funct_num)+self.h_funct_b+ \ Modified: api/python/trunk/tuxapi_const.py =================================================================== --- api/python/trunk/tuxapi_const.py 2007-10-16 13:00:24 UTC (rev 617) +++ api/python/trunk/tuxapi_const.py 2007-10-16 14:57:07 UTC (rev 618) @@ -158,6 +158,43 @@ DATAS_STATUS_PONG = 0x24 DATAS_STATUS_BATTERY = 0x25 +STATUS_WINGS_MOTOR_BACKWARD = 0x01 +STATUS_SPIN_MOTOR_BACKWARD = 0x02 +STATUS_SPIN_MOTOR_FORWARD = 0x03 +STATUS_MOUTH_OPEN_POSITION = 0x04 +STATUS_MOUTH_CLOSED_POSITION = 0x05 +STATUS_HEAD_PUSH_POSITION = 0x06 +STATUS_CHARGER_INHIBIT_SIGNAL = 0x07 +STATUS_WINGS_POSITION_SWITCH = 0x08 +STATUS_MOTOR_FOR_WINGS = 0x09 +STATUS_LEFT_BLUE_LED = 0x0A +STATUS_I2C_SDA_LINE = 0x0B +STATUS_I2C_SCL_LINE = 0x0C +STATUS_HEAD_MOTOR_FOR_MOUTH = 0x0D +STATUS_HEAD_MOTOR_FOR_EYES = 0x0E +STATUS_IR_RECEIVER_SIGNAL = 0x0F +STATUS_SPIN_POSITION_SWITCH = 0x10 +STATUS_WINGS_MOTOR_FORWARD = 0x11 +STATUS_IR_LED = 0x12 +STATUS_EYES_OPEN_POSITION_SWITCH = 0x13 +STATUS_EYES_CLOSED_POSITION_SWITCH = 0x14 +STATUS_LEFT_WING_PUSH = 0x15 +STATUS_RIGHT_WING_PUSH = 0x16 +STATUS_POWER_PLUG_SWITCH = 0x17 +STATUS_HEAD_PUSH_SWITCH = 0x18 +STATUS_CHARGER_LED = 0x19 +STATUS_MUTE_STATUS = 0x1A +STATUS_LIGHT_LEVEL = 0x1B +STATUS_EYES_POSITION_COUNTER = 0x1C +STATUS_MOUTH_POSITION_COUNTER = 0x1D +STATUS_WINGS_POSITION_COUNTER = 0x1E +STATUS_SPIN_POSITION_COUNTER = 0x1F +STATUS_RIGHT_BLUE_LED = 0x20 +STATUS_RF_CONNECTED = 0x21 +STATUS_IR_CODE = 0x22 +STATUS_SOUND_COUNT = 0x23 +STATUS_PONG = 0x24 + # Tux connection commands TUX_CONNECTION_DISCONNECT = 1 TUX_CONNECTION_CONNECT = 2 @@ -276,9 +313,13 @@ CMD_TYPE_TTS = 0x02 CMD_TYPE_DAEMON = 0x03 CMD_TYPE_INFO = 0x04 +CMD_TYPE_WAV = 0x05 # Sound conf commands CMD_SOUNDCONF_REINIT = 0X01 CMD_SOUNDCONF_STOP = 0X02 +# WAV commands +CMD_WAV_INSERT_PLAY = 0x01 +CMD_WAV_BEGIN_END = 0x02 # TTS commands CMD_TTS_CHOOSE_VOICE = 0x01 CMD_TTS_INSERT_PLAY_SPEECH = 0x02 @@ -370,6 +411,7 @@ RET_ACK = 0x01 TTS_INFO = 0x02 DAEMON_INFO = 0x03 +WAV_INFO = 0x04 # ACK return ACK_OK = 0x01 ACK_UNKNOW_CMD_TYPE = 0x02 |
From: Paul_R <c2m...@c2...> - 2007-10-16 13:00:50
|
Author: Paul_R Date: 2007-10-16 15:00:24 +0200 (Tue, 16 Oct 2007) New Revision: 617 Modified: firmware/tuxaudio/trunk/flash.c Log: * Correct a bug in the sound flash programming Modified: firmware/tuxaudio/trunk/flash.c =================================================================== --- firmware/tuxaudio/trunk/flash.c 2007-10-16 10:41:28 UTC (rev 616) +++ firmware/tuxaudio/trunk/flash.c 2007-10-16 13:00:24 UTC (rev 617) @@ -396,7 +396,6 @@ spiSend(ad2); spiSend(ad1); spiSend(ad0); - resetFifo(&PWMFifo); while (!spi_start) // Send first byte into the page flash { if (!isFifoEmpty(&PWMFifo)) // Fifo not empty |
From: Paul_R <c2m...@c2...> - 2007-10-16 10:41:38
|
Author: Paul_R Date: 2007-10-16 12:41:28 +0200 (Tue, 16 Oct 2007) New Revision: 616 Modified: firmware/tuxaudio/trunk/PC_communication.c firmware/tuxaudio/trunk/flash.c firmware/tuxaudio/trunk/main.c Log: * Changed the play sound process. Now, the data bytes are stored in a fifo. When a sound is played from the flash, the RF still work. Modified: firmware/tuxaudio/trunk/PC_communication.c =================================================================== --- firmware/tuxaudio/trunk/PC_communication.c 2007-10-15 13:52:20 UTC (rev 615) +++ firmware/tuxaudio/trunk/PC_communication.c 2007-10-16 10:41:28 UTC (rev 616) @@ -38,7 +38,7 @@ spi_count = 0; // Reset spi counter spi_slave = HEADERS; // Set state machine spi_master = HEADERM; - if (programmingFlash) + if (programmingFlash || flashPlay) HOLD_ON; // Reset SPI to fix strange bug on the spi SPCR = 0x50; @@ -82,9 +82,7 @@ spi_slave = PUT_COMMAND; // Next state if (spi_headerb & 0x02) { - cli(); SPDR = pullFifo(&ADCFifo); // Get data from FIFO - sei(); } else SPDR = 0x00; // No data to transmit @@ -119,15 +117,13 @@ spi_lenght_data = 17; spi_master = PUT_SOUND_FIFO; // Go to the next state - if (!programmingFlash) // XXX code must be review it's very strange ..... + if (!programmingFlash && !flashPlay) // XXX code must be review it's very strange ..... { if (!(spi_master_config & 0x02)) { if (!lockAdaptFifo) { - cli(); adaptFifo(&PWMFifo); // Adaptative FIFO - sei(); lockAdaptFifo = 1; } else @@ -144,12 +140,12 @@ { if (spi_master_config & 0x02) { - cli(); - pushFifo(&PWMFifo, SPDR); // Put into the FIFO - sei(); + if (!flashPlay) + pushFifo(&PWMFifo, SPDR); // Put into the FIFO } if (spi_count == (spi_lenght_data + 1)) spi_master = READ_COMMAND; // Go to the next state + } else if (spi_master == READ_COMMAND) { Modified: firmware/tuxaudio/trunk/flash.c =================================================================== --- firmware/tuxaudio/trunk/flash.c 2007-10-15 13:52:20 UTC (rev 615) +++ firmware/tuxaudio/trunk/flash.c 2007-10-16 10:41:28 UTC (rev 616) @@ -152,7 +152,7 @@ { uint8_t count, i; uint8_t adp1, adp0, sounds_stored; // Address pointer varaible - + HOLD_OFF; sounds_stored = read_data(0x00, 0x00, 0x00); if (sounds_stored == 0xFF) /* if unprogrammed we have 0xFF stored in flash */ { @@ -235,7 +235,7 @@ } } } - + resetFifo(&PWMFifo); FLASH_CS_ON; // Chip Select spiSend(0x03); // Send Read Page Command @@ -260,12 +260,10 @@ static void playingSound(void) { uint8_t sound; - cli(); - if (!isFifoFull(&PWMFifo)) + HOLD_OFF; + while (spi_start && !isFifoFull(&PWMFifo)) { - HOLD_OFF; // Set the HOLD signal sound = spiSend(0x00); // Wait response - HOLD_ON; // Reset the HOLD signal sound = sound >> audioLevel; pushFifo(&PWMFifo, sound); @@ -277,15 +275,21 @@ { ad[0]++; if (ad[0] == 0x08) // Address overflow + { stopPlaying(); + break; + } } } if (ad[0] == ad[3]) // Test end of sound if (ad[1] == ad[4]) if (ad[2] == ad[5]) + { stopPlaying(); + break; + } } - sei(); + HOLD_ON; } /* Static functions */ @@ -392,7 +396,7 @@ spiSend(ad2); spiSend(ad1); spiSend(ad0); - + resetFifo(&PWMFifo); while (!spi_start) // Send first byte into the page flash { if (!isFifoEmpty(&PWMFifo)) // Fifo not empty Modified: firmware/tuxaudio/trunk/main.c =================================================================== --- firmware/tuxaudio/trunk/main.c 2007-10-15 13:52:20 UTC (rev 615) +++ firmware/tuxaudio/trunk/main.c 2007-10-16 10:41:28 UTC (rev 616) @@ -285,8 +285,7 @@ { sei(); // Reactivate global interrupt in case of flash programmation - if (!flashPlay) - spiTransaction(); // Spi transaction from radio + spiTransaction(); // Spi transaction from radio if (commandRX) // commend RX from radio { |
From: Paul_R <c2m...@c2...> - 2007-10-15 13:52:21
|
Author: Paul_R Date: 2007-10-15 15:52:20 +0200 (Mon, 15 Oct 2007) New Revision: 615 Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Pictures/Icons/gadget.png software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml Log: * Added an icon Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf =================================================================== (Binary files differ) Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Pictures/Icons/gadget.png =================================================================== (Binary files differ) Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-15 13:51:24 UTC (rev 614) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-15 13:52:20 UTC (rev 615) @@ -33,7 +33,7 @@ <widget_lblValue type='str'>Valeur (V)</widget_lblValue> <speaker_name type='str'>Bruno8k</speaker_name> <conf_lblSample type='str'>Points</conf_lblSample> - <charging type='str'>En charge</charging> + <conf_lblType type='str'>Type</conf_lblType> <widget_lblDisplayThreshold type='str'>Afficher le seuil sur le graph.</widget_lblDisplayThreshold> <conf_btnModify type='str'>Modifier</conf_btnModify> <widget_lblEvent type='str'>Evènement</widget_lblEvent> @@ -58,7 +58,7 @@ <conf_lblNotNotified type='str'>Non notifié</conf_lblNotNotified> <conf_lblDrop type='str'>Chute</conf_lblDrop> <gui_conf_window_title type='str'>Paramètres</gui_conf_window_title> - <conf_lblType type='str'>Type</conf_lblType> + <charging type='str'>En charge</charging> <widget_lblSet type='str'>Ajouter a la config.</widget_lblSet> <conf_lblValue type='str'>Valeur (V)</conf_lblValue> <conf_lblRate type='str'>Taux de rafraichissement</conf_lblRate> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-15 13:51:24 UTC (rev 614) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-15 13:52:20 UTC (rev 615) @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <about> + <gadget_name type='str'>battery_monitor</gadget_name> <gadget_author type='str'>Paul Rathgeb</gadget_author> + <gadget_description type='str'>Battery monitor for tux droid</gadget_description> <gadget_version type='str'>0.0.1</gadget_version> - <gadget_description type='str'>Battery monitor for tux droid</gadget_description> - <gadget_name type='str'>battery_monitor</gadget_name> </about> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-15 13:51:24 UTC (rev 614) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-15 13:52:20 UTC (rev 615) @@ -1,10 +1,10 @@ <?xml version='1.0' encoding='UTF-8'?> <settings> <parameters> - <Sample type='float'>600.0</Sample> + <test_tab type='list'>[[1, 0, 0, 0.10000000000000001, 20.0, True, 'None', False, 0]]</test_tab> <chkMotors type='bool'>True</chkMotors> <MainScript type='str'>None</MainScript> - <test_tab type='list'>[[1, 0, 0, 0.10000000000000001, 20.0, True, 'None', False, 0]]</test_tab> + <Sample type='float'>600.0</Sample> <Rate type='float'>10.0</Rate> <config type='list'>[]</config> </parameters> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-15 13:51:24 UTC (rev 614) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-15 13:52:20 UTC (rev 615) @@ -5,12 +5,16 @@ <gui_conf_remote_title type='str'>Control</gui_conf_remote_title> <battery type='str'>On battery</battery> <conf_lblRaise type='str'>Raise</conf_lblRaise> + <widget_lblTest type='str'>Notifications</widget_lblTest> <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> <conf_lblEvent type='str'>Event</conf_lblEvent> <widget_lblControl type='str'>Control</widget_lblControl> <gui_conf_accept_bt type='str'>Accept</gui_conf_accept_bt> + <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> + <lblMotors type='str'>Disable measure when the motors are running</lblMotors> <help_text type='str'> </help_text> + <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <conf_lblChange type='str'>Change</conf_lblChange> <conf_lblBoth type='str'>Both</conf_lblBoth> <widget_lblBtnApply type='str'>Apply changes</widget_lblBtnApply> @@ -21,19 +25,16 @@ <widget_lblValue type='str'>Value (V)</widget_lblValue> <gui_conf_cancel_bt type='str'>Cancel</gui_conf_cancel_bt> <widget_lblBoth type='str'>Both direction</widget_lblBoth> - <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> - <conf_lblType type='str'>Type</conf_lblType> <mainscript type='str'>I've found the light !</mainscript> - <conf_btnRemove type='str'>Remove</conf_btnRemove> <gui_conf_delay_lb type='str'>Delay (sec)</gui_conf_delay_lb> <plugged type='str'>Plugged</plugged> <conf_btnBehavior type='str'>Clear path</conf_btnBehavior> <gui_conf_about_title type='str'>About</gui_conf_about_title> <conf_lblChangeD type='str'>Drop and raise</conf_lblChangeD> - <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> + <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> <speaker_name type='str'>Ryan8k</speaker_name> <conf_lblSample type='str'>Samples</conf_lblSample> - <charging type='str'>Charging</charging> + <conf_lblType type='str'>Type</conf_lblType> <widget_lblDisplayThreshold type='str'>Display threshold on graph</widget_lblDisplayThreshold> <conf_btnModify type='str'>Modify</conf_btnModify> <widget_lblEvent type='str'>Event</widget_lblEvent> @@ -47,25 +48,24 @@ <conf_lblNotifiedBehavior type='str'>Notified</conf_lblNotifiedBehavior> <gui_conf_author_lb type='str'>Author</gui_conf_author_lb> <widget_lblDrop type='str'>Drop</widget_lblDrop> - <MainBehavior type='str'>Main behavior</MainBehavior> + <conf_lblNotified type='str'>Notified ?</conf_lblNotified> + <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> + <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> <absolute_threshold type='str'>Weak batteries </absolute_threshold> - <lblMotors type='str'>Disable measure when the motors are running</lblMotors> - <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> - <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> - <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <widget_lblChange type='str'>Change</widget_lblChange> <name_to_read type='str'>Battery monitor</name_to_read> <conf_lblNotNotified type='str'>Not notified</conf_lblNotNotified> <conf_lblDrop type='str'>Drop</conf_lblDrop> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <conf_lblNotified type='str'>Notified ?</conf_lblNotified> + <charging type='str'>Charging</charging> <widget_lblSet type='str'>Add to config</widget_lblSet> <conf_lblValue type='str'>Value (V)</conf_lblValue> <conf_lblRate type='str'>Refresh rate</conf_lblRate> <widget_lblBehavior type='str'>Enable behavior script</widget_lblBehavior> - <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> + <MainBehavior type='str'>Main behavior</MainBehavior> <conf_lblTime type='str'>Time (sec.)</conf_lblTime> <conf_lblControl type='str'>Control</conf_lblControl> - <widget_lblTest type='str'>Notifications</widget_lblTest> + <conf_btnRemove type='str'>Remove</conf_btnRemove> <widget_lblThreshold type='str'>Threshold</widget_lblThreshold> </strings> |
From: Paul_R <c2m...@c2...> - 2007-10-15 13:51:24
|
Author: Paul_R Date: 2007-10-15 15:51:24 +0200 (Mon, 15 Oct 2007) New Revision: 614 Modified: software/gadgets/light_monitor/trunk/Light_monitor.tgf software/gadgets/light_monitor/trunk/Light_monitor/Pictures/Icons/gadget.png software/gadgets/light_monitor/trunk/Light_monitor/about.xml software/gadgets/light_monitor/trunk/Light_monitor/settings.xml software/gadgets/light_monitor/trunk/Light_monitor/strings.xml Log: * Added an icon Modified: software/gadgets/light_monitor/trunk/Light_monitor/Pictures/Icons/gadget.png =================================================================== (Binary files differ) Modified: software/gadgets/light_monitor/trunk/Light_monitor/about.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/about.xml 2007-10-15 13:48:15 UTC (rev 613) +++ software/gadgets/light_monitor/trunk/Light_monitor/about.xml 2007-10-15 13:51:24 UTC (rev 614) @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <about> + <gadget_author type='str'>Paul Rathgeb</gadget_author> + <gadget_version type='str'>0.0.1</gadget_version> <gadget_name type='str'>light_monitor</gadget_name> - <gadget_author type='str'>Paul Rathgeb</gadget_author> <gadget_description type='str'>Light monitor for tux droid</gadget_description> - <gadget_version type='str'>0.0.1</gadget_version> </about> Modified: software/gadgets/light_monitor/trunk/Light_monitor/settings.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/settings.xml 2007-10-15 13:48:15 UTC (rev 613) +++ software/gadgets/light_monitor/trunk/Light_monitor/settings.xml 2007-10-15 13:51:24 UTC (rev 614) @@ -10,22 +10,22 @@ <changeD_rad type='bool'>False</changeD_rad> <threshold type='float'>50.0</threshold> <decrease_rad type='bool'>False</decrease_rad> - <behavior_file_threshold type='NoneType'>None</behavior_file_threshold> + <Sample type='float'>500.0</Sample> <raise type='float'>10.0</raise> <changeU_rad type='bool'>False</changeU_rad> <threshold_notified type='bool'>False</threshold_notified> <config type='list'>[]</config> <behavior_file_change type='NoneType'>None</behavior_file_change> + <drop_rad type='bool'>True</drop_rad> <raise_rad type='bool'>False</raise_rad> <changeD type='float'>10.0</changeD> <drop_time type='float'>1.0</drop_time> <changeU type='float'>10.0</changeU> <raise_time type='float'>1.0</raise_time> <drop type='float'>10.0</drop> - <drop_rad type='bool'>True</drop_rad> <MainScript type='str'> </MainScript> - <Sample type='float'>500.0</Sample> + <behavior_file_threshold type='NoneType'>None</behavior_file_threshold> <threshold_chk type='bool'>False</threshold_chk> <Rate type='float'>0.1</Rate> <changeD_time type='float'>1.0</changeD_time> Modified: software/gadgets/light_monitor/trunk/Light_monitor/strings.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/strings.xml 2007-10-15 13:48:15 UTC (rev 613) +++ software/gadgets/light_monitor/trunk/Light_monitor/strings.xml 2007-10-15 13:51:24 UTC (rev 614) @@ -4,15 +4,13 @@ <conf_lblThreshold type='str'>Threshold</conf_lblThreshold> <gui_conf_remote_title type='str'>Control</gui_conf_remote_title> <conf_lblRaise type='str'>Raise</conf_lblRaise> - <widget_lblTest type='str'>Notifications</widget_lblTest> + <power_supply type='str'>You must disconnect the power supply</power_supply> <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> <conf_lblEvent type='str'>Event</conf_lblEvent> <widget_lblControl type='str'>Control</widget_lblControl> <gui_conf_accept_bt type='str'>Accept</gui_conf_accept_bt> - <speaker_name type='str'>Ryan8k</speaker_name> <help_text type='str'> </help_text> - <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <conf_lblChange type='str'>Change</conf_lblChange> <conf_lblBoth type='str'>Both</conf_lblBoth> <widget_lblBtnApply type='str'>Apply changes</widget_lblBtnApply> @@ -22,17 +20,19 @@ <gui_conf_update_title type='str'>Update</gui_conf_update_title> <widget_lblValue type='str'>Value (%)</widget_lblValue> <gui_conf_cancel_bt type='str'>Cancel</gui_conf_cancel_bt> - <widget_lblBoth type='str'>Both direction</widget_lblBoth> + <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> <mainscript type='str'>I've found the light !</mainscript> + <conf_btnRemove type='str'>Remove</conf_btnRemove> <gui_conf_delay_lb type='str'>Delay (sec)</gui_conf_delay_lb> <conf_btnBehavior type='str'>Clear path</conf_btnBehavior> <gui_conf_about_title type='str'>About</gui_conf_about_title> <conf_lblChangeD type='str'>Drop and raise</conf_lblChangeD> - <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> - <power_supply type='str'>You must disconnect the power supply</power_supply> + <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> + <speaker_name type='str'>Ryan8k</speaker_name> <conf_lblSample type='str'>Samples</conf_lblSample> <conf_lblType type='str'>Type</conf_lblType> <widget_lblDisplayThreshold type='str'>Display threshold on graph</widget_lblDisplayThreshold> + <widget_lblDark type='str'>Search darkness</widget_lblDark> <conf_btnModify type='str'>Modify</conf_btnModify> <widget_lblEvent type='str'>Event</widget_lblEvent> <widget_lblNotified type='str'>Notified</widget_lblNotified> @@ -45,10 +45,10 @@ <conf_lblNotifiedBehavior type='str'>Notified</conf_lblNotifiedBehavior> <gui_conf_author_lb type='str'>Author</gui_conf_author_lb> <widget_lblDrop type='str'>Drop</widget_lblDrop> - <conf_lblNotified type='str'>Notified ?</conf_lblNotified> - <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <MainBehavior type='str'>Main behavior</MainBehavior> + <widget_lblBoth type='str'>Both direction</widget_lblBoth> <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> - <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> + <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <search type='str'>I seek ...</search> <widget_lblChange type='str'>Change</widget_lblChange> @@ -57,14 +57,14 @@ <conf_lblNotNotified type='str'>Not notified</conf_lblNotNotified> <conf_lblDrop type='str'>Drop</conf_lblDrop> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <widget_lblDark type='str'>Search darkness</widget_lblDark> + <conf_lblNotified type='str'>Notified ?</conf_lblNotified> <widget_lblSet type='str'>Add to config</widget_lblSet> <conf_lblValue type='str'>Value (%)</conf_lblValue> <conf_lblRate type='str'>Refresh rate</conf_lblRate> <widget_lblBehavior type='str'>Enable behavior script</widget_lblBehavior> - <MainBehavior type='str'>Main behavior</MainBehavior> + <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> <conf_lblTime type='str'>Time (sec.)</conf_lblTime> <conf_lblControl type='str'>Control</conf_lblControl> - <conf_btnRemove type='str'>Remove</conf_btnRemove> + <widget_lblTest type='str'>Notifications</widget_lblTest> <widget_lblThreshold type='str'>Threshold</widget_lblThreshold> </strings> Modified: software/gadgets/light_monitor/trunk/Light_monitor.tgf =================================================================== (Binary files differ) |
From: Paul_R <c2m...@c2...> - 2007-10-15 13:48:17
|
Author: Paul_R Date: 2007-10-15 15:48:15 +0200 (Mon, 15 Oct 2007) New Revision: 613 Modified: software/gadgets/light_monitor/trunk/Light_monitor.tgf software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/init.pyp software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/lightGraph_class.py software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/notify.pyp software/gadgets/light_monitor/trunk/Light_monitor/Strings/fr_ALL.xml software/gadgets/light_monitor/trunk/Light_monitor/about.xml software/gadgets/light_monitor/trunk/Light_monitor/settings.xml software/gadgets/light_monitor/trunk/Light_monitor/strings.xml Log: * Added visual icons on graph when a notification happens. Modified: software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/init.pyp =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/init.pyp 2007-10-15 12:05:10 UTC (rev 612) +++ software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/init.pyp 2007-10-15 13:48:15 UTC (rev 613) @@ -20,13 +20,7 @@ #update the radio button status -measure.drop = _me.get_param('drop_rad') -measure.raising = _me.get_param('raise_rad') -measure.changeD = _me.get_param('changeD_rad') -measure.changeU = _me.get_param('changeU_rad') -measure.increase = _me.get_param('increase_rad') -measure.decrease = _me.get_param('decrease_rad') -measure.both = _me.get_param('both_rad') +measure.txtsearch = _me.string('search') # '' the check boxes measure.threshold_chk = _me.get_param('threshold_chk') Modified: software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/lightGraph_class.py =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/lightGraph_class.py 2007-10-15 12:05:10 UTC (rev 612) +++ software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/lightGraph_class.py 2007-10-15 13:48:15 UTC (rev 613) @@ -28,10 +28,10 @@ self.window.invalidate_rect(gtk.gdk.Rectangle(0,0,width,height),False) def draw(self, context): - rect = self.get_allocation() + self.rect = self.get_allocation() #draw axes #draw a rectangle in the window area - context.rectangle(rect.x, rect.y, rect.width, rect.height) + context.rectangle(self.rect.x, self.rect.y, self.rect.width, self.rect.height) #set a white background context.set_source_rgb(1, 1, 1) context.fill() @@ -42,9 +42,9 @@ #draw horizontal grid with 10 div. and 10 sub-div for i in range(20): - y = (rect.height / 20.0) * float(i) + y = (self.rect.height / 20.0) * float(i) #place correctly the vector - context.move_to(rect.width, y) + context.move_to(self.rect.width, y) if i % 2 == 1: #Minor div: no text context.set_source_rgb(0.2, 0.2, 0.2) @@ -67,11 +67,11 @@ context.set_source_rgb(0.2, 0.2, 0.2) context.set_line_width(0.6) #place correctly the vector - context.move_to(rect.width * temp_tab[i], 0) + context.move_to(self.rect.width * temp_tab[i], 0) #trace a line - context.line_to(rect.width * temp_tab[i], rect.height) + context.line_to(self.rect.width * temp_tab[i], self.rect.height) #replace the vector to draw text - context.move_to(rect.width * temp_tab[i], rect.height - 5) + context.move_to(self.rect.width * temp_tab[i], self.rect.height - 5) #determine the time labels context.show_text(str((self.light_measure_graph.rate * self.light_measure_graph.sample) - ((self.light_measure_graph.rate) * self.light_measure_graph.sample * temp_tab[i])) + " sec.") @@ -79,26 +79,26 @@ #display sample and rate #move the vector in the bottom - context.move_to(5, rect.height - 10) + context.move_to(5, self.rect.height - 10) #display the rate context.show_text("rate = "+str(self.light_measure_graph.rate)+" sec.") - context.move_to(5, rect.height - 20) + context.move_to(5, self.rect.height - 20) #and the samples context.show_text("samples = "+str(self.light_measure_graph.sample)) context.stroke() #determine the coefficients to adjust the curve in the window space - coeff_y = float(rect.height / 1124.00) - coeff_x = float(rect.width / (self.light_measure_graph.sample - 1)) + coeff_y = float(self.rect.height / 1124.00) + coeff_x = float(self.rect.width / (self.light_measure_graph.sample - 1)) #Fill... context.set_line_width(0.6) context.set_source_rgb(0, 0, 1) - context.move_to(rect.x - 2, rect.height + 2) - context.line_to(rect.x, rect.height - (self.light_measure_graph.val_table[0] * coeff_y)) + context.move_to(self.rect.x - 2, self.rect.height + 2) + context.line_to(self.rect.x, self.rect.height - (self.light_measure_graph.val_table[0] * coeff_y)) for i, val in enumerate(self.light_measure_graph.val_table): - context.line_to(rect.x + ((i) * coeff_x), rect.height - (val * coeff_y)) - context.line_to(rect.x + ((i) * coeff_x), rect.height + 5) + context.line_to(self.rect.x + ((i) * coeff_x), self.rect.height - (val * coeff_y)) + context.line_to(self.rect.x + ((i) * coeff_x), self.rect.height + 5) context.close_path() context.set_source_rgba(1.0, 0, 0, 0.2) context.fill() @@ -106,12 +106,47 @@ #and trace the curce context.set_line_width(0.6) context.set_source_rgb(1, 0, 0) - context.move_to(rect.x - 2, rect.height + 2) - context.line_to(rect.x, rect.height - (self.light_measure_graph.val_table[0] * coeff_y)) + context.move_to(self.rect.x - 2, self.rect.height + 2) + context.line_to(self.rect.x, self.rect.height - (self.light_measure_graph.val_table[0] * coeff_y)) for i, val in enumerate(self.light_measure_graph.val_table): - context.line_to(rect.x + ((i) * coeff_x), rect.height - (val * coeff_y)) - context.line_to(rect.x + ((i) * coeff_x), rect.height + 5) + context.line_to(self.rect.x + ((i) * coeff_x), self.rect.height - (val * coeff_y)) + if self.light_measure_graph.val_table_event[i] == 1: + self.draw_square(self.rect.x + ((i) * coeff_x), self.rect.height - (val * coeff_y), [0.7, 0.2, 0.2]) + if self.light_measure_graph.val_table_event[i] == 2: + self.draw_triangle(self.rect.x + ((i) * coeff_x), self.rect.height - (val * coeff_y), [0.7, 0.2, 0.2]) + + context.line_to(self.rect.x + ((i) * coeff_x), self.rect.height + 5) context.stroke() + + def draw_square(self, x, y, color): + self.context.stroke() + self.context.set_source_rgb(color[0], color[1], color[2]) + self.context.move_to(x - 4, y - 4) + self.context.rectangle(x - 4, y - 4, 8, 8) + self.context.move_to(x, y) + self.context.fill() + self.context.set_source_rgb(1, 0, 0) + + def draw_triangle(self, x, y, color): + self.context.stroke() + self.context.set_source_rgb(color[0], color[1], color[2]) + self.context.move_to(x, y - 5) + self.context.line_to(x + 5, y + 5) + self.context.line_to(x - 5, y + 5) + self.context.line_to(x, y - 5) + self.context.close_path() + self.context.fill() + self.context.move_to(x, y) + self.context.set_source_rgb(1, 0, 0) + + def draw_circle(self, x, y, color): + self.context.stroke() + self.context.set_source_rgb(color[0], color[1], color[2]) + self.context.arc(x, y, 4, 0, 2 * math.pi) + self.context.close_path() + self.context.fill() + self.context.move_to(x, y) + self.context.set_source_rgb(1, 0, 0) class lightMeasure(): def __init__(self): @@ -119,10 +154,14 @@ self.sample = 500.0 self.sample_backup = self.sample self.val_table = [-2] * int(self.sample + 1) + self.val_table_event = [-1] * int(self.sample + 1) self.test_tab = [0] self.rate = 0.1 self.rate_backup = self.rate self.tick = time.time() + self.event_flag = False + self.event = 0 + self.txtsearch = ' ' self.GUI_on = False @@ -146,25 +185,32 @@ self.__tab = self.test_tab else: self.__tab = self.event_tab + if self.search_light_flag == False: for i in range (len(self.__tab)): self.Threshold_control(i) self.Change_control(i) - + if self.event_flag == False and self.__tab[i][5] == True: + if self.__tab[i][7] == True and self.__tab[i][1] == 0: + self.event = 1 + self.event_flag = True + elif self.__tab[i][7] == True and self.__tab[i][1] == 1: + self.event = 2 + self.event_flag = True if self.GUI_on: self.test_tab = self.__tab else: self.event_tab = self.__tab - - if self.search_light_flag: - self.search_light(self.light_search) - else: - #goto test notification every sec. - if self.wait <= time.time(): - self.wait = time.time() + 2.0 - self.test_notification() - + if self.GUI_on: + if self.search_light_flag: + self.search_light(self.light_search) + else: + #goto test notification every sec. + if self.wait <= time.time(): + self.wait = time.time() + 2.0 + self.test_notification() + self.event_flag = False # To prevent notifications at startup if self.start_flag == True: @@ -349,25 +395,37 @@ # ########################################################### def on_light_level(self, args): - self.__on_light_mutex.acquire() - if self.sample_backup != self.sample and self.search_light_flag == False: - self.sample = self.sample_backup - self.val_table = [-2] * int(self.sample) - - if self.rate_backup != self.rate and self.search_light_flag == False: - self.rate_has_changed() - - if self.tick <= time.time(): - self.tick = time.time() + self.rate - val = (args[0] * 256) + args[1] - self.val_table.append(val) - self.val_table.pop(0) - if self.GUI_on: - self.light_graph_measure.refresh() - self.event_control() - self.__on_light_mutex.release() + try: + self.__on_light_mutex.acquire() + if self.sample_backup != self.sample and self.search_light_flag == False: + self.sample = self.sample_backup + self.val_table = [-2] * int(self.sample) + self.val_table_event = [-1] * int(self.sample) + + if self.rate_backup != self.rate and self.search_light_flag == False: + self.rate_has_changed() + + if self.tick <= time.time(): + self.tick = time.time() + self.rate + if self.event != 0 and self.event_flag == True: + self.val_table_event.append(self.event) + else: + self.val_table_event.append(-1) + + self.val_table_event.pop(0) + self.event = 0 + val = (args[0] * 256) + args[1] + self.val_table.append(val) + self.val_table.pop(0) + if self.GUI_on: + self.light_graph_measure.refresh() + self.event_control() + self.__on_light_mutex.release() + except: + print sys.exc_info() + def rate_has_changed(self): self.rate = self.rate_backup pts_per_sec = self.sample / (self.rate * self.sample) @@ -433,5 +491,5 @@ elif self.timer == 0: thread.start_new_thread(tux.cmd.spinl_off, ()) - self.timer = 7 + self.timer = 8 Modified: software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/notify.pyp =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/notify.pyp 2007-10-15 12:05:10 UTC (rev 612) +++ software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/notify.pyp 2007-10-15 13:48:15 UTC (rev 613) @@ -1,5 +1,6 @@ def notify_checker(): measure = _me.get_param('measure') + if measure.GUI_on == False and measure.search_light_flag == False: for i in range(len(measure.event_tab)): temp = measure.event_tab[i][7] @@ -14,6 +15,7 @@ def notify_actuator(): event = _me.get_param('measure').event_tab for i in range(len(event)): + _me.get_param('measure').event_flag = False #create text to speach for the default notification if event[i][1] == 0: if event[i][2] == 0: Modified: software/gadgets/light_monitor/trunk/Light_monitor/Strings/fr_ALL.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/Strings/fr_ALL.xml 2007-10-15 12:05:10 UTC (rev 612) +++ software/gadgets/light_monitor/trunk/Light_monitor/Strings/fr_ALL.xml 2007-10-15 13:48:15 UTC (rev 613) @@ -50,6 +50,7 @@ <conf_lblDefaultBehavior type='str'>Comportement pas défaut</conf_lblDefaultBehavior> <conf_lblBehavior type='str'>Comportement</conf_lblBehavior> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> + <search type='str'>Je cherche ...</search> <widget_lblChange type='str'>Changement</widget_lblChange> <widget_lblLight type='str'>Trouver lumière</widget_lblLight> <name_to_read type='str'>Moniteur de lumière</name_to_read> Modified: software/gadgets/light_monitor/trunk/Light_monitor/about.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/about.xml 2007-10-15 12:05:10 UTC (rev 612) +++ software/gadgets/light_monitor/trunk/Light_monitor/about.xml 2007-10-15 13:48:15 UTC (rev 613) @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <about> + <gadget_name type='str'>light_monitor</gadget_name> <gadget_author type='str'>Paul Rathgeb</gadget_author> + <gadget_description type='str'>Light monitor for tux droid</gadget_description> <gadget_version type='str'>0.0.1</gadget_version> - <gadget_description type='str'>Light monitor for tux droid</gadget_description> - <gadget_name type='str'>light_monitor</gadget_name> </about> Modified: software/gadgets/light_monitor/trunk/Light_monitor/settings.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/settings.xml 2007-10-15 12:05:10 UTC (rev 612) +++ software/gadgets/light_monitor/trunk/Light_monitor/settings.xml 2007-10-15 13:48:15 UTC (rev 613) @@ -10,22 +10,22 @@ <changeD_rad type='bool'>False</changeD_rad> <threshold type='float'>50.0</threshold> <decrease_rad type='bool'>False</decrease_rad> - <Sample type='float'>500.0</Sample> + <behavior_file_threshold type='NoneType'>None</behavior_file_threshold> <raise type='float'>10.0</raise> <changeU_rad type='bool'>False</changeU_rad> <threshold_notified type='bool'>False</threshold_notified> <config type='list'>[]</config> <behavior_file_change type='NoneType'>None</behavior_file_change> - <drop_rad type='bool'>True</drop_rad> <raise_rad type='bool'>False</raise_rad> <changeD type='float'>10.0</changeD> <drop_time type='float'>1.0</drop_time> <changeU type='float'>10.0</changeU> <raise_time type='float'>1.0</raise_time> <drop type='float'>10.0</drop> + <drop_rad type='bool'>True</drop_rad> <MainScript type='str'> </MainScript> - <behavior_file_threshold type='NoneType'>None</behavior_file_threshold> + <Sample type='float'>500.0</Sample> <threshold_chk type='bool'>False</threshold_chk> <Rate type='float'>0.1</Rate> <changeD_time type='float'>1.0</changeD_time> Modified: software/gadgets/light_monitor/trunk/Light_monitor/strings.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/strings.xml 2007-10-15 12:05:10 UTC (rev 612) +++ software/gadgets/light_monitor/trunk/Light_monitor/strings.xml 2007-10-15 13:48:15 UTC (rev 613) @@ -4,13 +4,15 @@ <conf_lblThreshold type='str'>Threshold</conf_lblThreshold> <gui_conf_remote_title type='str'>Control</gui_conf_remote_title> <conf_lblRaise type='str'>Raise</conf_lblRaise> - <power_supply type='str'>You must disconnect the power supply</power_supply> + <widget_lblTest type='str'>Notifications</widget_lblTest> <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> <conf_lblEvent type='str'>Event</conf_lblEvent> <widget_lblControl type='str'>Control</widget_lblControl> <gui_conf_accept_bt type='str'>Accept</gui_conf_accept_bt> + <speaker_name type='str'>Ryan8k</speaker_name> <help_text type='str'> </help_text> + <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <conf_lblChange type='str'>Change</conf_lblChange> <conf_lblBoth type='str'>Both</conf_lblBoth> <widget_lblBtnApply type='str'>Apply changes</widget_lblBtnApply> @@ -20,19 +22,17 @@ <gui_conf_update_title type='str'>Update</gui_conf_update_title> <widget_lblValue type='str'>Value (%)</widget_lblValue> <gui_conf_cancel_bt type='str'>Cancel</gui_conf_cancel_bt> - <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <widget_lblBoth type='str'>Both direction</widget_lblBoth> <mainscript type='str'>I've found the light !</mainscript> - <conf_btnRemove type='str'>Remove</conf_btnRemove> <gui_conf_delay_lb type='str'>Delay (sec)</gui_conf_delay_lb> <conf_btnBehavior type='str'>Clear path</conf_btnBehavior> <gui_conf_about_title type='str'>About</gui_conf_about_title> <conf_lblChangeD type='str'>Drop and raise</conf_lblChangeD> - <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> - <speaker_name type='str'>Ryan8k</speaker_name> + <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> + <power_supply type='str'>You must disconnect the power supply</power_supply> <conf_lblSample type='str'>Samples</conf_lblSample> <conf_lblType type='str'>Type</conf_lblType> <widget_lblDisplayThreshold type='str'>Display threshold on graph</widget_lblDisplayThreshold> - <widget_lblDark type='str'>Search darkness</widget_lblDark> <conf_btnModify type='str'>Modify</conf_btnModify> <widget_lblEvent type='str'>Event</widget_lblEvent> <widget_lblNotified type='str'>Notified</widget_lblNotified> @@ -45,25 +45,26 @@ <conf_lblNotifiedBehavior type='str'>Notified</conf_lblNotifiedBehavior> <gui_conf_author_lb type='str'>Author</gui_conf_author_lb> <widget_lblDrop type='str'>Drop</widget_lblDrop> - <MainBehavior type='str'>Main behavior</MainBehavior> - <widget_lblBoth type='str'>Both direction</widget_lblBoth> + <conf_lblNotified type='str'>Notified ?</conf_lblNotified> + <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> - <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> + <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> + <search type='str'>I seek ...</search> <widget_lblChange type='str'>Change</widget_lblChange> <widget_lblLight type='str'>Search light</widget_lblLight> <name_to_read type='str'>Light monitor</name_to_read> <conf_lblNotNotified type='str'>Not notified</conf_lblNotNotified> <conf_lblDrop type='str'>Drop</conf_lblDrop> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <conf_lblNotified type='str'>Notified ?</conf_lblNotified> + <widget_lblDark type='str'>Search darkness</widget_lblDark> <widget_lblSet type='str'>Add to config</widget_lblSet> <conf_lblValue type='str'>Value (%)</conf_lblValue> <conf_lblRate type='str'>Refresh rate</conf_lblRate> <widget_lblBehavior type='str'>Enable behavior script</widget_lblBehavior> - <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> + <MainBehavior type='str'>Main behavior</MainBehavior> <conf_lblTime type='str'>Time (sec.)</conf_lblTime> <conf_lblControl type='str'>Control</conf_lblControl> - <widget_lblTest type='str'>Notifications</widget_lblTest> + <conf_btnRemove type='str'>Remove</conf_btnRemove> <widget_lblThreshold type='str'>Threshold</widget_lblThreshold> </strings> Modified: software/gadgets/light_monitor/trunk/Light_monitor.tgf =================================================================== (Binary files differ) |
From: Paul_R <c2m...@c2...> - 2007-10-15 12:05:40
|
Author: Paul_R Date: 2007-10-15 14:05:10 +0200 (Mon, 15 Oct 2007) New Revision: 612 Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml Log: * Added two line in the graph to indicate the max and min limits Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf =================================================================== (Binary files differ) Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py 2007-10-15 09:33:39 UTC (rev 611) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py 2007-10-15 12:05:10 UTC (rev 612) @@ -37,6 +37,7 @@ self.draw_space() self.draw_hor_div() self.draw_ver_div() + self.draw_threshold() self.draw_label() self.draw_curve() @@ -92,6 +93,28 @@ txt = str('%.2f' % txt) self.context.show_text(str(txt) + " min.") self.context.stroke() + + def draw_threshold(self): + coeff_y = float(self.rect.height / self.measure_graph.RANGE) + + y = self.measure_graph.convert_value([0, 1, 0, 4.625]) + y = (y * 3.4) + + self.context.set_source_rgb(0.8, 0, 0) + self.context.set_line_width(1) + + self.context.move_to(self.rect.width, self.rect.height - y * coeff_y) + self.context.line_to(0, self.rect.height - y * coeff_y) + self.context.stroke() + + y = self.measure_graph.convert_value([0, 1, 0, 6.25]) + y = (y * 3.4) + self.context.set_source_rgb(0, 0.8, 0) + self.context.set_line_width(1) + self.context.move_to(self.rect.width, self.rect.height - y * coeff_y) + self.context.line_to(0, self.rect.height - y * coeff_y) + + self.context.stroke() def draw_label(self): #display sample and rate @@ -127,13 +150,13 @@ temp_event = 0 for i, val in enumerate(self.measure_graph.val_table): self.context.line_to(self.rect.x + ((i) * coeff_x), self.rect.height - (val * coeff_y)) + if self.measure_graph.val_table_event[i] == 0: self.draw_circle(self.rect.x + ((i) * coeff_x), self.rect.height - (val * coeff_y), [0.2, 0.2, 0.7]) if self.measure_graph.val_table_event[i] == 1: self.draw_square(self.rect.x + ((i) * coeff_x), self.rect.height - (val * coeff_y), [0.2, 0.2, 0.7]) if self.measure_graph.val_table_event[i] == 2: - self.draw_triangle(self.rect.x + ((i) * coeff_x), self.rect.height - (val * coeff_y), [0.2, 0.2, 0.7]) - + self.draw_triangle(self.rect.x + ((i) * coeff_x), self.rect.height - (val * coeff_y), [0.2, 0.2, 0.7]) self.context.line_to(self.rect.x + ((i) * coeff_x), self.rect.height + 5) self.context.stroke() @@ -158,7 +181,6 @@ self.context.move_to(x, y) self.context.set_source_rgb(0, 0, 1) - def draw_circle(self, x, y, color): self.context.stroke() self.context.set_source_rgb(color[0], color[1], color[2]) @@ -166,9 +188,8 @@ self.context.close_path() self.context.fill() self.context.move_to(x, y) - self.context.set_source_rgb(0, 0, 1) + self.context.set_source_rgb(0, 0, 1) - def fill(self, coeff_x, coeff_y): #determine the coefficients to adjust the curve in the window space #Fill... @@ -270,8 +291,7 @@ def absolute_threshold(self): if self.absolute_threshold_flag == False: - val = self.convert_value([0, 1, 0, 4.6]) - + val = self.convert_value([0, 1, 0, 4.625]) val_act = (self.val_table[len(self.val_table)-1]*100) / self.RANGE val_prev = (self.val_table[len(self.val_table)-2]*100) / self.RANGE if val_prev >= val and val_act < val: @@ -471,6 +491,7 @@ else: val = self.average / self.count val = val - 530 + print val charger_event = -1 #Event control Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-15 09:33:39 UTC (rev 611) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-15 12:05:10 UTC (rev 612) @@ -33,7 +33,7 @@ <widget_lblValue type='str'>Valeur (V)</widget_lblValue> <speaker_name type='str'>Bruno8k</speaker_name> <conf_lblSample type='str'>Points</conf_lblSample> - <conf_lblType type='str'>Type</conf_lblType> + <charging type='str'>En charge</charging> <widget_lblDisplayThreshold type='str'>Afficher le seuil sur le graph.</widget_lblDisplayThreshold> <conf_btnModify type='str'>Modifier</conf_btnModify> <widget_lblEvent type='str'>Evènement</widget_lblEvent> @@ -58,7 +58,7 @@ <conf_lblNotNotified type='str'>Non notifié</conf_lblNotNotified> <conf_lblDrop type='str'>Chute</conf_lblDrop> <gui_conf_window_title type='str'>Paramètres</gui_conf_window_title> - <charging type='str'>En charge</charging> + <conf_lblType type='str'>Type</conf_lblType> <widget_lblSet type='str'>Ajouter a la config.</widget_lblSet> <conf_lblValue type='str'>Valeur (V)</conf_lblValue> <conf_lblRate type='str'>Taux de rafraichissement</conf_lblRate> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-15 09:33:39 UTC (rev 611) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-15 12:05:10 UTC (rev 612) @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <about> + <gadget_author type='str'>Paul Rathgeb</gadget_author> + <gadget_version type='str'>0.0.1</gadget_version> <gadget_description type='str'>Battery monitor for tux droid</gadget_description> - <gadget_author type='str'>Paul Rathgeb</gadget_author> <gadget_name type='str'>battery_monitor</gadget_name> - <gadget_version type='str'>0.0.1</gadget_version> </about> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-15 09:33:39 UTC (rev 611) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-15 12:05:10 UTC (rev 612) @@ -1,11 +1,11 @@ <?xml version='1.0' encoding='UTF-8'?> <settings> <parameters> - <test_tab type='list'>[[1, 0, 0, 0.10000000000000001, 20.0, True, 'None', False, 0]]</test_tab> + <Sample type='float'>600.0</Sample> <chkMotors type='bool'>True</chkMotors> <MainScript type='str'>None</MainScript> - <Sample type='float'>600.0</Sample> - <Rate type='float'>1.0</Rate> + <test_tab type='list'>[[1, 0, 0, 0.10000000000000001, 20.0, True, 'None', False, 0]]</test_tab> + <Rate type='float'>10.0</Rate> <config type='list'>[]</config> </parameters> <general> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-15 09:33:39 UTC (rev 611) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-15 12:05:10 UTC (rev 612) @@ -5,16 +5,12 @@ <gui_conf_remote_title type='str'>Control</gui_conf_remote_title> <battery type='str'>On battery</battery> <conf_lblRaise type='str'>Raise</conf_lblRaise> - <widget_lblTest type='str'>Notifications</widget_lblTest> <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> <conf_lblEvent type='str'>Event</conf_lblEvent> <widget_lblControl type='str'>Control</widget_lblControl> <gui_conf_accept_bt type='str'>Accept</gui_conf_accept_bt> - <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> - <lblMotors type='str'>Disable measure when the motors are running</lblMotors> <help_text type='str'> </help_text> - <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <conf_lblChange type='str'>Change</conf_lblChange> <conf_lblBoth type='str'>Both</conf_lblBoth> <widget_lblBtnApply type='str'>Apply changes</widget_lblBtnApply> @@ -25,13 +21,16 @@ <widget_lblValue type='str'>Value (V)</widget_lblValue> <gui_conf_cancel_bt type='str'>Cancel</gui_conf_cancel_bt> <widget_lblBoth type='str'>Both direction</widget_lblBoth> + <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <conf_lblType type='str'>Type</conf_lblType> <mainscript type='str'>I've found the light !</mainscript> + <conf_btnRemove type='str'>Remove</conf_btnRemove> <gui_conf_delay_lb type='str'>Delay (sec)</gui_conf_delay_lb> <plugged type='str'>Plugged</plugged> <conf_btnBehavior type='str'>Clear path</conf_btnBehavior> <gui_conf_about_title type='str'>About</gui_conf_about_title> <conf_lblChangeD type='str'>Drop and raise</conf_lblChangeD> - <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> + <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> <speaker_name type='str'>Ryan8k</speaker_name> <conf_lblSample type='str'>Samples</conf_lblSample> <charging type='str'>Charging</charging> @@ -48,24 +47,25 @@ <conf_lblNotifiedBehavior type='str'>Notified</conf_lblNotifiedBehavior> <gui_conf_author_lb type='str'>Author</gui_conf_author_lb> <widget_lblDrop type='str'>Drop</widget_lblDrop> - <conf_lblNotified type='str'>Notified ?</conf_lblNotified> - <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <MainBehavior type='str'>Main behavior</MainBehavior> + <absolute_threshold type='str'>Weak batteries </absolute_threshold> + <lblMotors type='str'>Disable measure when the motors are running</lblMotors> <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> - <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> - <absolute_threshold type='str'>Weak batteries </absolute_threshold> + <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> + <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <widget_lblChange type='str'>Change</widget_lblChange> <name_to_read type='str'>Battery monitor</name_to_read> <conf_lblNotNotified type='str'>Not notified</conf_lblNotNotified> <conf_lblDrop type='str'>Drop</conf_lblDrop> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <conf_lblType type='str'>Type</conf_lblType> + <conf_lblNotified type='str'>Notified ?</conf_lblNotified> <widget_lblSet type='str'>Add to config</widget_lblSet> <conf_lblValue type='str'>Value (V)</conf_lblValue> <conf_lblRate type='str'>Refresh rate</conf_lblRate> <widget_lblBehavior type='str'>Enable behavior script</widget_lblBehavior> - <MainBehavior type='str'>Main behavior</MainBehavior> + <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> <conf_lblTime type='str'>Time (sec.)</conf_lblTime> <conf_lblControl type='str'>Control</conf_lblControl> - <conf_btnRemove type='str'>Remove</conf_btnRemove> + <widget_lblTest type='str'>Notifications</widget_lblTest> <widget_lblThreshold type='str'>Threshold</widget_lblThreshold> </strings> |
From: Paul_R <c2m...@c2...> - 2007-10-15 09:34:14
|
Author: Paul_R Date: 2007-10-15 11:33:39 +0200 (Mon, 15 Oct 2007) New Revision: 611 Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/GUI/conf/other.glade software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/GUI/conf/other.pyp software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/init.pyp software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml Log: * Added a check box to skip the status when motors are running. In this case, the previous value is used. Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf =================================================================== (Binary files differ) Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py 2007-10-12 14:34:31 UTC (rev 610) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py 2007-10-15 09:33:39 UTC (rev 611) @@ -196,6 +196,7 @@ self.test_tab = [0] self.absolute_threshold_flag = False self.threshold_flag = False + self.chkMotors = False self.tick = time.time() + 1 @@ -444,8 +445,12 @@ def on_battery_level(self, args): try: self.__on_battery_mutex.acquire() - self.average += (args[0] * 256) + args[1] - self.count += 1 + + if not (self.chkMotors == True and args[2] == 1): + self.average += (args[0] * 256) + args[1] + self.count += 1 + + # Refresh the sample and rate value if self.sample_backup != self.sample: self.sample = self.sample_backup self.val_table = [-2] * int(self.sample) @@ -453,11 +458,20 @@ self.charger_event_backup = 3 if self.rate_backup != self.rate: self.rate_has_changed() - + + #control the time if self.tick <= time.time(): self.tick = time.time() + self.rate - val = self.average / self.count - val = val - 530 + + #If no value has been received, use the previous. + if self.count == 0: + val = self.val_table[len(self.val_table)-1] + + #Else, calcul the average + else: + val = self.average / self.count + val = val - 530 + charger_event = -1 #Event control if tux.status.power_plug(): @@ -471,14 +485,19 @@ self.charger_event_backup = charger_event else: charger_event = -1 + + #Add the new value in the table and reset all flags self.val_table.append(val) self.val_table.pop(0) self.val_table_event.append(charger_event) self.val_table_event.pop(0) self.average = 0 self.count = 0 + + #If widget GUI is displayed, refresh the graph. if self.GUI_on: self.graph_measure.refresh() + #And check for events self.event_control() self.__on_battery_mutex.release() except: Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/GUI/conf/other.glade =================================================================== (Binary files differ) Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/GUI/conf/other.pyp =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/GUI/conf/other.pyp 2007-10-12 14:34:31 UTC (rev 610) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/GUI/conf/other.pyp 2007-10-15 09:33:39 UTC (rev 611) @@ -124,12 +124,16 @@ self.get_widget('cbb_conf_event').set_active(0) self.get_widget('txt_conf_value').set_text('1.0') self.get_widget('txt_conf_time').set_text('0.1') + self.get_widget('chkMotors').set_label(_me.string('lblMotors')) + self.get_widget('chkMotors').set_active(_me.get_param('chkMotors')) + self.measure.chkMotors = _me.get_param('chkMotors') self.gadget_viewer.get_selection().connect("changed",self.on_row_selected) #self.gadget_viewer.connect("row_activated", self.on_row_selected) self.measure.event_tab = _me.get_param('config') self.get_widget('cbb_conf_event').append_text(_me.string('conf_lblChange')) self.get_widget('cbb_conf_event').append_text(_me.string('conf_lblThreshold')) self.get_widget('cbb_conf_event').set_active(0) + for i in range(len(self.measure.event_tab)): self.add_row(i) @@ -372,6 +376,8 @@ _me.set_param('Rate', float(self.get_widget('txt_conf_rate').get_text())) _me.set_param('Sample',float(self.get_widget('txt_conf_sample').get_text())) _me.set_param(('MainScript'), str(self.get_widget('mainScript').get_filename())) + _me.set_param(('chkMotors'), self.get_widget('chkMotors').get_active()) + self.measure.chkMotors = self.get_widget('chkMotors').get_active() self.measure.rate_backup = _me.get_param('Rate') self.measure.sample_backup = _me.get_param('Sample') Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/init.pyp =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/init.pyp 2007-10-12 14:34:31 UTC (rev 610) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/init.pyp 2007-10-15 09:33:39 UTC (rev 611) @@ -3,16 +3,15 @@ measure = Measure(float(_me.get_param('Sample')), float(_me.get_param('Rate'))) _me.set_param('measure', measure) -print 'test' + # update the sample and rate values -''' -if _me.get_param('Rate') != (0 or None or '') and float(_me.get_param('Rate')) != measure.rate: - measure.rate = float(_me.get_param('Rate')) - measure.rate_backup = measure.rate -if _me.get_param('Sample') != (0 or None or '' or '1') and float(_me.get_param('Sample')) != measure.sample: - measure.sample = float(_me.get_param('Sample')) - measure.sample_backup = measure.sample -''' + +measure.rate = float(_me.get_param('Rate')) +measure.rate_backup = measure.rate +measure.sample = float(_me.get_param('Sample')) +measure.sample_backup = measure.sample + +measure.chkMotors = _me.get_param('chkMotors') measure.event_tab = _me.get_param('config') measure.test_tab = _me.get_param('test_tab') monitor_id = tux.monitoring.insert(0x25, measure.on_battery_level) Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-12 14:34:31 UTC (rev 610) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-15 09:33:39 UTC (rev 611) @@ -21,6 +21,7 @@ <gui_conf_update_title type='str'>Mise à jour</gui_conf_update_title> <conf_lblChangeU type='str'>Augmente et chute</conf_lblChangeU> <gui_conf_cancel_bt type='str'>Annuler</gui_conf_cancel_bt> + <widget_lblBoth type='str'>Deux directions</widget_lblBoth> <gui_conf_rate_lb type='str'>Taux de rafraichissement :</gui_conf_rate_lb> <mainscript type='str'>J'ai trouvé la lumière !</mainscript> <conf_btnRemove type='str'>Enlever</conf_btnRemove> @@ -46,15 +47,13 @@ <conf_lblNotifiedBehavior type='str'>Notifié</conf_lblNotifiedBehavior> <gui_conf_author_lb type='str'>Auteur</gui_conf_author_lb> <widget_lblDrop type='str'>Chute</widget_lblDrop> - <conf_lblNotified type='str'>Notifié ?</conf_lblNotified> <MainBehavior type='str'>Comportement principal</MainBehavior> <absolute_threshold type='str'>Batteries faibles</absolute_threshold> - <widget_lblBoth type='str'>Deux directions</widget_lblBoth> + <lblMotors type='str'>Rejeter les mesures lorsque les moteurs fonctionnent</lblMotors> <conf_lblDefaultBehavior type='str'>Comportement pas défaut</conf_lblDefaultBehavior> <conf_lblBehavior type='str'>Comportement</conf_lblBehavior> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <widget_lblChange type='str'>Changement</widget_lblChange> - <widget_lblLight type='str'>Trouver lumière</widget_lblLight> <name_to_read type='str'>Moniteur de batteries</name_to_read> <conf_lblNotNotified type='str'>Non notifié</conf_lblNotNotified> <conf_lblDrop type='str'>Chute</conf_lblDrop> @@ -67,6 +66,6 @@ <widget_lblChangeD type='str'>Changement inf.</widget_lblChangeD> <conf_lblTime type='str'>Temps (sec.)</conf_lblTime> <conf_lblControl type='str'>Contrôle</conf_lblControl> - <widget_lblDark type='str'>Trouver ombre</widget_lblDark> + <conf_lblNotified type='str'>Notifié ?</conf_lblNotified> <widget_lblThreshold type='str'>Seuil</widget_lblThreshold> </strings> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-12 14:34:31 UTC (rev 610) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-15 09:33:39 UTC (rev 611) @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <about> + <gadget_description type='str'>Battery monitor for tux droid</gadget_description> + <gadget_author type='str'>Paul Rathgeb</gadget_author> <gadget_name type='str'>battery_monitor</gadget_name> - <gadget_author type='str'>Paul Rathgeb</gadget_author> - <gadget_description type='str'>Battery monitor for tux droid</gadget_description> <gadget_version type='str'>0.0.1</gadget_version> </about> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-12 14:34:31 UTC (rev 610) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-15 09:33:39 UTC (rev 611) @@ -2,23 +2,21 @@ <settings> <parameters> <test_tab type='list'>[[1, 0, 0, 0.10000000000000001, 20.0, True, 'None', False, 0]]</test_tab> - <config type='list'>[]</config> - <Rate type='float'>10.0</Rate> - <MainScript type='str'> - </MainScript> + <chkMotors type='bool'>True</chkMotors> + <MainScript type='str'>None</MainScript> <Sample type='float'>600.0</Sample> + <Rate type='float'>1.0</Rate> + <config type='list'>[]</config> </parameters> <general> <gui_state> <widget> - <y type='int'>317</y> + <y type='int'>336</y> <visible type='bool'>True</visible> - <x type='int'>0</x> + <x type='int'>506</x> </widget> <conf> - <y type='int'>131</y> - <visible type='bool'>True</visible> - <x type='int'>656</x> + <visible type='bool'>False</visible> </conf> </gui_state> <language type='str'>en_US</language> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-12 14:34:31 UTC (rev 610) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-15 09:33:39 UTC (rev 611) @@ -11,6 +11,7 @@ <widget_lblControl type='str'>Control</widget_lblControl> <gui_conf_accept_bt type='str'>Accept</gui_conf_accept_bt> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> + <lblMotors type='str'>Disable measure when the motors are running</lblMotors> <help_text type='str'> </help_text> <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> @@ -33,9 +34,8 @@ <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> <speaker_name type='str'>Ryan8k</speaker_name> <conf_lblSample type='str'>Samples</conf_lblSample> - <conf_lblType type='str'>Type</conf_lblType> + <charging type='str'>Charging</charging> <widget_lblDisplayThreshold type='str'>Display threshold on graph</widget_lblDisplayThreshold> - <widget_lblDark type='str'>Search darkness</widget_lblDark> <conf_btnModify type='str'>Modify</conf_btnModify> <widget_lblEvent type='str'>Event</widget_lblEvent> <widget_lblNotified type='str'>Notified</widget_lblNotified> @@ -54,12 +54,11 @@ <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> <absolute_threshold type='str'>Weak batteries </absolute_threshold> <widget_lblChange type='str'>Change</widget_lblChange> - <widget_lblLight type='str'>Search light</widget_lblLight> <name_to_read type='str'>Battery monitor</name_to_read> <conf_lblNotNotified type='str'>Not notified</conf_lblNotNotified> <conf_lblDrop type='str'>Drop</conf_lblDrop> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <charging type='str'>Charging</charging> + <conf_lblType type='str'>Type</conf_lblType> <widget_lblSet type='str'>Add to config</widget_lblSet> <conf_lblValue type='str'>Value (V)</conf_lblValue> <conf_lblRate type='str'>Refresh rate</conf_lblRate> |
From: Paul_R <c2m...@c2...> - 2007-10-12 14:34:40
|
Author: Paul_R Date: 2007-10-12 16:34:31 +0200 (Fri, 12 Oct 2007) New Revision: 610 Modified: software/gadgets/light_monitor/trunk/Light_monitor.tgf software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/GUI/widget/other.pyp software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/lightGraph_class.py software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/main.pyp software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/notify.pyp software/gadgets/light_monitor/trunk/Light_monitor/Strings/fr_ALL.xml software/gadgets/light_monitor/trunk/Light_monitor/about.xml software/gadgets/light_monitor/trunk/Light_monitor/settings.xml software/gadgets/light_monitor/trunk/Light_monitor/strings.xml Log: * Disabled the notifications when tux search light/dark * Added a message when the search_light/dark function activated, but the power plug is connected. Modified: software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/GUI/widget/other.pyp =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/GUI/widget/other.pyp 2007-10-12 13:43:10 UTC (rev 609) +++ software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/GUI/widget/other.pyp 2007-10-12 14:34:31 UTC (rev 610) @@ -104,25 +104,32 @@ _me.set_param('test_tab', self.light_measure.test_tab) def on_btnLight_clicked(self, widget, *args): - self.light_measure.val_table = [0] * int(self.light_measure.sample+1) - self.light_measure.light_search = True - self.light_measure.light_value = 3000 + if tux.status.power_plug() == 0: + self.light_measure.val_table = [0] * int(self.light_measure.sample+1) + self.light_measure.light_search = True + self.light_measure.light_value = 3000 self.config_light_search() def on_btnDark_clicked(self, widget, *args): - self.light_measure.val_table = [-1] * int(self.light_measure.sample+1) - self.light_measure.light_search = False - self.light_measure.light_value = 0 + if tux.status.power_plug() == 0: + self.light_measure.val_table = [-1] * int(self.light_measure.sample+1) + self.light_measure.light_search = False + self.light_measure.light_value = 0 self.config_light_search() def config_light_search(self): - self.light_measure.rate_backup = self.light_measure.rate - self.light_measure.rate = 0.1 - self.light_measure.search_light_flag = True - self.light_measure.light_search_state = 0 - self.light_measure.timer = 0 - self.light_measure.count = 0 - tux.cmd.spinl_on_free(8, 1) + if tux.status.power_plug(): + tux.cmd.mouth_open() + tux.tts.speak(_me.string('power_supply')) + tux.cmd.mouth_close() + else: + self.light_measure.rate_backup = self.light_measure.rate + self.light_measure.rate = 0.1 + self.light_measure.search_light_flag = True + self.light_measure.light_search_state = 0 + self.light_measure.timer = 0 + self.light_measure.count = 0 + tux.cmd.spinl_on_free(8, 1) def on_expander_activate(self, widget, *args): self.get_widget('txtValue').set_text(str(self.light_measure.test_tab[0][3])) Modified: software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/lightGraph_class.py =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/lightGraph_class.py 2007-10-12 13:43:10 UTC (rev 609) +++ software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/lightGraph_class.py 2007-10-12 14:34:31 UTC (rev 610) @@ -250,7 +250,11 @@ if timeout != 0: timeout -= 1 init_val = len(self.val_table) - 1 - int(time) + timeout - maximum = max(self.val_table[init_val:len(self.val_table)-1]) + try: + maximum = max(self.val_table[init_val:len(self.val_table)-1]) + except: + init_val = len(self.val_table) - 1 - int(time) + maximum = max(self.val_table[init_val:len(self.val_table)-1]) if maximum >= self.val_table[len(self.val_table)-1] + ((val/100)*1124): self.__tab[index][8] = int(time) @@ -262,7 +266,12 @@ if timeout != 0: timeout -= 1 init_val = len(self.val_table) - 1 - int(time) + timeout - minimum = min(self.val_table[init_val:(len(self.val_table)-1)]) + try: + minimum = min(self.val_table[init_val:(len(self.val_table)-1)]) + except: + init_val = len(self.val_table) - 1 - int(time) + minimum = min(self.val_table[init_val:(len(self.val_table)-1)]) + if minimum <= self.val_table[len(self.val_table)-1] - ((val/100)*1124): self.__tab[index][8] = int(time) return True @@ -273,7 +282,12 @@ if timeout != 0: timeout -= 1 init_val = len(self.val_table) - 1 - int(time) + timeout - maximum = max(self.val_table[init_val:len(self.val_table)-1]) + try: + maximum = max(self.val_table[init_val:len(self.val_table)-1]) + except: + init_val = len(self.val_table) - 1 - int(time) + maximum = max(self.val_table[init_val:len(self.val_table)-1]) + for i in range(int(time - timeout)): if self.val_table[int(len(self.val_table)-1-i)] <= self.val_table[len(self.val_table) - 1] - ((val/100)*1124): maximum = max(self.val_table[init_val:len(self.val_table) - i]) @@ -288,7 +302,12 @@ if timeout != 0: timeout -= 1 init_val = len(self.val_table) - 1 - int(time) + timeout - maximum = max(self.val_table[init_val:len(self.val_table)-1]) + try: + maximum = max(self.val_table[init_val:len(self.val_table)-1]) + except: + init_val = len(self.val_table) - 1 - int(time) + maximum = max(self.val_table[init_val:len(self.val_table)-1]) + for i in range(int(time - timeout)): if self.val_table[int(len(self.val_table)-1-i)] >= self.val_table[len(self.val_table) - 1] + ((val/100)*1124): minimum = min(self.val_table[init_val:len(self.val_table)-i]) @@ -330,27 +349,25 @@ # ########################################################### def on_light_level(self, args): - try: - self.__on_light_mutex.acquire() - if self.sample_backup != self.sample and self.search_light_flag == False: - self.sample = self.sample_backup - self.val_table = [-2] * int(self.sample) + self.__on_light_mutex.acquire() + if self.sample_backup != self.sample and self.search_light_flag == False: + self.sample = self.sample_backup + self.val_table = [-2] * int(self.sample) - if self.rate_backup != self.rate and self.search_light_flag == False: - self.rate_has_changed() - - if self.tick <= time.time(): - self.tick = time.time() + self.rate - val = (args[0] * 256) + args[1] - self.val_table.append(val) - self.val_table.pop(0) - if self.GUI_on: - self.light_graph_measure.refresh() - self.event_control() - self.__on_light_mutex.release() - except: - print sys.exc_info() + if self.rate_backup != self.rate and self.search_light_flag == False: + self.rate_has_changed() + + if self.tick <= time.time(): + self.tick = time.time() + self.rate + val = (args[0] * 256) + args[1] + self.val_table.append(val) + self.val_table.pop(0) + if self.GUI_on: + self.light_graph_measure.refresh() + self.event_control() + self.__on_light_mutex.release() + def rate_has_changed(self): self.rate = self.rate_backup pts_per_sec = self.sample / (self.rate * self.sample) Modified: software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/main.pyp =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/main.pyp 2007-10-12 13:43:10 UTC (rev 609) +++ software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/main.pyp 2007-10-12 14:34:31 UTC (rev 610) @@ -3,30 +3,35 @@ def run_function(): measure = _me.get_param('measure') - measure.val_table = [0] * int(measure.sample+1) - measure.light_search = True - measure.light_value = 3000 - measure.rate_backup = measure.rate - measure.rate = 0.1 - measure.search_light_flag = True - measure.light_search_state = 0 - measure.timer = 0 - measure.count = 0 - tux.cmd.spinl_on_free(8, 1) - count = 0 - while measure.search_light_flag: - pass - path = _me.get_param('MainScript') - path = path.replace('%20', ' ') - if os.path.isfile(path) and os.path.exists(path): - path = _me.get_param('MainScript') - path = "'%s'" % path - tux.sys.shell(path) - else: + if tux.status.power_plug(): tux.cmd.mouth_open() - txt = _me.string('mainscript') - tux.tts.speak(str(txt)) + tux.tts.speak(_me.string('power_supply')) tux.cmd.mouth_close() + else: + measure.val_table = [0] * int(measure.sample+1) + measure.light_search = True + measure.light_value = 3000 + measure.rate_backup = measure.rate + measure.rate = 0.1 + measure.search_light_flag = True + measure.light_search_state = 0 + measure.timer = 0 + measure.count = 0 + tux.cmd.spinl_on_free(8, 1) + count = 0 + while measure.search_light_flag: + pass + path = _me.get_param('MainScript') + path = path.replace('%20', ' ') + if os.path.isfile(path) and os.path.exists(path): + path = _me.get_param('MainScript') + path = "'%s'" % path + tux.sys.shell(path) + else: + tux.cmd.mouth_open() + txt = _me.string('mainscript') + tux.tts.speak(str(txt)) + tux.cmd.mouth_close() Modified: software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/notify.pyp =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/notify.pyp 2007-10-12 13:43:10 UTC (rev 609) +++ software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/notify.pyp 2007-10-12 14:34:31 UTC (rev 610) @@ -1,6 +1,6 @@ def notify_checker(): measure = _me.get_param('measure') - if measure.GUI_on == False: + if measure.GUI_on == False and measure.search_light_flag == False: for i in range(len(measure.event_tab)): temp = measure.event_tab[i][7] if temp == True: Modified: software/gadgets/light_monitor/trunk/Light_monitor/Strings/fr_ALL.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/Strings/fr_ALL.xml 2007-10-12 13:43:10 UTC (rev 609) +++ software/gadgets/light_monitor/trunk/Light_monitor/Strings/fr_ALL.xml 2007-10-12 14:34:31 UTC (rev 610) @@ -9,6 +9,7 @@ <conf_lblEvent type='str'>Evènement</conf_lblEvent> <widget_lblControl type='str'>Contrôle</widget_lblControl> <gui_conf_accept_bt type='str'>Valider</gui_conf_accept_bt> + <speaker_name type='str'>Bruno8k</speaker_name> <help_text type='str'> </help_text> <conf_lblChange type='str'>Changement</conf_lblChange> @@ -28,7 +29,7 @@ <gui_conf_about_title type='str'>A propos</gui_conf_about_title> <conf_lblChangeD type='str'>Chute et augmente</conf_lblChangeD> <widget_lblValue type='str'>Valeur (%)</widget_lblValue> - <speaker_name type='str'>Bruno8k</speaker_name> + <power_supply type='str'>Vous devez deconnecter l'alimentation</power_supply> <conf_lblSample type='str'>Points</conf_lblSample> <conf_lblType type='str'>Type</conf_lblType> <widget_lblDisplayThreshold type='str'>Afficher le seuil sur le graph.</widget_lblDisplayThreshold> Modified: software/gadgets/light_monitor/trunk/Light_monitor/about.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/about.xml 2007-10-12 13:43:10 UTC (rev 609) +++ software/gadgets/light_monitor/trunk/Light_monitor/about.xml 2007-10-12 14:34:31 UTC (rev 610) @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <about> - <gadget_name type='str'>light_monitor</gadget_name> <gadget_author type='str'>Paul Rathgeb</gadget_author> + <gadget_version type='str'>0.0.1</gadget_version> <gadget_description type='str'>Light monitor for tux droid</gadget_description> - <gadget_version type='str'>0.0.1</gadget_version> + <gadget_name type='str'>light_monitor</gadget_name> </about> Modified: software/gadgets/light_monitor/trunk/Light_monitor/settings.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/settings.xml 2007-10-12 13:43:10 UTC (rev 609) +++ software/gadgets/light_monitor/trunk/Light_monitor/settings.xml 2007-10-12 14:34:31 UTC (rev 610) @@ -10,22 +10,22 @@ <changeD_rad type='bool'>False</changeD_rad> <threshold type='float'>50.0</threshold> <decrease_rad type='bool'>False</decrease_rad> - <behavior_file_threshold type='NoneType'>None</behavior_file_threshold> + <Sample type='float'>500.0</Sample> <raise type='float'>10.0</raise> <changeU_rad type='bool'>False</changeU_rad> <threshold_notified type='bool'>False</threshold_notified> <config type='list'>[]</config> <behavior_file_change type='NoneType'>None</behavior_file_change> + <drop_rad type='bool'>True</drop_rad> <raise_rad type='bool'>False</raise_rad> <changeD type='float'>10.0</changeD> <drop_time type='float'>1.0</drop_time> <changeU type='float'>10.0</changeU> <raise_time type='float'>1.0</raise_time> <drop type='float'>10.0</drop> - <drop_rad type='bool'>True</drop_rad> <MainScript type='str'> </MainScript> - <Sample type='float'>500.0</Sample> + <behavior_file_threshold type='NoneType'>None</behavior_file_threshold> <threshold_chk type='bool'>False</threshold_chk> <Rate type='float'>0.1</Rate> <changeD_time type='float'>1.0</changeD_time> Modified: software/gadgets/light_monitor/trunk/Light_monitor/strings.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/strings.xml 2007-10-12 13:43:10 UTC (rev 609) +++ software/gadgets/light_monitor/trunk/Light_monitor/strings.xml 2007-10-12 14:34:31 UTC (rev 610) @@ -4,14 +4,13 @@ <conf_lblThreshold type='str'>Threshold</conf_lblThreshold> <gui_conf_remote_title type='str'>Control</gui_conf_remote_title> <conf_lblRaise type='str'>Raise</conf_lblRaise> - <widget_lblTest type='str'>Notifications</widget_lblTest> + <power_supply type='str'>You must disconnect the power supply</power_supply> <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> <conf_lblEvent type='str'>Event</conf_lblEvent> <widget_lblControl type='str'>Control</widget_lblControl> <gui_conf_accept_bt type='str'>Accept</gui_conf_accept_bt> <help_text type='str'> </help_text> - <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <conf_lblChange type='str'>Change</conf_lblChange> <conf_lblBoth type='str'>Both</conf_lblBoth> <widget_lblBtnApply type='str'>Apply changes</widget_lblBtnApply> @@ -21,17 +20,19 @@ <gui_conf_update_title type='str'>Update</gui_conf_update_title> <widget_lblValue type='str'>Value (%)</widget_lblValue> <gui_conf_cancel_bt type='str'>Cancel</gui_conf_cancel_bt> - <widget_lblBoth type='str'>Both direction</widget_lblBoth> + <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> <mainscript type='str'>I've found the light !</mainscript> + <conf_btnRemove type='str'>Remove</conf_btnRemove> <gui_conf_delay_lb type='str'>Delay (sec)</gui_conf_delay_lb> <conf_btnBehavior type='str'>Clear path</conf_btnBehavior> <gui_conf_about_title type='str'>About</gui_conf_about_title> <conf_lblChangeD type='str'>Drop and raise</conf_lblChangeD> - <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> + <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> <speaker_name type='str'>Ryan8k</speaker_name> <conf_lblSample type='str'>Samples</conf_lblSample> <conf_lblType type='str'>Type</conf_lblType> <widget_lblDisplayThreshold type='str'>Display threshold on graph</widget_lblDisplayThreshold> + <widget_lblDark type='str'>Search darkness</widget_lblDark> <conf_btnModify type='str'>Modify</conf_btnModify> <widget_lblEvent type='str'>Event</widget_lblEvent> <widget_lblNotified type='str'>Notified</widget_lblNotified> @@ -44,10 +45,10 @@ <conf_lblNotifiedBehavior type='str'>Notified</conf_lblNotifiedBehavior> <gui_conf_author_lb type='str'>Author</gui_conf_author_lb> <widget_lblDrop type='str'>Drop</widget_lblDrop> - <conf_lblNotified type='str'>Notified ?</conf_lblNotified> - <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <MainBehavior type='str'>Main behavior</MainBehavior> + <widget_lblBoth type='str'>Both direction</widget_lblBoth> <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> - <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> + <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <widget_lblChange type='str'>Change</widget_lblChange> <widget_lblLight type='str'>Search light</widget_lblLight> @@ -55,14 +56,14 @@ <conf_lblNotNotified type='str'>Not notified</conf_lblNotNotified> <conf_lblDrop type='str'>Drop</conf_lblDrop> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <widget_lblDark type='str'>Search darkness</widget_lblDark> + <conf_lblNotified type='str'>Notified ?</conf_lblNotified> <widget_lblSet type='str'>Add to config</widget_lblSet> <conf_lblValue type='str'>Value (%)</conf_lblValue> <conf_lblRate type='str'>Refresh rate</conf_lblRate> <widget_lblBehavior type='str'>Enable behavior script</widget_lblBehavior> - <MainBehavior type='str'>Main behavior</MainBehavior> + <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> <conf_lblTime type='str'>Time (sec.)</conf_lblTime> <conf_lblControl type='str'>Control</conf_lblControl> - <conf_btnRemove type='str'>Remove</conf_btnRemove> + <widget_lblTest type='str'>Notifications</widget_lblTest> <widget_lblThreshold type='str'>Threshold</widget_lblThreshold> </strings> Modified: software/gadgets/light_monitor/trunk/Light_monitor.tgf =================================================================== (Binary files differ) |
From: Paul_R <c2m...@c2...> - 2007-10-12 13:43:12
|
Author: Paul_R Date: 2007-10-12 15:43:10 +0200 (Fri, 12 Oct 2007) New Revision: 609 Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/GUI/widget/other.pyp software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml Log: * Resolved a bug when the apply button was pressed on the widget GUI : The test_tab store in the gadget param was not good. Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf =================================================================== (Binary files differ) Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/GUI/widget/other.pyp =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/GUI/widget/other.pyp 2007-10-12 13:40:18 UTC (rev 608) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/GUI/widget/other.pyp 2007-10-12 13:43:10 UTC (rev 609) @@ -107,7 +107,7 @@ False, 0] self.measure.test_tab[0] = value - _me.set_param('test_tab', value) + _me.set_param('test_tab', self.measure.test_tab) Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-12 13:40:18 UTC (rev 608) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-12 13:43:10 UTC (rev 609) @@ -32,7 +32,7 @@ <widget_lblValue type='str'>Valeur (V)</widget_lblValue> <speaker_name type='str'>Bruno8k</speaker_name> <conf_lblSample type='str'>Points</conf_lblSample> - <charging type='str'>En charge</charging> + <conf_lblType type='str'>Type</conf_lblType> <widget_lblDisplayThreshold type='str'>Afficher le seuil sur le graph.</widget_lblDisplayThreshold> <conf_btnModify type='str'>Modifier</conf_btnModify> <widget_lblEvent type='str'>Evènement</widget_lblEvent> @@ -59,7 +59,7 @@ <conf_lblNotNotified type='str'>Non notifié</conf_lblNotNotified> <conf_lblDrop type='str'>Chute</conf_lblDrop> <gui_conf_window_title type='str'>Paramètres</gui_conf_window_title> - <conf_lblType type='str'>Type</conf_lblType> + <charging type='str'>En charge</charging> <widget_lblSet type='str'>Ajouter a la config.</widget_lblSet> <conf_lblValue type='str'>Valeur (V)</conf_lblValue> <conf_lblRate type='str'>Taux de rafraichissement</conf_lblRate> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-12 13:40:18 UTC (rev 608) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-12 13:43:10 UTC (rev 609) @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <about> + <gadget_name type='str'>battery_monitor</gadget_name> <gadget_author type='str'>Paul Rathgeb</gadget_author> + <gadget_description type='str'>Battery monitor for tux droid</gadget_description> <gadget_version type='str'>0.0.1</gadget_version> - <gadget_description type='str'>Battery monitor for tux droid</gadget_description> - <gadget_name type='str'>battery_monitor</gadget_name> </about> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-12 13:40:18 UTC (rev 608) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-12 13:43:10 UTC (rev 609) @@ -2,10 +2,10 @@ <settings> <parameters> <test_tab type='list'>[[1, 0, 0, 0.10000000000000001, 20.0, True, 'None', False, 0]]</test_tab> + <config type='list'>[]</config> + <Rate type='float'>10.0</Rate> <MainScript type='str'> </MainScript> - <Rate type='float'>10.0</Rate> - <config type='list'>[]</config> <Sample type='float'>600.0</Sample> </parameters> <general> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-12 13:40:18 UTC (rev 608) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-12 13:43:10 UTC (rev 609) @@ -5,12 +5,15 @@ <gui_conf_remote_title type='str'>Control</gui_conf_remote_title> <battery type='str'>On battery</battery> <conf_lblRaise type='str'>Raise</conf_lblRaise> + <widget_lblTest type='str'>Notifications</widget_lblTest> <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> <conf_lblEvent type='str'>Event</conf_lblEvent> <widget_lblControl type='str'>Control</widget_lblControl> <gui_conf_accept_bt type='str'>Accept</gui_conf_accept_bt> + <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <help_text type='str'> </help_text> + <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <conf_lblChange type='str'>Change</conf_lblChange> <conf_lblBoth type='str'>Both</conf_lblBoth> <widget_lblBtnApply type='str'>Apply changes</widget_lblBtnApply> @@ -20,20 +23,19 @@ <gui_conf_update_title type='str'>Update</gui_conf_update_title> <widget_lblValue type='str'>Value (V)</widget_lblValue> <gui_conf_cancel_bt type='str'>Cancel</gui_conf_cancel_bt> - <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> - <conf_lblType type='str'>Type</conf_lblType> + <widget_lblBoth type='str'>Both direction</widget_lblBoth> <mainscript type='str'>I've found the light !</mainscript> - <conf_btnRemove type='str'>Remove</conf_btnRemove> <gui_conf_delay_lb type='str'>Delay (sec)</gui_conf_delay_lb> <plugged type='str'>Plugged</plugged> <conf_btnBehavior type='str'>Clear path</conf_btnBehavior> <gui_conf_about_title type='str'>About</gui_conf_about_title> <conf_lblChangeD type='str'>Drop and raise</conf_lblChangeD> - <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> + <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> <speaker_name type='str'>Ryan8k</speaker_name> <conf_lblSample type='str'>Samples</conf_lblSample> - <charging type='str'>Charging</charging> + <conf_lblType type='str'>Type</conf_lblType> <widget_lblDisplayThreshold type='str'>Display threshold on graph</widget_lblDisplayThreshold> + <widget_lblDark type='str'>Search darkness</widget_lblDark> <conf_btnModify type='str'>Modify</conf_btnModify> <widget_lblEvent type='str'>Event</widget_lblEvent> <widget_lblNotified type='str'>Notified</widget_lblNotified> @@ -47,26 +49,24 @@ <gui_conf_author_lb type='str'>Author</gui_conf_author_lb> <widget_lblDrop type='str'>Drop</widget_lblDrop> <conf_lblNotified type='str'>Notified ?</conf_lblNotified> - <MainBehavior type='str'>Main behavior</MainBehavior> + <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> + <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> <absolute_threshold type='str'>Weak batteries </absolute_threshold> - <widget_lblBoth type='str'>Both direction</widget_lblBoth> - <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> - <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> - <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <widget_lblChange type='str'>Change</widget_lblChange> <widget_lblLight type='str'>Search light</widget_lblLight> <name_to_read type='str'>Battery monitor</name_to_read> <conf_lblNotNotified type='str'>Not notified</conf_lblNotNotified> <conf_lblDrop type='str'>Drop</conf_lblDrop> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <widget_lblDark type='str'>Search darkness</widget_lblDark> + <charging type='str'>Charging</charging> <widget_lblSet type='str'>Add to config</widget_lblSet> <conf_lblValue type='str'>Value (V)</conf_lblValue> <conf_lblRate type='str'>Refresh rate</conf_lblRate> <widget_lblBehavior type='str'>Enable behavior script</widget_lblBehavior> - <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> + <MainBehavior type='str'>Main behavior</MainBehavior> <conf_lblTime type='str'>Time (sec.)</conf_lblTime> <conf_lblControl type='str'>Control</conf_lblControl> - <widget_lblTest type='str'>Notifications</widget_lblTest> + <conf_btnRemove type='str'>Remove</conf_btnRemove> <widget_lblThreshold type='str'>Threshold</widget_lblThreshold> </strings> |
From: Paul_R <c2m...@c2...> - 2007-10-12 13:40:21
|
Author: Paul_R Date: 2007-10-12 15:40:18 +0200 (Fri, 12 Oct 2007) New Revision: 608 Modified: software/gadgets/light_monitor/trunk/Light_monitor.tgf software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/GUI/widget/other.pyp software/gadgets/light_monitor/trunk/Light_monitor/about.xml software/gadgets/light_monitor/trunk/Light_monitor/settings.xml software/gadgets/light_monitor/trunk/Light_monitor/strings.xml Log: * Resolved a bug when the apply button was pressed on the widget GUI : The test_tab store in the gadget param was not good. Modified: software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/GUI/widget/other.pyp =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/GUI/widget/other.pyp 2007-10-12 12:27:15 UTC (rev 607) +++ software/gadgets/light_monitor/trunk/Light_monitor/Scripts/Python/GUI/widget/other.pyp 2007-10-12 13:40:18 UTC (rev 608) @@ -101,7 +101,7 @@ False, 0] self.light_measure.test_tab[0] = value - _me.set_param('test_tab', value) + _me.set_param('test_tab', self.light_measure.test_tab) def on_btnLight_clicked(self, widget, *args): self.light_measure.val_table = [0] * int(self.light_measure.sample+1) Modified: software/gadgets/light_monitor/trunk/Light_monitor/about.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/about.xml 2007-10-12 12:27:15 UTC (rev 607) +++ software/gadgets/light_monitor/trunk/Light_monitor/about.xml 2007-10-12 13:40:18 UTC (rev 608) @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <about> + <gadget_name type='str'>light_monitor</gadget_name> <gadget_author type='str'>Paul Rathgeb</gadget_author> + <gadget_description type='str'>Light monitor for tux droid</gadget_description> <gadget_version type='str'>0.0.1</gadget_version> - <gadget_description type='str'>Light monitor for tux droid</gadget_description> - <gadget_name type='str'>light_monitor</gadget_name> </about> Modified: software/gadgets/light_monitor/trunk/Light_monitor/settings.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/settings.xml 2007-10-12 12:27:15 UTC (rev 607) +++ software/gadgets/light_monitor/trunk/Light_monitor/settings.xml 2007-10-12 13:40:18 UTC (rev 608) @@ -10,22 +10,22 @@ <changeD_rad type='bool'>False</changeD_rad> <threshold type='float'>50.0</threshold> <decrease_rad type='bool'>False</decrease_rad> - <Sample type='float'>500.0</Sample> + <behavior_file_threshold type='NoneType'>None</behavior_file_threshold> <raise type='float'>10.0</raise> <changeU_rad type='bool'>False</changeU_rad> <threshold_notified type='bool'>False</threshold_notified> <config type='list'>[]</config> <behavior_file_change type='NoneType'>None</behavior_file_change> - <drop_rad type='bool'>True</drop_rad> <raise_rad type='bool'>False</raise_rad> <changeD type='float'>10.0</changeD> <drop_time type='float'>1.0</drop_time> <changeU type='float'>10.0</changeU> <raise_time type='float'>1.0</raise_time> <drop type='float'>10.0</drop> + <drop_rad type='bool'>True</drop_rad> <MainScript type='str'> </MainScript> - <behavior_file_threshold type='NoneType'>None</behavior_file_threshold> + <Sample type='float'>500.0</Sample> <threshold_chk type='bool'>False</threshold_chk> <Rate type='float'>0.1</Rate> <changeD_time type='float'>1.0</changeD_time> Modified: software/gadgets/light_monitor/trunk/Light_monitor/strings.xml =================================================================== --- software/gadgets/light_monitor/trunk/Light_monitor/strings.xml 2007-10-12 12:27:15 UTC (rev 607) +++ software/gadgets/light_monitor/trunk/Light_monitor/strings.xml 2007-10-12 13:40:18 UTC (rev 608) @@ -4,12 +4,14 @@ <conf_lblThreshold type='str'>Threshold</conf_lblThreshold> <gui_conf_remote_title type='str'>Control</gui_conf_remote_title> <conf_lblRaise type='str'>Raise</conf_lblRaise> + <widget_lblTest type='str'>Notifications</widget_lblTest> <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> <conf_lblEvent type='str'>Event</conf_lblEvent> <widget_lblControl type='str'>Control</widget_lblControl> <gui_conf_accept_bt type='str'>Accept</gui_conf_accept_bt> <help_text type='str'> </help_text> + <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <conf_lblChange type='str'>Change</conf_lblChange> <conf_lblBoth type='str'>Both</conf_lblBoth> <widget_lblBtnApply type='str'>Apply changes</widget_lblBtnApply> @@ -19,19 +21,17 @@ <gui_conf_update_title type='str'>Update</gui_conf_update_title> <widget_lblValue type='str'>Value (%)</widget_lblValue> <gui_conf_cancel_bt type='str'>Cancel</gui_conf_cancel_bt> - <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <widget_lblBoth type='str'>Both direction</widget_lblBoth> <mainscript type='str'>I've found the light !</mainscript> - <conf_btnRemove type='str'>Remove</conf_btnRemove> <gui_conf_delay_lb type='str'>Delay (sec)</gui_conf_delay_lb> <conf_btnBehavior type='str'>Clear path</conf_btnBehavior> <gui_conf_about_title type='str'>About</gui_conf_about_title> <conf_lblChangeD type='str'>Drop and raise</conf_lblChangeD> - <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> + <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> <speaker_name type='str'>Ryan8k</speaker_name> <conf_lblSample type='str'>Samples</conf_lblSample> <conf_lblType type='str'>Type</conf_lblType> <widget_lblDisplayThreshold type='str'>Display threshold on graph</widget_lblDisplayThreshold> - <widget_lblDark type='str'>Search darkness</widget_lblDark> <conf_btnModify type='str'>Modify</conf_btnModify> <widget_lblEvent type='str'>Event</widget_lblEvent> <widget_lblNotified type='str'>Notified</widget_lblNotified> @@ -44,10 +44,10 @@ <conf_lblNotifiedBehavior type='str'>Notified</conf_lblNotifiedBehavior> <gui_conf_author_lb type='str'>Author</gui_conf_author_lb> <widget_lblDrop type='str'>Drop</widget_lblDrop> - <MainBehavior type='str'>Main behavior</MainBehavior> - <widget_lblBoth type='str'>Both direction</widget_lblBoth> + <conf_lblNotified type='str'>Notified ?</conf_lblNotified> + <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> - <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> + <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <widget_lblChange type='str'>Change</widget_lblChange> <widget_lblLight type='str'>Search light</widget_lblLight> @@ -55,14 +55,14 @@ <conf_lblNotNotified type='str'>Not notified</conf_lblNotNotified> <conf_lblDrop type='str'>Drop</conf_lblDrop> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <conf_lblNotified type='str'>Notified ?</conf_lblNotified> + <widget_lblDark type='str'>Search darkness</widget_lblDark> <widget_lblSet type='str'>Add to config</widget_lblSet> <conf_lblValue type='str'>Value (%)</conf_lblValue> <conf_lblRate type='str'>Refresh rate</conf_lblRate> <widget_lblBehavior type='str'>Enable behavior script</widget_lblBehavior> - <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> + <MainBehavior type='str'>Main behavior</MainBehavior> <conf_lblTime type='str'>Time (sec.)</conf_lblTime> <conf_lblControl type='str'>Control</conf_lblControl> - <widget_lblTest type='str'>Notifications</widget_lblTest> + <conf_btnRemove type='str'>Remove</conf_btnRemove> <widget_lblThreshold type='str'>Threshold</widget_lblThreshold> </strings> Modified: software/gadgets/light_monitor/trunk/Light_monitor.tgf =================================================================== (Binary files differ) |
From: Paul_R <c2m...@c2...> - 2007-10-12 12:27:17
|
Author: Paul_R Date: 2007-10-12 14:27:15 +0200 (Fri, 12 Oct 2007) New Revision: 607 Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/notify.pyp software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml Log: * Added an absolute threshold to notify when the batteries are weak. Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf =================================================================== (Binary files differ) Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py 2007-10-12 09:44:16 UTC (rev 606) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py 2007-10-12 12:27:15 UTC (rev 607) @@ -194,7 +194,8 @@ self.val_table_event = [-1] * int(self.sample) self.charger_event_backup = 3 self.test_tab = [0] - + self.absolute_threshold_flag = False + self.threshold_flag = False self.tick = time.time() + 1 @@ -230,6 +231,9 @@ else: self.event_tab = self.__tab + self.threshold_flag = self.absolute_threshold() + + if self.GUI_on: #goto test notification every sec. if self.wait <= time.time(): @@ -257,7 +261,31 @@ value = (100 * (value)) / 2.5 return value + ########################################################### + # + # Absolute threshold control + # + ########################################################### + def absolute_threshold(self): + + if self.absolute_threshold_flag == False: + val = self.convert_value([0, 1, 0, 4.6]) + val_act = (self.val_table[len(self.val_table)-1]*100) / self.RANGE + val_prev = (self.val_table[len(self.val_table)-2]*100) / self.RANGE + if val_prev >= val and val_act < val: + self.absolute_threshold_flag = True + return True + else: + val = self.convert_value([0, 1, 0, 4.7]) + val_act = (self.val_table[len(self.val_table)-1]*100) / self.RANGE + val_prev = (self.val_table[len(self.val_table)-2]*100) / self.RANGE + if val_prev <= val and val_act > val: + self.absolute_threshold_flag = False + return False + + + ########################################################### # Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/notify.pyp =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/notify.pyp 2007-10-12 09:44:16 UTC (rev 606) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/notify.pyp 2007-10-12 12:27:15 UTC (rev 607) @@ -1,6 +1,8 @@ def notify_checker(): measure = _me.get_param('measure') - if measure.GUI_on == False: + if measure.threshold_flag == True: + return True + if measure.GUI_on == False: for i in range(len(measure.event_tab)): temp = measure.event_tab[i][7] if temp == True: @@ -13,39 +15,46 @@ def notify_actuator(): event = _me.get_param('measure').event_tab - for i in range(len(event)): - #create text to speach for the default notification - if event[i][1] == 0: - if event[i][2] == 0: - text = _me.string('conf_lblDrop') - elif event[i][2] == 1: - text = _me.string('conf_lblRaise') - elif event[i][2] == 2: - text = _me.string('conf_lblChangeD') - elif event[i][2] == 3: - text = _me.string('conf_lblChangeU') - else: - if event[i][2] == 0: - text = _me.string('conf_lblIncrease') - elif event[i][2] == 1: - text = _me.string('conf_lblDecrease') - elif event[i][2] == 2: - text = _me.string('conf_lblBoth') - - if event[i][7]: - if event[i][5]: - path = event[i][6] - path = path.replace('%20', ' ') - if os.path.isfile(path) and os.path.exists(path): - path = "'%s'" % path - tux.sys.shell_free(path) - event[i][7] = False + if _me.get_param('measure').threshold_flag == True: + _me.get_param('measure').threshold_flag = False + tux.cmd.mouth_open() + tux.tts.speak(_me.string('absolute_threshold')) + tux.cmd.mouth_close() + + else: + for i in range(len(event)): + #create text to speach for the default notification + if event[i][1] == 0: + if event[i][2] == 0: + text = _me.string('conf_lblDrop') + elif event[i][2] == 1: + text = _me.string('conf_lblRaise') + elif event[i][2] == 2: + text = _me.string('conf_lblChangeD') + elif event[i][2] == 3: + text = _me.string('conf_lblChangeU') + else: + if event[i][2] == 0: + text = _me.string('conf_lblIncrease') + elif event[i][2] == 1: + text = _me.string('conf_lblDecrease') + elif event[i][2] == 2: + text = _me.string('conf_lblBoth') + + if event[i][7]: + if event[i][5]: + path = event[i][6] + path = path.replace('%20', ' ') + if os.path.isfile(path) and os.path.exists(path): + path = "'%s'" % path + tux.sys.shell_free(path) + event[i][7] = False + else: + tux.cmd.mouth_open() + tux.tts.speak(text) + tux.cmd.mouth_close() + event[i][7] = False else: - tux.cmd.mouth_open() - tux.tts.speak(text) - tux.cmd.mouth_close() event[i][7] = False - else: - event[i][7] = False - break + break Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-12 09:44:16 UTC (rev 606) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-12 12:27:15 UTC (rev 607) @@ -32,7 +32,7 @@ <widget_lblValue type='str'>Valeur (V)</widget_lblValue> <speaker_name type='str'>Bruno8k</speaker_name> <conf_lblSample type='str'>Points</conf_lblSample> - <conf_lblType type='str'>Type</conf_lblType> + <charging type='str'>En charge</charging> <widget_lblDisplayThreshold type='str'>Afficher le seuil sur le graph.</widget_lblDisplayThreshold> <conf_btnModify type='str'>Modifier</conf_btnModify> <widget_lblEvent type='str'>Evènement</widget_lblEvent> @@ -48,6 +48,7 @@ <widget_lblDrop type='str'>Chute</widget_lblDrop> <conf_lblNotified type='str'>Notifié ?</conf_lblNotified> <MainBehavior type='str'>Comportement principal</MainBehavior> + <absolute_threshold type='str'>Batteries faibles</absolute_threshold> <widget_lblBoth type='str'>Deux directions</widget_lblBoth> <conf_lblDefaultBehavior type='str'>Comportement pas défaut</conf_lblDefaultBehavior> <conf_lblBehavior type='str'>Comportement</conf_lblBehavior> @@ -58,7 +59,7 @@ <conf_lblNotNotified type='str'>Non notifié</conf_lblNotNotified> <conf_lblDrop type='str'>Chute</conf_lblDrop> <gui_conf_window_title type='str'>Paramètres</gui_conf_window_title> - <charging type='str'>En charge</charging> + <conf_lblType type='str'>Type</conf_lblType> <widget_lblSet type='str'>Ajouter a la config.</widget_lblSet> <conf_lblValue type='str'>Valeur (V)</conf_lblValue> <conf_lblRate type='str'>Taux de rafraichissement</conf_lblRate> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-12 09:44:16 UTC (rev 606) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-12 12:27:15 UTC (rev 607) @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <about> + <gadget_author type='str'>Paul Rathgeb</gadget_author> + <gadget_version type='str'>0.0.1</gadget_version> <gadget_description type='str'>Battery monitor for tux droid</gadget_description> - <gadget_author type='str'>Paul Rathgeb</gadget_author> <gadget_name type='str'>battery_monitor</gadget_name> - <gadget_version type='str'>0.0.1</gadget_version> </about> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-12 09:44:16 UTC (rev 606) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-12 12:27:15 UTC (rev 607) @@ -2,10 +2,10 @@ <settings> <parameters> <test_tab type='list'>[[1, 0, 0, 0.10000000000000001, 20.0, True, 'None', False, 0]]</test_tab> - <config type='list'>[]</config> - <Rate type='float'>10.0</Rate> <MainScript type='str'> </MainScript> + <Rate type='float'>10.0</Rate> + <config type='list'>[]</config> <Sample type='float'>600.0</Sample> </parameters> <general> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-12 09:44:16 UTC (rev 606) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-12 12:27:15 UTC (rev 607) @@ -5,14 +5,12 @@ <gui_conf_remote_title type='str'>Control</gui_conf_remote_title> <battery type='str'>On battery</battery> <conf_lblRaise type='str'>Raise</conf_lblRaise> - <widget_lblTest type='str'>Notifications</widget_lblTest> <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> <conf_lblEvent type='str'>Event</conf_lblEvent> <widget_lblControl type='str'>Control</widget_lblControl> <gui_conf_accept_bt type='str'>Accept</gui_conf_accept_bt> <help_text type='str'> </help_text> - <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <conf_lblChange type='str'>Change</conf_lblChange> <conf_lblBoth type='str'>Both</conf_lblBoth> <widget_lblBtnApply type='str'>Apply changes</widget_lblBtnApply> @@ -22,19 +20,20 @@ <gui_conf_update_title type='str'>Update</gui_conf_update_title> <widget_lblValue type='str'>Value (V)</widget_lblValue> <gui_conf_cancel_bt type='str'>Cancel</gui_conf_cancel_bt> - <widget_lblBoth type='str'>Both direction</widget_lblBoth> + <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <conf_lblType type='str'>Type</conf_lblType> <mainscript type='str'>I've found the light !</mainscript> + <conf_btnRemove type='str'>Remove</conf_btnRemove> <gui_conf_delay_lb type='str'>Delay (sec)</gui_conf_delay_lb> <plugged type='str'>Plugged</plugged> <conf_btnBehavior type='str'>Clear path</conf_btnBehavior> <gui_conf_about_title type='str'>About</gui_conf_about_title> <conf_lblChangeD type='str'>Drop and raise</conf_lblChangeD> - <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> + <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> <speaker_name type='str'>Ryan8k</speaker_name> <conf_lblSample type='str'>Samples</conf_lblSample> <charging type='str'>Charging</charging> <widget_lblDisplayThreshold type='str'>Display threshold on graph</widget_lblDisplayThreshold> - <widget_lblDark type='str'>Search darkness</widget_lblDark> <conf_btnModify type='str'>Modify</conf_btnModify> <widget_lblEvent type='str'>Event</widget_lblEvent> <widget_lblNotified type='str'>Notified</widget_lblNotified> @@ -48,9 +47,11 @@ <gui_conf_author_lb type='str'>Author</gui_conf_author_lb> <widget_lblDrop type='str'>Drop</widget_lblDrop> <conf_lblNotified type='str'>Notified ?</conf_lblNotified> - <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <MainBehavior type='str'>Main behavior</MainBehavior> + <absolute_threshold type='str'>Weak batteries </absolute_threshold> + <widget_lblBoth type='str'>Both direction</widget_lblBoth> <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> - <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> + <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <widget_lblChange type='str'>Change</widget_lblChange> <widget_lblLight type='str'>Search light</widget_lblLight> @@ -58,14 +59,14 @@ <conf_lblNotNotified type='str'>Not notified</conf_lblNotNotified> <conf_lblDrop type='str'>Drop</conf_lblDrop> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <conf_lblType type='str'>Type</conf_lblType> + <widget_lblDark type='str'>Search darkness</widget_lblDark> <widget_lblSet type='str'>Add to config</widget_lblSet> <conf_lblValue type='str'>Value (V)</conf_lblValue> <conf_lblRate type='str'>Refresh rate</conf_lblRate> <widget_lblBehavior type='str'>Enable behavior script</widget_lblBehavior> - <MainBehavior type='str'>Main behavior</MainBehavior> + <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> <conf_lblTime type='str'>Time (sec.)</conf_lblTime> <conf_lblControl type='str'>Control</conf_lblControl> - <conf_btnRemove type='str'>Remove</conf_btnRemove> + <widget_lblTest type='str'>Notifications</widget_lblTest> <widget_lblThreshold type='str'>Threshold</widget_lblThreshold> </strings> |
From: Paul_R <c2m...@c2...> - 2007-10-12 09:44:25
|
Author: Paul_R Date: 2007-10-12 11:44:16 +0200 (Fri, 12 Oct 2007) New Revision: 606 Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml Log: * Fix a bug in the Measure_class : When the sample change, the val_table_event wasn't reseted. Modified: software/gadgets/battery_monitor/trunk/Battery_monitor.tgf =================================================================== (Binary files differ) Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py 2007-10-12 08:55:41 UTC (rev 605) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Scripts/Python/Battery_class.py 2007-10-12 09:44:16 UTC (rev 606) @@ -421,7 +421,8 @@ if self.sample_backup != self.sample: self.sample = self.sample_backup self.val_table = [-2] * int(self.sample) - self.val_table_event[-1] * int(self.sample) + self.val_table_event = [-1] * int(self.sample) + self.charger_event_backup = 3 if self.rate_backup != self.rate: self.rate_has_changed() Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-12 08:55:41 UTC (rev 605) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/Strings/fr_ALL.xml 2007-10-12 09:44:16 UTC (rev 606) @@ -32,7 +32,7 @@ <widget_lblValue type='str'>Valeur (V)</widget_lblValue> <speaker_name type='str'>Bruno8k</speaker_name> <conf_lblSample type='str'>Points</conf_lblSample> - <charging type='str'>En charge</charging> + <conf_lblType type='str'>Type</conf_lblType> <widget_lblDisplayThreshold type='str'>Afficher le seuil sur le graph.</widget_lblDisplayThreshold> <conf_btnModify type='str'>Modifier</conf_btnModify> <widget_lblEvent type='str'>Evènement</widget_lblEvent> @@ -58,7 +58,7 @@ <conf_lblNotNotified type='str'>Non notifié</conf_lblNotNotified> <conf_lblDrop type='str'>Chute</conf_lblDrop> <gui_conf_window_title type='str'>Paramètres</gui_conf_window_title> - <conf_lblType type='str'>Type</conf_lblType> + <charging type='str'>En charge</charging> <widget_lblSet type='str'>Ajouter a la config.</widget_lblSet> <conf_lblValue type='str'>Valeur (V)</conf_lblValue> <conf_lblRate type='str'>Taux de rafraichissement</conf_lblRate> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-12 08:55:41 UTC (rev 605) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/about.xml 2007-10-12 09:44:16 UTC (rev 606) @@ -1,7 +1,7 @@ <?xml version='1.0' encoding='UTF-8'?> <about> + <gadget_description type='str'>Battery monitor for tux droid</gadget_description> <gadget_author type='str'>Paul Rathgeb</gadget_author> + <gadget_name type='str'>battery_monitor</gadget_name> <gadget_version type='str'>0.0.1</gadget_version> - <gadget_name type='str'>battery_monitor</gadget_name> - <gadget_description type='str'>Battery monitor for tux droid</gadget_description> </about> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-12 08:55:41 UTC (rev 605) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/settings.xml 2007-10-12 09:44:16 UTC (rev 606) @@ -2,10 +2,10 @@ <settings> <parameters> <test_tab type='list'>[[1, 0, 0, 0.10000000000000001, 20.0, True, 'None', False, 0]]</test_tab> + <config type='list'>[]</config> + <Rate type='float'>10.0</Rate> <MainScript type='str'> </MainScript> - <Rate type='float'>10.0</Rate> - <config type='list'>[]</config> <Sample type='float'>600.0</Sample> </parameters> <general> Modified: software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml =================================================================== --- software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-12 08:55:41 UTC (rev 605) +++ software/gadgets/battery_monitor/trunk/Battery_monitor_svn/strings.xml 2007-10-12 09:44:16 UTC (rev 606) @@ -5,12 +5,14 @@ <gui_conf_remote_title type='str'>Control</gui_conf_remote_title> <battery type='str'>On battery</battery> <conf_lblRaise type='str'>Raise</conf_lblRaise> + <widget_lblTest type='str'>Notifications</widget_lblTest> <gui_conf_description_lb type='str'>Description</gui_conf_description_lb> <conf_lblEvent type='str'>Event</conf_lblEvent> <widget_lblControl type='str'>Control</widget_lblControl> <gui_conf_accept_bt type='str'>Accept</gui_conf_accept_bt> <help_text type='str'> </help_text> + <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> <conf_lblChange type='str'>Change</conf_lblChange> <conf_lblBoth type='str'>Both</conf_lblBoth> <widget_lblBtnApply type='str'>Apply changes</widget_lblBtnApply> @@ -20,20 +22,19 @@ <gui_conf_update_title type='str'>Update</gui_conf_update_title> <widget_lblValue type='str'>Value (V)</widget_lblValue> <gui_conf_cancel_bt type='str'>Cancel</gui_conf_cancel_bt> - <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> + <widget_lblBoth type='str'>Both direction</widget_lblBoth> <mainscript type='str'>I've found the light !</mainscript> - <conf_btnRemove type='str'>Remove</conf_btnRemove> <gui_conf_delay_lb type='str'>Delay (sec)</gui_conf_delay_lb> <plugged type='str'>Plugged</plugged> <conf_btnBehavior type='str'>Clear path</conf_btnBehavior> <gui_conf_about_title type='str'>About</gui_conf_about_title> <conf_lblChangeD type='str'>Drop and raise</conf_lblChangeD> - <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> - <charging type='str'>Charging</charging> + <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> <speaker_name type='str'>Ryan8k</speaker_name> <conf_lblSample type='str'>Samples</conf_lblSample> - <conf_lblType type='str'>Type</conf_lblType> + <charging type='str'>Charging</charging> <widget_lblDisplayThreshold type='str'>Display threshold on graph</widget_lblDisplayThreshold> + <widget_lblDark type='str'>Search darkness</widget_lblDark> <conf_btnModify type='str'>Modify</conf_btnModify> <widget_lblEvent type='str'>Event</widget_lblEvent> <widget_lblNotified type='str'>Notified</widget_lblNotified> @@ -47,10 +48,9 @@ <gui_conf_author_lb type='str'>Author</gui_conf_author_lb> <widget_lblDrop type='str'>Drop</widget_lblDrop> <conf_lblNotified type='str'>Notified ?</conf_lblNotified> - <MainBehavior type='str'>Main behavior</MainBehavior> - <widget_lblBoth type='str'>Both direction</widget_lblBoth> + <gui_conf_rate_lb type='str'>Refresh rate :</gui_conf_rate_lb> <conf_lblDefaultBehavior type='str'>Default behavior</conf_lblDefaultBehavior> - <conf_lblBehavior type='str'>Behavior script</conf_lblBehavior> + <conf_lblChangeU type='str'>Raise and drop</conf_lblChangeU> <gui_conf_remote_set_bt type='str'>Set</gui_conf_remote_set_bt> <widget_lblChange type='str'>Change</widget_lblChange> <widget_lblLight type='str'>Search light</widget_lblLight> @@ -58,14 +58,14 @@ <conf_lblNotNotified type='str'>Not notified</conf_lblNotNotified> <conf_lblDrop type='str'>Drop</conf_lblDrop> <gui_conf_window_title type='str'>Parameters</gui_conf_window_title> - <widget_lblDark type='str'>Search darkness</widget_lblDark> + <conf_lblType type='str'>Type</conf_lblType> <widget_lblSet type='str'>Add to config</widget_lblSet> <conf_lblValue type='str'>Value (V)</conf_lblValue> <conf_lblRate type='str'>Refresh rate</conf_lblRate> <widget_lblBehavior type='str'>Enable behavior script</widget_lblBehavior> - <widget_lblChangeD type='str'>Drop and raise</widget_lblChangeD> + <MainBehavior type='str'>Main behavior</MainBehavior> <conf_lblTime type='str'>Time (sec.)</conf_lblTime> <conf_lblControl type='str'>Control</conf_lblControl> - <widget_lblTest type='str'>Notifications</widget_lblTest> + <conf_btnRemove type='str'>Remove</conf_btnRemove> <widget_lblThreshold type='str'>Threshold</widget_lblThreshold> </strings> |