From f22511f036172796bfa558ff19b7d3cc019d0b72 Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 28 Apr 2016 23:43:34 +0200 Subject: [PATCH] First apps - homepage, playground --- src/apps/__init__.py | 0 src/apps/homescreen/__init__.py | 15 ++++++ src/apps/homescreen/layout_homescreen.py | 19 ++++++++ src/apps/homescreen/trezor.toig | Bin 0 -> 1395 bytes src/apps/playground/__init__.py | 59 +++++++++++++++++++++++ src/apps/playground/tap_64.png | Bin 0 -> 887 bytes src/apps/playground/tap_64.toig | Bin 0 -> 434 bytes 7 files changed, 93 insertions(+) create mode 100644 src/apps/__init__.py create mode 100644 src/apps/homescreen/__init__.py create mode 100644 src/apps/homescreen/layout_homescreen.py create mode 100644 src/apps/homescreen/trezor.toig create mode 100644 src/apps/playground/__init__.py create mode 100644 src/apps/playground/tap_64.png create mode 100644 src/apps/playground/tap_64.toig diff --git a/src/apps/__init__.py b/src/apps/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/apps/homescreen/__init__.py b/src/apps/homescreen/__init__.py new file mode 100644 index 0000000000..678a799dc7 --- /dev/null +++ b/src/apps/homescreen/__init__.py @@ -0,0 +1,15 @@ +# Every application is supposed to have two entry points: +# +# boot() is called during device boot time and it should prepare +# all global things necessary to run. +# +# dispatch() is called once event subscribed in boot() is received. + +def dispatch(): + # Callback for HID messages + print("Dispatch homescreen") + +def boot(): + # Initilize app on boot time. + # This should hookup HID message types dispatcher() wants to receive. + print("Boot homescreen") diff --git a/src/apps/homescreen/layout_homescreen.py b/src/apps/homescreen/layout_homescreen.py new file mode 100644 index 0000000000..b67b443d28 --- /dev/null +++ b/src/apps/homescreen/layout_homescreen.py @@ -0,0 +1,19 @@ +from trezor import ui +from trezor import loop +from trezor import layout + +def layout_homescreen(): + print("Homescreen layout!") + + from apps import playground + loop.call_later(5 * 1000000, layout.change(playground.layout_tap_to_confirm('1BitkeyP2nDd5oa64x7AjvBbbwST54W5Zmx2', 110.126967, 'BTC'))) + + ui.display.bar(0, 0, 240, 240, ui.WHITE) + + f = open('apps/homescreen/trezor.toig', 'r') + + def func(foreground): + f.seek(0) + ui.display.icon(0, 0, f.read(), foreground, ui.BLACK) + + yield from ui.animate_pulse(func, SPEED=400000, BASE_COLOR=(0xff, 0xff, 0xff), MIN_COLOR=0xaa, MAX_COLOR=0xff) diff --git a/src/apps/homescreen/trezor.toig b/src/apps/homescreen/trezor.toig new file mode 100644 index 0000000000000000000000000000000000000000..8ab461e3b09a41c989b33ebe5850e64a7ba0a203 GIT binary patch literal 1395 zcmV-(1&sPsPf2I+0Pp~31pol;(o1X`MHmP0vEw|NCb7!}p&q&l5?m_9NN__WmtHtD zsd$`#_(G*hNXZGf#T+Q&lyE}`NCZd-AvG08R8gcN#KT~#ssx9CD)o}zyWd8wzW>3V*_oZ+&dkRcg+ifFC=?2XLb+Ena_QR6_pfU)s}nzh$UnIl z)x`T?=cm}%R1wrPGBL4bfMb9Y*TI>39PS$QW*?uO2Djv~*%4P3+Su-*y9>Lx>=<}O zLv>d?UDOSaf_E_8c^|im==!kG!eghqoXh7fRn!L?Xzsd=w6&fKN2{!aZPcx2MeA7y z%bl`_hW#*UpLHI|U9^O(@^l=%qOG0X?s`1$atcubx-DRwT=+5{Q&!Qa5A(nG#$g!wg z&1G!L=Pbfz&gTwOi0+D5y5m>t81A-My5%}p!E=jZ>ALG+Sq$zWxN=K}er^rVt@#}W zh6@9@2jr4VF1h5^PCfSOr$1D{OlRkl%THzSUEds+TaOw|6=AS6v?$pX7(6$lW7lDr z{1z2E1;ZsDk-IpgTaCzFCYM}t$-PV6|8_oq`;C_`zWD6LSKfT*+OHLSxASq*r^Tyn`Jmt1nmC6`=s$t9Oua-(qn$oNki z*~W39eZgA=K3dHNeU&hGeZX>uZv~%nVpt_6h%R?D(-Nf@SOg>_f z<^IaRYIBK2nB@9^?AI*fJUNKkUS*MI^mH|ihP$-nUB*{k~3HoXglrXE+(2PN4s5YT?_^ac*{kvnGW;Toqkn88pn2>XwjZki< zk2`7gj-2ac!njcNca?6*u}(FV+wyhKIF6?1=m&Qp>*sdOEIHQ6hjPF4aZh&5JaVj4 z4dqrn-F>z!8vj=0i{0z&_IK}_ot<6Rr?!m-hmQ2dirAI$doatRCHUXGJV)-e7nuBj zE$%k;3FnP&oedO2Y4a9`^#6p>IAmgPYJ|s9_B9s8(QwyXq7~F-9`2;P0Dip<{%A%V zjpY`t#lpGmUwBH^OaM(_qI#0RMa!*(+3yqf{i-F(4deFG#{Y(RyUYvAbk7>SJ3(Bf zDxEIhCg@wA7e#EJL3cgxhjMTCxMFc8t609xzai7*RztZFt>=FCLb(~IJ1uXW$$FNjS?O`JVcad*t)1f0zhcuq!x_7J zMvP`dbxSOatI6)ZIg0~uz}u5xy^-Z|RM~ zSNi{yXcX++7*jgm^2wuL7~lJ$SmRy&@i+Sa$%1TPCh?%gC=?2XLZMJ76w1Al{{dwQ B;t~J= literal 0 HcmV?d00001 diff --git a/src/apps/playground/__init__.py b/src/apps/playground/__init__.py new file mode 100644 index 0000000000..cb8146e505 --- /dev/null +++ b/src/apps/playground/__init__.py @@ -0,0 +1,59 @@ +from trezor import loop +from trezor import layout +from trezor import ui +from trezor.utils import unimport_func + +def layout_tap_to_confirm(address, amount, currency): + + from trezor.main import _main_layout + loop.call_later(5 * 1000000, layout.change(_main_layout())) + + ui.display.bar(0, 0, 240, 40, ui.GREEN) + ui.display.bar(0, 40, 240, 200, ui.WHITE) + + ui.display.text(10, 28, 'Sending', ui.BOLD, ui.WHITE, ui.GREEN) + ui.display.text(10, 80, '%f %s' % (amount, currency), ui.BOLD, ui.BLACK, ui.WHITE) + ui.display.text(10, 110, 'to this address:', ui.NORMAL, ui.BLACK, ui.WHITE) + ui.display.text(10, 140, address[:18], ui.MONO, ui.BLACK, ui.WHITE) + ui.display.text(10, 160, address[18:], ui.MONO, ui.BLACK, ui.WHITE) + + f = open('apps/playground/tap_64.toig', 'r') + _background = ui.rgbcolor(255, 255, 255) + + def func(foreground): + ui.display.text(68, 212, 'TAP TO CONFIRM', 2, foreground, _background) + + f.seek(0) + ui.display.icon(3, 170, f.read(), _background, foreground) + + yield from ui.animate_pulse(func) # , DELAY=10000) + +@unimport_func +def zprava(): + from _io import BytesIO + + from trezor.messages.GetAddress import GetAddress + + m = GetAddress() + m.address_n = [1, 2, 3] + m.show_display = True + + print(m.__dict__) + f = BytesIO() + m.dump(f) + data = f.getvalue() + f.close() + print(data) + # m2 = GetAddress.load(BytesIO(data)) + # print(m2.__dict__) + +def dispatch(): + # Callback for HID messages + print("Dispatch playground") + +def boot(): + # Initilize app on boot time. + # This should hookup HID message types dispatcher() wants to receive. + print("Boot playground") + + zprava() diff --git a/src/apps/playground/tap_64.png b/src/apps/playground/tap_64.png new file mode 100644 index 0000000000000000000000000000000000000000..8736ab5cdca304e072361d02760956f76ef163d3 GIT binary patch literal 887 zcmV--1Bm>IP)MAe2TBq{u#G7cq>y zK$czXB@%_4B~91;dYEzDU1!ehG!H`G%Y5g|oZtM<%y<4Xha>0<1O8jUXJ@uKB5}t( zbppwSuL7KSIu^*?vBege3fq2~FSHe(m6o+R$ z&B;GY&d9yYMI{{vt>#>ptO8!luW;BvMIj27l!&oePJsym09+q1jid?6W#tgaozPz+ zqo52;(sw1DL&%-;@Iq?uCn6e0l#Ho9f^9LihXR&fZp777k;4du74izOt_HjG8Op7c z?{)edsSDS}bpZ;TDAVVOuG9|=`b@POmnL-q@}1s2`fS~m)YqyyjPu*QjHy1w$$2%v z9C&3wapioK8ejs63|F2rp--ihqv2!yXf`2@J$@Kg=ASC9!A&Nh4wY;`FN^{Ukc7u< z0F`pv7~?w;ODce=NZe5dq~NL=fEvM%DUGiUus%fq?MAG^V|Wg9h5?{#F2y6)-_PS1 zg#(yh&6#Cp(P2O#g$1C6d>EGPcTNB$6efVE8n8VK?6@5TT%hm)^fn8KIdXq^hR8SC za>xkS-jEgm(UZc!MVRwo*#(^H=6kxmXJF#jLY%pvv?4>sT2_4b{ujezq>Q@MJ68Yz N002ovPDHLkV1kzFi|qga literal 0 HcmV?d00001 diff --git a/src/apps/playground/tap_64.toig b/src/apps/playground/tap_64.toig new file mode 100644 index 0000000000000000000000000000000000000000..1bd987bd00f5dc7d397d2d87f1f99d675f9aa7af GIT binary patch literal 434 zcmV;j0Zsl?Pf2G$06+ky0RRBa(!El`Ko9`n4U7?WkSi?ch^39BvrI}mtZi_tozXY& z5lmx^h1B5<#3u-aeJreOfQ%*}#P#w=a>?CQI^z~Mlld}x`*Vo@Cc;ZN7)bmKXgmpd z4p;cDHH1!%>9GJ?z=47WZf;Irn6UT=JC3*73>R2-`zh^iml^za)HrhL~OllG>$ zx+C&Pl9QW1b3uM9b5Vb(p9tJf-4M;!P23eOAaVR#e}uNw=?=Rxk9PRR&k=jH!%B`& zuiL3dJB)HLJ_b;nP5p5W#zYLopS->eqHWJY`KqHa{t^aJ7MPyrS%~D2GQ!U-(hLyUW5H!lrCJC@+FU^5N410 z9F-e--C@fwuXG8;h61Pz)GTHk?N!`Uiq-b38z=cQ9Mw55&V%d~_+W4xFBCg1Rpl|R cH8^)M9D?F-9alO;QL|AL_lKaIPVu+m2fV4&Q~&?~ literal 0 HcmV?d00001