diff --git a/graphics/colour/nfc_1.png b/graphics/colour/nfc_1.png deleted file mode 100644 index 71d804b3..00000000 Binary files a/graphics/colour/nfc_1.png and /dev/null differ diff --git a/graphics/colour/nfc_2.png b/graphics/colour/nfc_2.png deleted file mode 100644 index ab797c8c..00000000 Binary files a/graphics/colour/nfc_2.png and /dev/null differ diff --git a/graphics/graphics_q1.py b/graphics/graphics_q1.py index 87dd316b..99ddc01d 100644 --- a/graphics/graphics_q1.py +++ b/graphics/graphics_q1.py @@ -5,6 +5,14 @@ class Graphics: # (w,h, data) + nfc_0 = (224, 100, + b'\xed\x921\xae\xa30\x10\x86]8B\xf2-\xb8\ni\xb0K\x8e\xc0\x15()_c%eJZJ\xca\x94)\x11\x08j\xca\x94\xb4>B\xa4\xdd\xc8\xcc\xe3aLb\x02dw\xb3\xfei\x92\x19{\xc6\xf3\x7f\x83\x90\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\x95\xd5\xff\xa1\xb0:\xd5\xa7:"\xd6\x89m\x14\x91\xa6\xccyXmS=f\xb7\xfd\xfd\x13\xd8:\xbd\x8d\xdaB:\x1c\xb3\xed\xe8\xdd\xf69\xb7No\xa3\x0b\x05\x8f\xd7&\xd8\xd3kJ\x17\xff?\x8e\x1e\x0f\xfd\xb7\xfd\xdc.n\xca-\x08FdkzP_~9\x1f\x9f`\xce\xf0\xccm\x7f<<;\xf1\xecS+\xf4\nxR\xebn\xa4$\xac\xdeE0"\xeb\xd4\x0c|\x81\xb7\xa5\xa7\xf2\xbb\xed\xc7}\xde\xc9/%\x8fn\xe5\x9c9\xef (p\xe0\xafQ\xaf-\xb6\xa67\xe67v\xf6]\xfc\x98\x03\xfeM\x7fb\x17V\xef \xd8\x16\xcb\x1d\xcf9l\xc3\xb8\x96\x8b\xc3*\xac\xd6\xd8\x92\xf1\x8e\xff\x19~.\xbe\x16fw\x03\xbe|\xea\x98\xe5<%:_\x05\x9e\xf2a\x9e\x8e\x87\xef\xf7\xfa\xd3{\xe29k\xf3\xbb\xed\xd5\xa9\xde\xc3\xefLM\xef^\x8b\xb1\xef\xf3\xe4u\xefm\xcaq\xa5\xc0\x9f~\xe3\x9c\x0e\xb0\x07\xbaM\x05z\x02/\x9dD\xc7\xef\x8b\xbd\x9f\xdf\x17\x9bs;%\xcbfv1\xb8\xab#x<@\x1f\xcfy\xb5C\xcee\x85\x0b}D/\xac\x10Z\x9f\xdf\x99\xbe\x9f\xdf\xb5\x98w\x9f9\xcb\xa6\x0e\xabG\x04/T\xe6r\xfeZ\xf5\x88\x00\xa1qm +p\xe0#\xb4\x05\xbf\xdb~\xd8\xf5\x15~9?\x1e\x1e}\xc3\xcd\xfbb\xba-\x02FI=\xce\xa6d\xe9\xdc\x81\xdf\x13Ts.\x86\\\xcc^\xa9\xdd\x16z\x9f\x10J\tL0t`]~_l)\xbf\xf1\xcb\x1f\xe9L\xc7\xf4t\xfb\xdc\x7fb\xb7|\xf2\xc0\x9f\xde\x86\xe3Af\xdab~\xdd\x98M\xdd\r+\xe8\xf8\xda^\x98\xf2\x1b\xba\xb7=?\xb1S\xe9\xb8xx"\xe7j\x87\x80/\x9f\x1d\x9c\xbe\xed\xa3\x11\xc1\xb6x\xd5i\xb8\x19V\xc3\xb8\x8b!\x93Q\xdd6\x85\x95z\xe3U~\xb7\xfdO\xff\xb6\xe6\x17\x8c\xd8$\xb5z&"\xcb6$f)\xd1\xb9\x93vu\x05V7&\xacd\xa6-^\xdb\x89\xa6\x9c\xea\xd5\x94j\xaf\xfe\xd6\xfcm\xd1\xf3\xfb\xb9\x8f[\xf3\x1b\xb3\xf9\xd9\x1dv\xf79\xe3i\x01\x0b\x9d;M)s)\x99\xca\xcc\xf34\xe7\xfa[\xde\xb7G\xe3=\x02z\xeb\xf1;\xd3\xf7\xf1;\x1e\xd4\xdb\xccy\xfe\xce\xb1\xdf\xd3z\xe4O\xe0C\xces\xf4\xb7rn\xde\t(\t\xacf2*3\x19\x9d\xda.]\xeeU~b\xe7\xe2?\xc7O\x7fj\xf8Ed\xce\x94\xe0\xdem\x1fV\xe6\xce\n\xac\'\xfb|\x16u\xbb\xaad3:\xf4\xc2\xac~\xcc\x86\xf1\x94\xe8]\t|\xd8\x1b\xb3\xfdx\xce\xefL\xfb\xdf\xe9\xc7\xf1sq[\xe89\xc5l8\xb3\x1a?\xd5&\xf5a\x0b<\xc7,\x0e\xdbaV\xdd\x84_J\xae\x05\xfc\x16\xbbO\xe3\xd7\xf7\xca\xe80\xeeu\x134\xa5>\x9es\x93\xea\xb0\x1dz\x8f\xdbB\x8d\x0b,3.^\x8b_\xce\x93\xba\xff\x17\x91O\xe3\xe7v\x8e\t\xbc\xd4\xfbi/U\xd6\x81/\xe3\x17\xaa\x8f\x9b\xed\x86\x19\xbfk\x11\xf0\xfe_JtgL\xf8\xe5\xfcx\xd0}\x11\xf9\xb3\xfc\x10\xca\xbb\xf9\x02\x7f\x18\xbfP}\x1c\xce\x9b\xef\x86\xca#\xacd\xfcT\x0f\xe31\xd3\xc7\x97\xf0\xbb\xbf\xf3Z\xc0o\xb1{\x95\xdf\xd4\x97\xfeq~\xa7Z\xf6\x88\x99>\x1eVz~.~V\x198\xa93Be\xd5\xb5\xa9\x8e\xcb\xf81\'\xa9\xfb\x7f\x11\xf94~\xe0\xb2\xba\xf51\xd3\xc7Sb\xea\xf2T\xe5)N\xe6\x95\xe7\xf0\x0b\xab\x80\xf7\xff\x92\xfaS\xf9\xa9/\x99\xeb\xfer~y\xe7\xb3\x8b\xd7\xe4\x17\xfd\x9e\xebZ\xc0?\xb1\xbb\x9f\xe9\xff\xff\xfb\xfc\\,{\xe4\xfco\xe1\x17\xf8k\xf2\xfbb\x08%u\xff\xff\xde\xf5\x93\xf8\x05\xfe\xdf\xc2\xcf\xbc\xf2\x1c~w6\x01\xef\xff\'u\xbf)\x9f\xc0o\xca\xe5\xf5\xf8]\xe80\x1e\xb3\xc7\x95c\xb66?\x84\xae\x05\xfc\x17;\x84\xce\xf4s\xf8\xcdu\xf3\xd2\xcd\x1e\xf8\xa6^\xe6\\\xcfU\x9d="\xd3\x9e,\xe5\x97\xd4}$\xac~\xfe3\xe3\xa7\x9ex\xa4\xf7\xf2K\tLe\x16\xcf\xb9\xf9\x9b\xe4\xc9\xb6\x18F=G\xcf\xd5\xc5\xfa\xf3k\xf0\x0bx\x1fIj\xd5\xe1\x7f\x99_[\xc8\x1e.\xd6s\xf2\x1c\xfdy\x93\xdaS\xac\x05\xd6\xc7\x9bR\xc6\x03\x7f=~I-\xe3\xd7\x02"\xd7""\x9f\xc2/\xf0e\x87\xa6\xd4\xfb \xb0>\x9es\x93\xea\x19\x95\xa7\xc3j\x18\xbfL\xc4a\xf2\x8c\xae\xc7/%2\x9e\xd4}\xec\x8b}\n?pX}_X\xc9\xf8\x85\xea\xe3f\x0e\xc3$ju\x88\x83\xb7 \x17\xc3\xc4\x9e\xb36?x\xb9\x8c}\x06?\xef\xfb\x9d.\x1ef`\xc2)\xe7\xcd\xe6\t|\xfd\x16@\xdf\xb6\x98\xda\xa7\x9c\xaf\xcd\x0f!\xb1\x83\xd8\xb5\xb8\x16\x9f\xc0/\xe7\xb2~F\xd5L\xdb\xcd\xe79\xc3\xf8\xa5\xf37\xf0\xcd:\x08\xac\x9f\xa0)e<"\xc3\xb8\x8b\xe1\xc6\x1c\xc7\xcc\xf8%u\x1f\xedY\xfe\xbb\xfc\xa0\x8f\xc0.\x1ef""39W\xdd\x85\x1b\xa6=\xb2\x8ew\xcc\x86\xf1\x98\xe9;\xfc\x9c\xdetGL\xf9\x85\x95\x9a\xfb\x97\xf9\x05\xfe\xf4\xdbr\xfe\xd8\xf5\x8c\x9av\x81\x1b\x97\xd1\r\xd1\xedBXMu\x17\xf8\x15\x82\xd3\xfc~\xf7\xdc}\n\xbf\xc0\x07\xffr\xae\xe6`O\xdbB\xcd\\\xa8\xccD\xc4\xbc\x13\xf4\xf1\x9ca\xfcT\xcbxS\xaa7\\\xdc\x16@\xd0\xc5k\xf2K\xea\xbf\x87\xdf\xf10\xfc\xe6x\xea9\xe0jS\x8e\x1d\x02\xf7N\xb5z\x0b\\\x9d\xe3gF\xf5\xd5zJco\xfa\xed\x9a\xe3\xdbs~\xb0\x99\xef\xe6\xc7\x9cy\xef4\xed p\xe0\xab\xb9S\xb7\xa3m1\x95\xc9\xe8\x1c?{\xea\xea\xa6D\x04\xde>~E\xe0\xdf\xe9\n\xec9k\xf2CH\xec\xb6\xe7\xd7\xcf\x05_4b\xe3b\xf5LR\xcf\xf14\xe7\xf7O\xe7\xdbTO\x17\x8b\xae\xe7\\Os.\xef\x9dF/\xbcP\x99iJ\x95\xad|\x0bzA\x8f\xf9%\xf5\xf6\xfc\x02\xfe\x9c\xcd\x98\xf1\x9c\x0eSrqS\xcaj\x17\xaa\xe6N\xdd\xe49\x9f[5\xac\xe4M\x81U\xf2\xfdN\x8c\xfb\xbd\xaa\xc7\xfc\xe0-[\xf2CH\xec\x86\xb7\xc5N\xdd\xcf|\xc48\xe0\xcbg\xbfPpZ\xed\xe79\xe0tX\xbd^wL\xa9\xf73\xa3\xef\xe07\xf6v\x0b~g\xaa\xde?\x0f\xa6\x8b\x88\x9a\x17\xbb\xe5\x93g\xdf]\xc7\x8c\xa6\t\x98\xc8\xfb\xf6#"j.f\xeb\x12|\xc6/\xa9\xb7\xe7\xf7\xc5\xc6=\xce\x949\xd3/H\xc9z\xf4b\xa6\xe6\xfa}\xf1\x9c\xd7\xaa\x9f\xba7\x0b\xec\xe2\xe9\xce\xcb\xa7x\xce/\xac\xb6\xe7\x87\xd0\xb5\x18wy\xf41g-z\x19Us.\x16X\xe6N\xf5\xeb\x1d\x9aR\xd6\xb8\xd0G\xdd=gk~\x08\x89\xdd\xf6\xfc\xbe\xd8\x1czK\xf7\xd6s\xa6\xe9!\x94s\x99k\xca%=\x02\x1fz\xe8\xb6@\x12l\x0b\x84\xb6\xe7\x97\xd4\xdb\xf3C\xe8LM\xe9]\x0b\x17/\x9d\xba-\xa6\xf6\xe0\xf4=m\xe0/\xebq<@\xa5\x98\xe9v(f\xcb\xe70\xe1\x17V\xef\xe0\xe7\xe2ka\xc6/\xe0h3\xc5\xec\xf5\t\xc6\xca\xe8Z\xbb\xb0\x84\x1fBb\xb7=\xbf{\x95\xa6|\xc6N\xec\xc2j;z\xfd\xa6ft\x8dz.\x86\x89\x04\xde\x8a\xa0\t\xbf\xa4~\x07\xbf\xbbR\xf2\x88^\xce\x99\xb3\x1d\xbd\xc0\x17X\xf6i\xca\xb5jnO\xd0\x84_\xbf\x97[\xf3\xfb\xed"W\xb7\x05\xde\x15VhCE\xa4\xa7\xe7\xe2\xf5\xea\xf6\x04o\xfb\x88\xa0\xffF\xc7C\xff\xad\xe9\xe7\x14=\xf0x]zC\x82m\x81\xac6Q[lE\xef\'\xc1\x9c[\xa7\xb7Q\xce\xb7\xa3\'\x15\xb3\xe3a\xbb\xeaVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\xff\x97~\x01' + ) + + nfc_1 = (224, 100, + b'\xed\x921\x8e\xab<\x14\x85]8B\xf2.\xd8\n\xd3\x80K\x96\xc0\x16()\xa7\xb1\x922%-e\xca\x94)\x91\x11\xd4\x94)i\xbd\x84\x91\xfe\x179w\x18\x8c\t\x98\x01\xf2x\xbf\x8f\x9b\xe4\x1a\xdb\xf7\x9e\xef deeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\xf5\xffUT\x9e\xabs\x15\x13\xeb\x84\x99bR\x179\x8b\xca\xf7v\x91\xd0\xaf\x8f\xc7\x12\xd8\x121S\xc3\xa5s\t}?\xbd\xaf\x8f\x9cY"f\xba\x05\xe0\xdd\xbb\x08\xb6\xf4\xea\xc2\xc5\xff\xa6\xcb\xa7c\xbb\x96\x9d\xd1\xc5u\xf1N\x821Y\x92\x1e\xdc%W\xce\xfa_P\xa7\xfb\xcd\xd7\xc7\xe98\xf6\xc5\xd8Roh\x15\xb2\xb4\xd2\x9d\xc8HT\xaeA0&\xdb\xd2\x0b}\x81\x97\xa3\xa7\xf2\xfb\xfa\xe8\xdf\xb9%\xbf\x8c\xbc:\x953\xea,MP\xe0\xd0\xdf\x8e\x9e\x8b\x1b\xbe$\xbd>\xbf\xbe\xb3[\xf1\xa3\x0ex:\xbc\xc4!*\x97&\xd8\xf0e\x9c\x9c\xa2\x9cAj\xfao\xba8*\xa3\xd24M\xfd\x8c\xbf\x87\x9f\x8b\xef|\xda\xd9\x90\x99M\x98\xd0\x9ceD\xe7\x97\xc0C3\xaf\xa3\xd3\xf1{\x06\x7f8O\x9e\xf3\x1b~_\x1f\xea\xa4\xdb\xf0\xbb\x06S\xcf\xdey\x9f\xc5\xb0\xbcgou\xd1?\x15\xfa\xc3\xfd,/\xcf\x81\xbc\xe8\xd2\x0b\xf4\x046\x99N\xc7\xef\x93n\xcf\xef\x93\x9a\x9c\xce\xc8\xf4\xf9\\\x0c\xae\xe9\x08\x9e\x8ep\xa7Y\xea\xe7(g\xf2\xa5[\xf0\x8a^T\x9a\xdd\xdaw\xe7\x1al\xcf\xef\xce\xcd\xceS\x03\xb7\xa3\xf2\x15\xc1[ \xf7r\xb6.\xbd\x98\x00\xa1~\x0f@V\xe0\xd07\xbdW\xe7N\xf7\x859\xfcrv:\xbeZ\xdd\x94}R]\x8a\x80QZ\xf5w3b2c\xe8\xb7\x04\xd5=\x17\xc3^B\xd7\xe4\xd7p\xbdw\x08e\x04\xa6\xea\xba2\x9f\xdf\'\xfd-\xbf~\x97\xaft\r\xfa\xf4t\xd9m\x978\x98M\x19\xfa\xc3\xe4OG\xb9\xd3\xf0\xf5\xe8%t\xe8\x8d\xa8\x84\xce\xe6\xe5G\xc7\xaf\xeb\xde\xfa\xfc\xc4A\xa5\xe3\xe2\xee\x179S_\x08\xd9<\x07\xbf>\xe2\x1e\xc1\x86\xff\xc6\xc1)\x82\x17\xa2\xb2[w1\xec\\\x02]\xea\xa2R=1\x85\xdf\xd7\xc7O\xff\xd6\xe6\x17\xf6\xd8\xa4\x95\xfaML\xa6\xbf\x90\xd0\x8c\xe8\xa6\xce\x9ew\x08\xac\xa6#*\xe5N\xc3\xd7\xa1\x07\xd9\xa9\x8b\xa1\x9e\xeaB\xed\xa9=\xf5:Uz~?3\xba6\xbf>\x9b\x9f\xafCN\xc7\x19wY\xe8\xa6\xae\x0b\xb9\x97\x91\xa1\x9d\xd7^\xcdU\xce\xf4\xb7{\xdf\xbe\xf5\xf3\x06\xf4\xe6\xf1\xbb\x06\xdb\xf1;\x1d\xd5\xd3\xd4\x19\xef\xb3\xcf`|\xee\xd0\x87=\xcf\xd1\x9f\xca\xd9\xf2\xf4\x80\x92\xc0\xea\xce%\x90;\x97`(\x85\xba\xbd)\xfc\xc4\xc1\xc5\xef\xe3\xa7\xff\xaa\xbbb2t\x1f\xb8\xa2K\xf5\xb0c\x02\xeb\xc9\xfe^0\x9f\x9a8\xcf\x19J\x93\x8b\xa1\x9b\xf1<\xe9\xf9}}\xb4\xfe\xfc\x1d\xfcLt\x0b \xf1.V=\x1b\xe2\x94\x11\xf3\xce\xa7\xa9.\xe4\xcd\xa1\xaf\x7f\xb1\x9f%\xe8\xbf.\xd4\xfe\xa7\xf3\xbb\x06\xfb\xe5\xe7b\xf0\xec\xd6\xf3\xe6\xf2\xf4&#\xddz\xe8\x83g\xcb\xd2s\x9fyi\xb8\xba\xd3p}\x92\xa2\x12|P\x89\x9b\xf0\x13\x07`\xbf?~\x0f\x1a\xe2\xe9[Tvw\xb5>-\xf7S\x05i\xf1\x9ciuH\xd1\xd4.\xba\xcee\xe4\xce\xe1\xb78\xec\x99_{\xef%\xe8\xd6\xbdg\xb7u\xa1\xaf\xe7lI~\x90"\xbd\xef\rW\xeb\x02\xcb\x1d\x17\xcf\xe1\x97\xb3\xb4j\xff\xc5d\xcf\xfc\xdc\xa7\x13\x02\xff\xd6\xd3\xdfH\x9f\x89\xd0\x97\xf5[\xa0\xafO\xcfP\xd7\xb9;\x0fY\xfb/#\xbao\xa6\xf0\xcb\xd9\xe9\xa8[1\xd9\x8e\x1fB\xf9s\x96\xd0\xef\xd6o\x81\xbe\x0e\xdf/G\x0f2\xa4\xf2\x88JY?W\xddzB\xf5\xf5\xa9\xfc\x1e\xbd\xdf9\xfc\x16\x87\xb9\xfc\x86V\xb6)\xbfs%\xefK\xa8\xbe\x1e\x95z~.^\xaa\x03\xe0\xa4\xce\r\x1d\xa8N\x0eu6\x9d\x1fu\xd2\xaa\xfd\x17\x93=\xf33MyFL\xdd\x9b\xdb\xc1\x10\'\xf3\x0eT\xef\xa22d\xed\xbf\xb4\xfa\x17\xf8\xa9\xaf\x9a\xba\xba\x1d\xbf\xfc\xe9\xbd\x8b\xe7\xf2\x8b\xff\xccz\xe7\xf0O\x1c\x1e\xdf\xb4\xff\xf7\xc5\xcf\xc5\xf2\xbe\x9c\xed\x8d_\xe8\xcf\xe5\xf7I\x11J\xab\xf6\xff\xe3\x85\xbd\xf2\x0b\xfd\xbd\xf13\xef@\xf5\xee\xc1&d\xed\xff\xb4jS\xb17~C\xeem\xcf\xef\x16t\xeb\t}\xddAB\x7f\xc3\x0f\xa1;\x87\xff\xe2\x80\xd05\xd8\'?S\x97n\xcf9C\x1f-&yc\xce\xf4\\U?b2\xec\x93\t\xbf\xb4j+Q\xf9\xf3\xdf4~\xea\x17\xaf\xb4\x1e\xbf\x8c\xc0\x04\xd3\xea9[\xf6\xfd\xd6\xdf\x86w\xab\x9e\xa3\xe7\xeab\xfd\xf7\xa6\xfcB\xd6V\xd2Jux/\xfc\x1a.\xefs\xb1\x9e\x93\xe7\xe8\xbf_\x92\xdfP&\x04\xd6\xd7\xebB\xd6C\x7f\x1e\xbf\xb4\x92\xf5;\x87\xca\x9d\xc7d\x8f\xfcB_\xdeV\x17\xfa\x99\x05\xd6\xd7s\xb6$\xbfK o\x8d\xcan\xfd6P\x077.\xc1<~\x19\x91\xf5\xb4jk\x9ft\x8f\xfc\xc09\xb5\x97\xa8\x94\xf5[\xa0\xafOu\xcel:\xb5\x0b\xa8\x83\xdf \x17\x83\x0b\x9e\xf3\x1b~0\x8d\xac\xed\x8f\x9f\xf7\xdd\x93\x8b\xbb;0\xcd\x90\xa3&\xbd\x8f+\xf4\xf5i\x81\xfe\x1a>\x94\xbb\x9c\xfd\x86\x1fB\xe2\x00\xb5;\xbf\xf3\xbd\xf1\xcb\x99\xbc\xeb\x12\xa8;\r\xd7\xe7\xfb\xf6\xf4-\xf4\xd1\xa2\x12X?U]\xc8zL\xbau\x17\xc3\x89).\x0e\xf3K\xab\xb6\xda\xb2\xdc\x07?\xb8S`\x17wwb\xa2O\xb7\x8b\xe1\x04ZX\x97g.\x12\xda\xad\'T\xdf\xc9OG\xc6\xb34\xcc/*\xd5\xbd\xbd\xf0\x0b\xfd\xe1>r\xf6\xda\xcdK\xb04?\xb8\xf9\xd6\xbbY<3\x13\x95C]\n{\x0e\xb8U\x17\xfd\xc9\xc1\x95s\xa5\x9e\x02\xb7\xd0\n\xba\x04\xfaW[J}\xbf\xda\x14\xbe\xf6\xf2\x15?H\xeb\xd6\xfc\xa8c\xd6\xa7\xee6\x81C_\xdd\x83\xbc7|h\xe7\x12\xac\xc1\xafM\x87\x9a\xa8\x98\xc0<\xfdnC\xffAW`\xcf\x99\xcb\x0f!qX\x9f_;\x03\xac\xb8\xc7\xc6\xc5\xea7i5\xe4U\xce\x1eK\xe7\xc7\xd0\xfd.\x86\xac\xbf\xf6j\xber&\xef?\xf7\xba\xbe\x05r\xa7.T\xb6\xb2\xe7\xb1\x9b_\xf3K\xab\xf5\xf9\x85l\x9cM\x9f\xb1\xc9\x0b\x92Q]\xc8\x93\xb7@\xdd;?\xa7\xcc\x19ZIQ)_\x10XMH\x9b\x9d~_S\xf4\x9a\x1f\xbc\xbb&?\x84\xc4\xa1{Z\x1c\xd4,\xe6=\xc6\xa1\xa1\xd7\x90s\x81\xd5\xbb=\x07\x1c\x8cJ\xb4\x9a\xe0\xfd>\xa5\xd6\xe3K\xb04\xbf\xbe\xb7k\xf0\xbb\x06\xea\xf9kg\x92\x98\xa8\xfb\xe2`6\xe5\xe5\xfb\x85>\xa3ag\x97\x94\xf7\xedQL\xd4\xbd\x84\xce\'8\xc6/\xad\xd6\xe7\xf7I\xfbo\\\x03\xea\x0cw\x90\x91y\xf4\x12\xaa\xee\xb5\xd9\xf0\x1c\xb4\xaa\xce\xcf9\x04v\xf1p\x87f\x93\x8d\xf3\x8b\xca\xf5\xf9!t\xe7\xfdW^-\xea\xcc\xa1\xd7O\xb7\x8b\x05\x96{\xe7\n\xad\xae\xba\x90o\xdd\x82W]\x9a\xe5h<\xd9\xe2\xb0>\xbfOjB\xcf$\xa3\x9e3L\x0f\xa1\x9c\xc9\xbd\xba@\x1b(\xf4\xa1\x17]Z$\xc1\x86\x9b\xdd9\xeeMZ\xad\xcf\x0f\xa1k0\x95\xde\x9d\xbb\xd8\xe4\xe6\x86\x0f1?\x7fO\x16\xfah\x13\x9d\x8e\xf0bBuYK\xa8\xd9lS\xf8E\xe5\x16\xfc\\|\xe7\xd3\xf8\x85l\x19/\x13:\xbf\xdb\xf9\xba\x04\xcbff\x9c\x1fB\xe2\xb0>\xbf\xc7-u1\xc6N\x1c\xa2r\x19\x1f\xdbT^\x02\xb4\xa1\\\x0cS\n\xbc\x04\xc1)\xfc\xd2j\x0b~\x0fe\xe4\x15\xbd\x9cQg\x19\x17C_`yg]\xa0\x8d\xb5,\xc1)\xfc\xda\xac\xae\xcd\xef\x8f\xb3LM\x0b\xf4\x15\x95K9\x18\x93\x96\x9e\x8b\x11z\x1f\xc1\xaf\x8f\x98\xa0\x7fR\xa7c\xbb\x96\xf58&\xe0\xdd{\xe8u\t6\x1cY\x19\xa9\xe1\xef\xa6\xf7\x93`\xce,\x113\xe5\xec\xfd\xf4\xa4\x12z:\xbe\xbf\x0b++++++++++++++++++++++++++++++++++\xab\xfd\xe9?' + ) + scan_1 = (120, 120, b'\xed\x921\x96\xe36\x0c\x86E\xee\x05|\x04]A]Z:7Q\x97\xd6UZb\x8f\xa0*\xab#\xec\x15\xd8P/\xdd\xea\x06\xd1\x01\xd2\xb8J\x9byo\x9f\x16\xc6h\x04\x8a\xa2,\xcb\xb3\x1a-\xf0\x176E\x02\xf8?\x82/\xe7\x97\x8d\xe4t\xf6\xa4\x00\xffr\xde\x9f\x84Wx\xf7\xc3{\xd5\xeeAUO\xe3-\xd5\xa3\xdeZx\xbf\xe9\xec!\x8c\x15^\xe1\x15^\xe1\x15\xde\x8f\xc1\xfb\xcf\xe7?\xe1\xb8\xfa\xeb\x13\xe7\xfd\xef\xd3\xbf\x7f\x1fY\xc2+\xbcG\xe6\xfd\xd6\xfcf\xa6\xf4\xc7\xf9\xff\xdf\xd7\xe9\xdb9U\xe1\xcb\xed\xc4\x97\xf3x\xbd\xbe\'U\x08)8\xaf\xd3\xd9d\x18\xfbr^\'\xaa\x18\xaf\x00\x1eO\x80\x1f\xaf\xd7\xf7\xa4\ni\n\xe1}>o\r\xc6\xf6\xaaa\x8f\xbc\x17k\x16\x89\xdc\x87\xbc\xb8\x7f\xb1)\x97<#\xad\x16\xb6\xe756[\x14\xf4:C\xdeX\xef8o\xb60\x9c\x16\xde\xfd\xf2Vz\xcf\xbc<\x93W\xe0\xbci\x8a\x8a\xb9M\xdf\x10\xf7\xf4\xb1x)Cx\x85w\xff\xbc\xb9\x87\x1f\xaa\x81\xf3V\xda\xfdP\xd7\x1c\x897\xecE\xb5\xc9%Ix\x85w\xff\xbc\x85r\xbaW\x0b\xc3I\xd4\xf5\xe6\xb2k\xc0\xf7\xa2\x0e\x1f\x9b7\xde3\xd6[x\x85\xf7\xfdx\xc1O\xabT\xf3\xbc\x85rz\xac\xeb\xcde\xd7`\x05\xea\xc0y\xc3LR\xa1\xee\xe5\xcd\x12\x11\xf2\xa6"\xc6\x1b\x06\xb9$\x91\xdb\xe5\xeex\xa5\x18\xef\xf2\x10\xde_\x85\xb7\x06\xf0KD\xbd\x89\xf7d\xcdM\xb8\xce\xdf\x9cD]u\x8cwYG\xf0]\xb3=\xef\xbd"^>\xad\xb74\xd3\xd3Y\xdfSx\x85w>\n\xe5\xf4:UI^\xa7\xc1\xf7\xea\x9a\xb1\xdb\xf5=K\x95\xfd\xf4\x88\xf3n?\x9d=\x84\xf0\xee\x99\xf7d\xcdM|M\xcao.so\xec\x94.\xaf||\x1d\xe3\xa5J\x85\x9a\xf7\x92e\x85\x9a\xf6\xf2\xcc\xe9\x90K\xf01\x8e\xe9JY\xe6\xf4|%\xa7\xe7\xbd\xc4+\x08\xaf\xf0\xa6x\x8d\xeduY\xc1\xcb3qml\x0b\xe3sN\x83\xefE\x14-\xe0\xb9BM{\t+l\xc9\xcb\xc5o\x7f\xe0E/5\xa4\xe6\xbcT\xf19\x13\x1f\xdd\xd0\xcf\xe1\x8d\xcd[x\x8f\xc1\x1b{\xcf\xf8\xfd\xb2!o\rX\xb3\x85\xadxO6\xe6\x92\\\xd0\xdd\x86\x8a\xdd\x18\xd5~|*\xbc\xf7\xe3\xbc\xf19\xa7x\xbb\xe6\xd7\xe2\xa5}\xe1\xdd3o\xa1\x9c\xee\xd5\x02x\x14\xd5\xbej\xdc\xb9\x06\xbcx\xae\xd2\xe3\xcc\x1a\x96\xf2\x1aK\xbdb\xa2\x93\xa5\xc2\xf5\xe37\x17\xce\x95\xbeLO3\x9c\x1f\xcf\x0c+\xc5\\\x0ew:\xdf!\xcc\x10^\xe1]\xca\x0b\xbeW\xa5+\x8d\xff\xc8m(\xdc\xaf\x81\xff\x8e\xf7\xc3\x13\xc6b\xcfR9\xdd\xabk\x96\xf2\x1a;\xae\xb0\x05/\xef\x95\x9a\x82\xd3\xb1\n\x03\xf7\xfct\xe2\x1d\xb2\xa7\x85\xf0\x1e\x9b7\xf7\xc04\xdc\x04\xf89\x95\x8a\xf3:\x8d\x1a\xd6x\xb2\x06\xfcN\x19\xd4\xf3k\x83\xdf\xbbf\xb8\xa1\xb1\x87R\xe1\xda\xd8l71\xf0\xd2\x97\xd8\x9cy\x06\xbd\x90a\xce\xbc6\xdd\x1d\xaf \xbc\xc2;\x1d\xb9\x87\x95*U\x8c\xd7iT\xd7\x10\x17f\x18\x8b\xfb\x85\xa2\x13\xf8\x9d\xa8B\xdeR\x8d3\xb7\x9c\xce\xbd\xa2\xe9\x84\xbc\x14\xc3\xdc\xa6\xa7\xc4\xf7\xc3\n\xcf|\x8d\xc2+\xbcKxO\xd6\xdcT\x83\xd3oU\xaa\x18/\xee\xb7\x00~^\xc6n\xc7\xbb4\x83\\\xc6x\x875\x9fg|\xfeK\xef>UQx\x8f\xce\xeb4\xaa\xd2Ky\x8d\x9dV\xee\xa7y\x0bE=b\xbc\xb9\x9f\xaeX\x03\x9d\xc4\xf5e5\xef\xe0\x81N\xba\xc5\xbc\xa9^\x9c7^\x91gp\x857\xb4\x967\xac \xbc\xc2\xbb\x8e\xf7d\xcdH\x97\xd7\x8a5\xe0\x97\x1a\x8e\xc4\x9bv\xcb]\xc6^H\xbcR\xcc\xbd\xf0\n\xef\xfb\xf3\xd6`l\xafB\x1d\x93\x97\xf7\xe0\x19i^c\xb3\xbbBx\x85Wx\xc9\xcd\xb4\xc8\x03w\x9b\xdf\xf6k\x88\xf1\x1a\x8b\'\xbe6N\xa3\xf8\x1a\xd5\x02\xf5\xca\xfd\xb8B\xa9\xf0D\xa9\xb6\xe7MEz:K3i\x1d\x7f\x19<\x13\xbc\xf0\n\xef2^\xa7\x97\xa9k\xc6\x15\x0b\x85\xdf[\x00\xdf\xab\x06:Y\xaay\xde\xf253\xe6\xa1P\xe4\x12k\x1b\xbb\x1d\xef\xbd\xa2\x8a|\xae\xc3\x9aO#\xfd2\xb8b|\xc2+\xbc\xd3\'s\x0f+U*^\x81\xaf\xb9[c\xc7\x99i\x0f\xb9\xdf\x9a\xf7\x18!\xbc\xc2+\xbc\xc2+\xbc\xc2+\xbc\xc2+\xbc\xcf\xe6\xbdj\xf7\xa0\xaa\xa7\xddX\xa9\x1e\xf5\xd6\x02\xe7}\\\xcf{!\xe0\xb7w+\xbc\xc2{\x04\xde\xef' ) diff --git a/shared/lcd_display.py b/shared/lcd_display.py index bacebb76..03517d7e 100644 --- a/shared/lcd_display.py +++ b/shared/lcd_display.py @@ -215,7 +215,7 @@ class Display: def image(self, x, y, name): # display a graphics image, immediately w,h, data = getattr(Graphics, name) - if x == None: + if x is None: x = max(0, (WIDTH - w) // 2) self.gpu.take_spi() self.dis.show_zpixels(x, y, w, h, data) diff --git a/shared/nfc.py b/shared/nfc.py index 7026ae5c..52d56853 100644 --- a/shared/nfc.py +++ b/shared/nfc.py @@ -308,7 +308,8 @@ class NFCHandler: await self.setup_gpio() if dis.has_lcd: - pass # TODO + dis.real_clear() # bugfix + dis.text(None, -2, 'Tap phone to screen, or CANCEL.', dark=True) else: from graphics_mk4 import Graphics frames = [getattr(Graphics, 'mk4_nfc_%d'%i) for i in range(1, 5)] @@ -323,13 +324,14 @@ class NFCHandler: first = True while 1: - phase = (phase + 1) % 4 - dis.clear() if dis.has_lcd: - dis.text(None, 4, 'NFC animation fr#%d' % phase) + phase = (phase + 1) % 2 + dis.image(None, 59, 'nfc_%d' % phase) else: + dis.clear() + phase = (phase + 1) % 4 dis.icon(0, 8, frames[phase]) - dis.show() + dis.show() # wait for key or 250ms animation delay try: