From 0fd8d7c5c37c6242687a5d344c79a72f42efbad9 Mon Sep 17 00:00:00 2001 From: Zahkc Date: Sun, 6 Aug 2023 23:46:16 +1000 Subject: [PATCH] 1.0 --- build/appinfo.json | 35 + build/basalt/app_resources.pbpack | Bin 0 -> 7560 bytes build/basalt/appinfo.auto.c | 20 + build/basalt/appinfo.auto.c.41.o | Bin 0 -> 4504 bytes build/basalt/pebble-app.bin | Bin 0 -> 252 bytes build/basalt/pebble-app.elf | Bin 0 -> 41627 bytes build/basalt/pebble-app.raw.bin | Bin 0 -> 252 bytes build/basalt/pebble_app.ld.auto | 53 + .../rocky-app.js.JS_SNAPSHOT.bytecode | Bin 0 -> 3452 bytes .../resources/rocky-app.js.JS_SNAPSHOT.reso | Bin 0 -> 3754 bytes build/basalt/src/resource_ids.auto.c | 8 + build/basalt/src/resource_ids.auto.c.41.o | Bin 0 -> 2176 bytes build/basalt/src/resource_ids.auto.h | 13 + build/basalt/src/rocky.c | 9 + build/basalt/src/rocky.c.41.o | Bin 0 -> 3788 bytes build/basalt/system_resources.resball | Bin 0 -> 3862 bytes build/basalt_snapshot_size.json | 1 + build/c4che/_cache.py | 27 + build/c4che/basalt_cache.py | 72 + build/c4che/build.config.py | 2 + build/c4che/chalk_cache.py | 72 + build/c4che/diorite_cache.py | 72 + build/c4che/emery_cache.py | 72 + build/chalk/app_resources.pbpack | Bin 0 -> 7560 bytes build/chalk/appinfo.auto.c | 20 + build/chalk/appinfo.auto.c.32.o | Bin 0 -> 4500 bytes build/chalk/pebble-app.bin | Bin 0 -> 252 bytes build/chalk/pebble-app.elf | Bin 0 -> 41615 bytes build/chalk/pebble-app.raw.bin | Bin 0 -> 252 bytes build/chalk/pebble_app.ld.auto | 53 + .../rocky-app.js.JS_SNAPSHOT.bytecode | Bin 0 -> 3452 bytes .../resources/rocky-app.js.JS_SNAPSHOT.reso | Bin 0 -> 3754 bytes build/chalk/src/resource_ids.auto.c | 8 + build/chalk/src/resource_ids.auto.c.32.o | Bin 0 -> 2172 bytes build/chalk/src/resource_ids.auto.h | 13 + build/chalk/src/rocky.c | 9 + build/chalk/src/rocky.c.32.o | Bin 0 -> 3784 bytes build/chalk/system_resources.resball | Bin 0 -> 3862 bytes build/chalk_snapshot_size.json | 1 + build/config.log | 62 + build/diorite/app_resources.pbpack | Bin 0 -> 7560 bytes build/diorite/appinfo.auto.c | 20 + build/diorite/appinfo.auto.c.23.o | Bin 0 -> 4508 bytes build/diorite/pebble-app.bin | Bin 0 -> 252 bytes build/diorite/pebble-app.elf | Bin 0 -> 41635 bytes build/diorite/pebble-app.raw.bin | Bin 0 -> 252 bytes build/diorite/pebble_app.ld.auto | 53 + .../rocky-app.js.JS_SNAPSHOT.bytecode | Bin 0 -> 3452 bytes .../resources/rocky-app.js.JS_SNAPSHOT.reso | Bin 0 -> 3754 bytes build/diorite/src/resource_ids.auto.c | 8 + build/diorite/src/resource_ids.auto.c.23.o | Bin 0 -> 2176 bytes build/diorite/src/resource_ids.auto.h | 13 + build/diorite/src/rocky.c | 9 + build/diorite/src/rocky.c.23.o | Bin 0 -> 3792 bytes build/diorite/system_resources.resball | Bin 0 -> 3862 bytes build/diorite_snapshot_size.json | 1 + build/emery/app_resources.pbpack | Bin 0 -> 7560 bytes build/emery/appinfo.auto.c | 20 + build/emery/appinfo.auto.c.14.o | Bin 0 -> 4500 bytes build/emery/pebble-app.bin | Bin 0 -> 252 bytes build/emery/pebble-app.elf | Bin 0 -> 41615 bytes build/emery/pebble-app.raw.bin | Bin 0 -> 252 bytes build/emery/pebble_app.ld.auto | 53 + .../rocky-app.js.JS_SNAPSHOT.bytecode | Bin 0 -> 3452 bytes .../resources/rocky-app.js.JS_SNAPSHOT.reso | Bin 0 -> 3754 bytes build/emery/src/resource_ids.auto.c | 8 + build/emery/src/resource_ids.auto.c.14.o | Bin 0 -> 2172 bytes build/emery/src/resource_ids.auto.h | 13 + build/emery/src/rocky.c | 9 + build/emery/src/rocky.c.14.o | Bin 0 -> 3784 bytes build/emery/system_resources.resball | Bin 0 -> 3862 bytes build/emery_snapshot_size.json | 1 + build/geiger.pbw | Bin 0 -> 117731 bytes build/include/message_keys.auto.h | 12 + build/js/message_keys.json | 6 + build/pebble-js-app.js | 1050 ++++++++++++ build/pebble-js-app.js.map | 1 + build/pebble-rocky.map | 1432 +++++++++++++++++ build/resources/rocky-app.js | 247 +++ build/src/message_keys.auto.c | 12 + build/src/message_keys.auto.c.14.o | Bin 0 -> 2900 bytes build/src/message_keys.auto.c.23.o | Bin 0 -> 2900 bytes build/src/message_keys.auto.c.32.o | Bin 0 -> 2900 bytes build/src/message_keys.auto.c.41.o | Bin 0 -> 2900 bytes build/webpack/pkjs/webpack.config.js | 101 ++ build/webpack/rocky/webpack.config.js | 99 ++ package.json | 25 + src/pkjs/index.js | 4 + src/rocky/index.js | 183 +++ wscript | 30 + 90 files changed, 4032 insertions(+) create mode 100644 build/appinfo.json create mode 100644 build/basalt/app_resources.pbpack create mode 100644 build/basalt/appinfo.auto.c create mode 100644 build/basalt/appinfo.auto.c.41.o create mode 100644 build/basalt/pebble-app.bin create mode 100644 build/basalt/pebble-app.elf create mode 100644 build/basalt/pebble-app.raw.bin create mode 100644 build/basalt/pebble_app.ld.auto create mode 100644 build/basalt/resources/rocky-app.js.JS_SNAPSHOT.bytecode create mode 100644 build/basalt/resources/rocky-app.js.JS_SNAPSHOT.reso create mode 100644 build/basalt/src/resource_ids.auto.c create mode 100644 build/basalt/src/resource_ids.auto.c.41.o create mode 100644 build/basalt/src/resource_ids.auto.h create mode 100644 build/basalt/src/rocky.c create mode 100644 build/basalt/src/rocky.c.41.o create mode 100644 build/basalt/system_resources.resball create mode 100644 build/basalt_snapshot_size.json create mode 100644 build/c4che/_cache.py create mode 100644 build/c4che/basalt_cache.py create mode 100644 build/c4che/build.config.py create mode 100644 build/c4che/chalk_cache.py create mode 100644 build/c4che/diorite_cache.py create mode 100644 build/c4che/emery_cache.py create mode 100644 build/chalk/app_resources.pbpack create mode 100644 build/chalk/appinfo.auto.c create mode 100644 build/chalk/appinfo.auto.c.32.o create mode 100644 build/chalk/pebble-app.bin create mode 100644 build/chalk/pebble-app.elf create mode 100644 build/chalk/pebble-app.raw.bin create mode 100644 build/chalk/pebble_app.ld.auto create mode 100644 build/chalk/resources/rocky-app.js.JS_SNAPSHOT.bytecode create mode 100644 build/chalk/resources/rocky-app.js.JS_SNAPSHOT.reso create mode 100644 build/chalk/src/resource_ids.auto.c create mode 100644 build/chalk/src/resource_ids.auto.c.32.o create mode 100644 build/chalk/src/resource_ids.auto.h create mode 100644 build/chalk/src/rocky.c create mode 100644 build/chalk/src/rocky.c.32.o create mode 100644 build/chalk/system_resources.resball create mode 100644 build/chalk_snapshot_size.json create mode 100644 build/config.log create mode 100644 build/diorite/app_resources.pbpack create mode 100644 build/diorite/appinfo.auto.c create mode 100644 build/diorite/appinfo.auto.c.23.o create mode 100644 build/diorite/pebble-app.bin create mode 100644 build/diorite/pebble-app.elf create mode 100644 build/diorite/pebble-app.raw.bin create mode 100644 build/diorite/pebble_app.ld.auto create mode 100644 build/diorite/resources/rocky-app.js.JS_SNAPSHOT.bytecode create mode 100644 build/diorite/resources/rocky-app.js.JS_SNAPSHOT.reso create mode 100644 build/diorite/src/resource_ids.auto.c create mode 100644 build/diorite/src/resource_ids.auto.c.23.o create mode 100644 build/diorite/src/resource_ids.auto.h create mode 100644 build/diorite/src/rocky.c create mode 100644 build/diorite/src/rocky.c.23.o create mode 100644 build/diorite/system_resources.resball create mode 100644 build/diorite_snapshot_size.json create mode 100644 build/emery/app_resources.pbpack create mode 100644 build/emery/appinfo.auto.c create mode 100644 build/emery/appinfo.auto.c.14.o create mode 100644 build/emery/pebble-app.bin create mode 100644 build/emery/pebble-app.elf create mode 100644 build/emery/pebble-app.raw.bin create mode 100644 build/emery/pebble_app.ld.auto create mode 100644 build/emery/resources/rocky-app.js.JS_SNAPSHOT.bytecode create mode 100644 build/emery/resources/rocky-app.js.JS_SNAPSHOT.reso create mode 100644 build/emery/src/resource_ids.auto.c create mode 100644 build/emery/src/resource_ids.auto.c.14.o create mode 100644 build/emery/src/resource_ids.auto.h create mode 100644 build/emery/src/rocky.c create mode 100644 build/emery/src/rocky.c.14.o create mode 100644 build/emery/system_resources.resball create mode 100644 build/emery_snapshot_size.json create mode 100644 build/geiger.pbw create mode 100644 build/include/message_keys.auto.h create mode 100644 build/js/message_keys.json create mode 100644 build/pebble-js-app.js create mode 100644 build/pebble-js-app.js.map create mode 100644 build/pebble-rocky.map create mode 100644 build/resources/rocky-app.js create mode 100644 build/src/message_keys.auto.c create mode 100644 build/src/message_keys.auto.c.14.o create mode 100644 build/src/message_keys.auto.c.23.o create mode 100644 build/src/message_keys.auto.c.32.o create mode 100644 build/src/message_keys.auto.c.41.o create mode 100644 build/webpack/pkjs/webpack.config.js create mode 100644 build/webpack/rocky/webpack.config.js create mode 100644 package.json create mode 100644 src/pkjs/index.js create mode 100644 src/rocky/index.js create mode 100644 wscript diff --git a/build/appinfo.json b/build/appinfo.json new file mode 100644 index 0000000..27eb74c --- /dev/null +++ b/build/appinfo.json @@ -0,0 +1,35 @@ +{ + "versionLabel": "1.0", + "projectType": "rocky", + "name": "Geiger Counter", + "messageKeys": { + "ControlKeyResetRequest": 1, + "ControlKeyUnsupportedError": 4, + "ControlKeyChunk": 3, + "ControlKeyResetComplete": 2 + }, + "companyName": "Zahkc", + "enableMultiJS": true, + "sdkVersion": "3", + "capabilities": [], + "appKeys": { + "ControlKeyResetRequest": 1, + "ControlKeyUnsupportedError": 4, + "ControlKeyChunk": 3, + "ControlKeyResetComplete": 2 + }, + "watchapp": { + "watchface": true + }, + "longName": "geiger", + "displayName": "geiger", + "shortName": "geiger", + "main": { + "rockyjs": "src/rocky/index.js", + "pkjs": "src/pkjs/index.js" + }, + "resources": { + "media": [] + }, + "uuid": "a426b361-f97e-4934-8581-4e1cb299b74a" +} \ No newline at end of file diff --git a/build/basalt/app_resources.pbpack b/build/basalt/app_resources.pbpack new file mode 100644 index 0000000000000000000000000000000000000000..03dbe577c601b4033bdbb3a4a01945e8a7808dae GIT binary patch literal 7560 zcmeHLZD?fW6@K3PF(3K<+BK_gofz%jJFd;n&Cb-_v2J!Zne5u#y11btQsSMNcQcnv z=8ku6vPo%SDX~k_Mx+#>EtF!Zh}IG;q$MiI%198AQi_O(Xi-rSk9kK&}N{`K%0R!178;gF5G+3`wt*Q2|XPJUYGs<1QZ%&P(_+b2nTQw38vxZIFsa< z{6Yp1PcAd2M9Au8JcsA;44%cG@DzG*lAV%pN{$R|v$(8C)wrxO`h>z&O-^i0#U{{6 z_9F;0NsW?y4WWuHynqd)B=kqTY@kolPI%7#yQ#KTx zg%4M0V9E>D!&PKiRus_(s)$3D3~W_1)a&-*R%JQbKjew=7@ox6Nb7kV!yhU7-(f#) zfK0hZ$#NXS?4)v9rF^A9Eo`u@ZFxxR7>-iu+*Z32>k0S+zxRF$LJoMM&;e^3nsm7&<-!mjbd8L|`qnjCg=;3rQ zIXpe>$Gbpr9wxk>;%E2;evB*l2^=h88K1#M8K2`4EX?Bze1wnj13ZjR@gDw#5AZhL z!Mn)f`*;xl#G7~s=kPsT#96$BH*hchj_=|h$Y2}OID^-48k3m9-M9w{;vq$GkI|fs zLc{BnNeW@gfJLI!H0wwtQmixCB|hC73XS&AXs89lVwT%!d4(y>g zxKmLe4sE8{K125K){N-75%xTa=Cw52uiwCu6ou&O!=l+;lNd_fMnBLb@fCNqQR_C% zer}{FZrZFRso&gidaw@dr)u=B*Ha)q^lvm&Z)sHxH&g>w_tuXz>3e+di63p!7qhlE z{w)ptfcV|v4P{ku?^ERQ*v!^`gLZ2$E6oz0$34NlS&i++T8mG8q|PTvzAEyq*F|o` zyc=?T?)RF|u?B&0HhNpId~f&2piQx3g&GO{n{u*$O+O^Q8)}+qw8X?>-&On2m$l$L#B^ zZd2cG7>0yTZ&!Mt+Fd)M*s(Z#;V}dC5dB58!}7Sl!&**(4Ov%M!cer^o>Qo0D2ZAt zT5t6<#Dn$0;d<*}Lwsv}@KC*Vn8axxJdvoiQuS8a7t?&)E#^b}&W_W{XC}x&XZIMW z(!w|qER21-ER1W$YsRBSdRo-a@QqWoB`=aSj#)o1y4Vl+_oSkR1_%9nQhXQa-pYFS;TYYG;-(y-ThXE0@ge94 zi3vbht_CdsoUPK0j>u*j(X`s3DMYf`DM&uFmO@vun|AGLTJ32P=)FjGCHurWq+rnB zY?yddx}K>JwHOa3 zwkz&=Ua6RKoa7p23RWd%I*zr(D>1tia|=9HF4!d=Te8epwz$Y$+ja{hptnw*&ykG; zyVQjRtF-9yT)`{}pit0Pk+sPIy^3;n(RRqDVwK3IA9>T6&zYtCidilfxx@1$GqV*h zM#7rpa}ktHr^3&cT;VHc3z-6Etl)@uQqd~$2dunXpf{z!nsfMy7%vxX_Z-P8WFt_4 zJ|ylcFUPWWF&~?z(5;+!tBzAiQ8`BOA5BU~9g#ps8IDjtLH+R~3NG2gH`yO;wU6ME zRV>c%Ws-|n<_fMC0OjBiJmp_;9ebWfkt^C2e!-+T36E?9=f3QsyHXUKN0H@oR>{*L z-s~klV~4!_W^4uLg(<~!;jD_w1EU+mh?0La_*aKe7;3c(G_-R()KG+u@Ha@`^j@Egdl@ z?lSopfNP(#b7qmxSPT53>sY0^C@PCtN|TzTNApQ~wB}3-pJH-JZ_;#4k(ZcFkpo|% zlxRNkR2Hb@sFW$T1v|f3q}deqe0~7xT7`ENt literal 0 HcmV?d00001 diff --git a/build/basalt/appinfo.auto.c b/build/basalt/appinfo.auto.c new file mode 100644 index 0000000..16c8452 --- /dev/null +++ b/build/basalt/appinfo.auto.c @@ -0,0 +1,20 @@ +#include "pebble_process_info.h" +#include "src/resource_ids.auto.h" + +const PebbleProcessInfo __pbl_app_info __attribute__ ((section (".pbl_header"))) = { + .header = "PBLAPP", + .struct_version = { PROCESS_INFO_CURRENT_STRUCT_VERSION_MAJOR, PROCESS_INFO_CURRENT_STRUCT_VERSION_MINOR }, + .sdk_version = { PROCESS_INFO_CURRENT_SDK_VERSION_MAJOR, PROCESS_INFO_CURRENT_SDK_VERSION_MINOR }, + .process_version = { 1, 0 }, + .load_size = 0xb6b6, + .offset = 0xb6b6b6b6, + .crc = 0xb6b6b6b6, + .name = "geiger", + .company = "Zahkc", + .icon_resource_id = DEFAULT_MENU_ICON, + .sym_table_addr = 0xA7A7A7A7, + .flags = PROCESS_INFO_WATCH_FACE | PROCESS_INFO_ROCKY_APP | PROCESS_INFO_PLATFORM_BASALT, + .num_reloc_entries = 0xdeadcafe, + .uuid = { 0xA4, 0x26, 0xB3, 0x61, 0xF9, 0x7E, 0x49, 0x34, 0x85, 0x81, 0x4E, 0x1C, 0xB2, 0x99, 0xB7, 0x4A }, + .virtual_size = 0xb6b6 +}; diff --git a/build/basalt/appinfo.auto.c.41.o b/build/basalt/appinfo.auto.c.41.o new file mode 100644 index 0000000000000000000000000000000000000000..2e5183be00a1c51a6690426c95fe8ab79201c543 GIT binary patch literal 4504 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 literal 0 HcmV?d00001 diff --git a/build/basalt/pebble-app.bin b/build/basalt/pebble-app.bin new file mode 100644 index 0000000000000000000000000000000000000000..75b77d161ce1dcc935da2300c3b40b8d3287f322 GIT binary patch literal 252 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 HF6uu4Zf4|) literal 0 HcmV?d00001 diff --git a/build/basalt/pebble-app.raw.bin b/build/basalt/pebble-app.raw.bin new file mode 100644 index 0000000000000000000000000000000000000000..13e6a734580245eb263ee91744b1c06cfbf2a970 GIT binary patch literal 252 zcmWG=@^K6ZU|pV?b8~tQ9&D`z<)4FXN0|N_?BLc+CK36W_(q#~ zu|x)k3sc4vH~u{d?hN}^00GBVh7X)S7!(;k@cdv@VEDlQgF%5~F9QSr7Dmti-=FQb W0U8WpKiFRbXW!a?h7)KJ5C8ye??-0< literal 0 HcmV?d00001 diff --git a/build/basalt/pebble_app.ld.auto b/build/basalt/pebble_app.ld.auto new file mode 100644 index 0000000..f36f597 --- /dev/null +++ b/build/basalt/pebble_app.ld.auto @@ -0,0 +1,53 @@ + +ENTRY(main) + +MEMORY +{ + APP (rwx) : ORIGIN = 0, LENGTH = 65536 +} + +SECTIONS +{ + .header : + { + KEEP(*(.pbl_header)) + + } > APP + + /* -- DO NOT ADD ANY NEW SECTIONS HERE AND DO NOT CHANGE THE ALIGNMENT -- */ + /* The GNU build ID is tacked to the end of the PebbleProcessInfo struct: */ + .note.gnu.build-id ALIGN(1) : { + PROVIDE(BUILD_ID = .); + KEEP(*(.note.gnu.build-id)) + } > APP + + .text : + { + *(.text) + *(.text.*) + *(.rodata) + *(.rodata*) + } > APP + + .data : + { + KEEP(*(.data)) + *(.data.*) + } > APP + + .bss : + { + *(.bss) + *(.bss.*) + } > APP + + DISCARD : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + *(.eh_frame) + } +} + +/* vim:filetype=ld */ diff --git a/build/basalt/resources/rocky-app.js.JS_SNAPSHOT.bytecode b/build/basalt/resources/rocky-app.js.JS_SNAPSHOT.bytecode new file mode 100644 index 0000000000000000000000000000000000000000..e0d530a6036a291c47f1054e9168647bdc66049a GIT binary patch literal 3452 zcma)8YiJzT75?r#_M!L7j-1%dDoW#-ty6hN-i_^bW7(Egc50`_7AYnaWp?*kJ7~4D znH|YepkRtzQ?)YwWk?Gl1QJ4Chy;|NG*BG2h!9E%A%qY@Tau83QcCHM{t7vFW_DM* zkwpjY+{ZcRJJ0(#|Hwr!03m8GMuGQbcyopR3@WWc31JWRA;C24jWbD($!}*6@#r#R zN`$2Tgjex8Uc$?G1uvirC)h~|C*{b%CX368RE^6jqhBao)#Sv+L~IQ0BtL{Olhi25 z*AS}Mz}r|uNP8f5Ju?|H5Thn8m;GCBDKh@C3fW-|!E7j!*C@K0_9d;SxT? zM|d1(@hC3h3_iwR@Cg2jpW*{#u!%{W#(Ox0aZKPC9!7%VkRrQBC}+da@IHBxLYO>Y zk!Ur|+7gKrYfpBFU+0=at6j9(?X4MXwbuJgH+sn3l-#?r79z&J9T@w!G77|j^)%aM z$R6H`5nVOHo<=deoo2iByI7K}5L10n3_EKSL#fN?dzvUdoq6! zy$z-N>d?NcM)zvn1&W9Mg9hupt*qe&YY^3)`6EsIUc7h2k2dj(tnG|{Z-YMw{PysM zvMgfnhscX#bF_9Fv|EF$G*kRI?g;K>HMU*UT6F3|^>`BH|3$vrw0w?nSyey4A9%3g z(vR!IHCfO`4%Qb8iawqFQoG_Vre^sfQYZA)(XT zl^&>ec#9QVio+)!F;F+rFQP4yNBtevatf@;y228MqTT!SliPW#}AL~WF+kJ3Jw@^MV$L;J~=)5?!b;DgQ{Hc+L)I35(nu5AkA zw(*{E%}B56YA89jv9i1=(N0UtCp5`;gHF)Z)pv}Mm73ggT0YrC*ivC)i)wUa4WHUc zTPyfz^bX)e_#Sv#9@i#}cF)$#hS7d=#kh3+olS|9iZk9jy01ir^ckYKvb) zYaFw_Uv#nW@$X4R4fXf?_oVpG(Y=-R?!ytf8^ujIM7N?tx8vi`5fTYNSgr<9{w-Uk z8y%7LG@@y>O;aeyYP$&X{*@FulAW|`m(yxj6G87rvLo3e>X3{C#TSV#Y?&#z zo&n^8L-6E(#dYji9!0KbSNM68>?Ayr5i$2^7u}_zhuwW{YNS7Txetn;|6^%)DiiDvFKJd4cDMF9eGB zf>~(~F4^tyC+B&^9rsE{hzDU^=@}z^D>c{l-6`n1V&(p#p%i+`0L>I9Wyb`QD#m_eLJRb?x&QKxrz$#T- zg5ddcHPA5lV%c_Ff$x9!jQ##;@qK;Vn_pcR^Vd6qJ{0u*LH{4058np;|Bj#j`%?q2 nP3{YDhR3|AIqc8(39jxyP`u_%aESM`n-#7LhZ2Z}R literal 0 HcmV?d00001 diff --git a/build/basalt/resources/rocky-app.js.JS_SNAPSHOT.reso b/build/basalt/resources/rocky-app.js.JS_SNAPSHOT.reso new file mode 100644 index 0000000000000000000000000000000000000000..60bd8d41782ae3459edbc01e117df46dde41ec1b GIT binary patch literal 3754 zcma)9duUu)8UNkayz+juo4Tz#*{t^7*fyP;&baNY+qBK2?e;~JQI@4-@64QJ?q)J~ z?jva;7OG?|Mzic+3o0zjf+FflSRqQ*1?e&pmPJHFL_}0nR76Dl!@tDu+%8W^Sa6tYEjb0|p7K_!^sUpgR{kYc@DjH}{>^~2p?%&K?%AT6OBC6h zSus7+s@T$_ahg&Mtnr3o!j=h7xo1bzoLn&$nH|lwU7entzH#B!^yQl~b}SclJEs zv(>WU%~{T(Yj@tr$vkAcD<_h4cP?s_O~Ylb-E+t8UCQU=qTv~K-^}MafLm9mApnR_ z`&JzIK!Q)p^cA4cEaV7|;22VZilf7VC?%zLCK2=bk|4-2()uyp!rS;ZzJu@Lo9M&^ z;i8C(QmlVR7?xzQHY_OueIn7CDy6n3l4EEi{Xs+pQHhg&9ifJ8yn{_-MD)bylU61) z5&iuGii&~A$${ukc7%+CbFqw|Xo8SdRC!a@gy@MHO-%UC`na+rNwUmopoU>cqK@s_ zBvBo{--;x~d-{DgUcsCAAxXWBv-k#i|2huiF-R19oHR!fYL=>ey^65;#-sWlaG@Sr0CRC;O`>&d4ll1h%ezQxQF}r0vs%3 z1%HQyD*k~vm{`C+@n`%6ckm+qhTq{2_#=Le-{7~%@D(Z;|I!I~f0orhJ(A{o!?ajpsf{k)OxbY#r8V zw}w?|P1s{z+0-P8h z0?$h0>V)3r`#QO;x4pWqKmXv}9g&RkGu}VC_dhH7R&EW7;G3uFp16qDJZ6Kq=wd$- z+>^2r>FW#bN&a1=dn@nXha+@1@|$vyZbgS~#}}X>!V7??R135GWnqnObi}r@h-a0A zDpQh`HlF0;>lw7CJ80LgWtGkrhSr62d%ByiLvjW^t%|9a#Yd@f)*j{Ftx5jw8l?A% z7`|VG@cmMo6kc2qlekGy9ikS&tp6sIQFM&Ep!ZbOa=q)!b?HS(d=)b#(@h$VV=gl{ zX;qS5i6yHgtHP4Yrjg8-mzZZ+UTF~Y)+w@i(h*@*+OcR>mONG{85Ir`326m+iww}K zs9=>Xhjd)CLOMMt8qPw&s1#S}by{W)D-zGhyS|TvHO}T^s2YyTu2ej3t6*`S3}>X| z@OM(#tgz3RMXy9}N{%(}uvI=^EnD6-;<=>5QGsrxp02JW^H#Z-oFdoF0)MNHQp->~ zOa7lpi^!Z7K}Q)*6P+S@^t6mQi`ypsGkf)8pqF%chOH2v`!ZkhdYa6a~?;Y&6^cphVo`Dvl%Pm$2ViixXx9{r(0JP+%1_N zLpx!btm0i}+$<=!`La=1Ko|VdPLh$^M$t6L6y=87yiI>xxKEVtWy5U?^@HpIQOa$_ z^FtwDxP0JQ1gorEw(cqcF8S>+dx^Q;xW9CGO}rJd(F@PIW)+Mwn=u#JwC9+W`8eFA zJcUU^lB0T(9IZKn+$Wzrk{hQ#6Fe?nO&$YVrjV!}MQV%G3e>9P+oDxmDpNJNKG~q4 z`Y=0tm*uMz^DOtsblB`H@p0VOCs^AXxEw9W)BIQneh9 z;|IUT$G-Me{`>2BpT5657R + +// +// AUTOGENERATED BY BUILD +// DO NOT MODIFY - CHANGES WILL BE OVERWRITTEN +// + +uint32_t RESOURCE_ID_JS_SNAPSHOT = 1; diff --git a/build/basalt/src/resource_ids.auto.c.41.o b/build/basalt/src/resource_ids.auto.c.41.o new file mode 100644 index 0000000000000000000000000000000000000000..05903596be0e8f59d5bac497507ec9035f834403 GIT binary patch literal 2176 zcmb7FO>Y}T7@qOkaay--LmOzRgtn-tMq+ne+ey=c0M`j2Dfv*`To97AyB_Rq*Spnz zM4^BxPH^VHg)2A26^R?a0CD2Pfj@v$4oDz`;CaV0wi7i%yz#X%Q zR(qS>UU$2_+kJcI-puNqr!815OC}vJm6EabPUp5+Yc?z|$jtWMmbuoxvti!Dp&&Ad z%*{Jpt5Ltvu>n3hA5R^^^;6e(`QJL9(Jfi!|Z0v{aW?2$=d4~A^ zAy*JfZv{_M%J{pX6u|hoF?JQ4;>M4evEy;%Be{--xBH)QuOQ}lzVW9E4v6O4;5s+i zSI|BoqD1>Pp`X%5;FB_Ap8?OI(RYgS(Y)S8(_=u{cWA3blxSZFU2}5%jdqEM673s8 zpRId{B2IHCpw&Z>U(GY;iV$oZZx5$eS^%W0Ess$P=6z3`T!K zQ!!X&s(=~n%rX7!0~1*ae^A^-pY literal 0 HcmV?d00001 diff --git a/build/basalt/src/resource_ids.auto.h b/build/basalt/src/resource_ids.auto.h new file mode 100644 index 0000000..bf38521 --- /dev/null +++ b/build/basalt/src/resource_ids.auto.h @@ -0,0 +1,13 @@ +#pragma once + +// +// AUTOGENERATED BY BUILD +// DO NOT MODIFY - CHANGES WILL BE OVERWRITTEN +// + +typedef enum { + INVALID_RESOURCE = 0, + RESOURCE_ID_INVALID = 0, + DEFAULT_MENU_ICON = 0, + RESOURCE_ID_JS_SNAPSHOT = 1, +} ResourceId; \ No newline at end of file diff --git a/build/basalt/src/rocky.c b/build/basalt/src/rocky.c new file mode 100644 index 0000000..56ca996 --- /dev/null +++ b/build/basalt/src/rocky.c @@ -0,0 +1,9 @@ +#include + +extern bool rocky_event_loop_with_resource(uint32_t resource_id); + +int main(void) { + Window *window = window_create(); + window_stack_push(window, false); + rocky_event_loop_with_resource(RESOURCE_ID_JS_SNAPSHOT); +} diff --git a/build/basalt/src/rocky.c.41.o b/build/basalt/src/rocky.c.41.o new file mode 100644 index 0000000000000000000000000000000000000000..f78c7b0846c6dfc0f1ac5c08efe6e4aca6fe1237 GIT binary patch literal 3788 zcma)9O>9(E6ux)ooA=>n)lw6 zpMV;P3M@1x7-KZ*0v1LWXfVbEc5Kub7c5LnT(~pQjSFK8iTIuS?(Mt*QBQjB`Mu|y zd+xdSOD#` z6(80O`@qF{Ecq^Q;wUDTxGUz(6gkm_iBqT#K*0Q*2pstnTtfzQ^m_XZ&`F~CI{q1% z$2kQg=m-$w8=-Ez4UQ*>OeH`*1fr=41Z}1PqnSU=dsw;+qH)2_@LtB&$F4!p!e50b z`eVCr#asCju`g}loJ`xuY1>DzV;TMfW*+6l@wQ2lG1%`&XHwDhmh?iRmCy1PBoNuo zQmMxwgrg1?P47=VmYT?*Hd3BMVPZU$A~}aV(G8=m&B#?+$H_XGf%E{ju}atbwJ$=S16v~#qB2cbq ztt!$hF69Qa!JKRM<;r%YdTMY$H{9i%>E(RKDSLXsuIQSkm+gYSXqrM-aVl2MG77dn zpzYE6NWJz)YioMDVwS5#t1c-`CV|NM+~`xDZdP3vN$Qk}>9{IOU2f{1e1taUI?r2X zZHJ4Ny=b|5p=y_l$^(^!xsJJXS~IC!o?pam)Jk+JK{BADFtI$R>Y7&GE_#|#^&N=C z(Zt0&(b1(JJQ#_f?q#R4m=zP1T!}VX0QJL(>b{k*p{#6JhGs1@S0MEsr__vt+onP=Z@F z>s)#He(3}5qge=G_@A-zglwYZOB{)1|`KMPbr7~U1@GZs;jg0Ki zcK7$?3bvmenw`py4Gm9Z=aDdC+m-B*;kjI2Pj8>rvoAN;pIZgpE9iZ>zTLUSJ$riw z_gcFjm1Q65!__jV$rhU{VdVgFtsky7Hj7l_{Qia-pM!fhhy6~qsR3w z0ME+VbW<~H2d{uG@=!W?KJq#mQ1ebN`$hrScLQ8f6k_;HD;mDRw1Vd`&9%xJ31Mrv zesx6?M=8Wbt599c+m#azRtVZC6kKaHSQJRgju~bR*QhL7(rsXIzXb1qr92`prkTz% zJtIs*SvAA=UAs{A>%E+Cjb$9d|AsBFq}PkSOa#IAI-qG5Hx9T9gY0lU1>9>#I)a@T z^s@e!T@P&TjT?SsRoq>$TZf_G06s*Uz-+{zH-QGlJA|Qf0LhMEJQoruas=|Qzj^q} zLP`Fp2Fl+YXtf3;y9y=|5-5^tt!T3Q7>Q?zkf3x1_;6ewpWiHG6qn>Gt`AzR0m;63 zfWH;!!u~G9Ukha9FNLA}y#_k$?-%$ZI|WL29)hsHDIq4K*5n$}Q15WE7#W#t4skuS_7~Nd8(dC}!B-&v?|RClx4vidQ%+kFnpxZ(5~`uI)aMMC&r4c;Se|$LjVT zWT(859-9n7RGe^45WQ!0RCH!oPn}hRsOXF^-zwg6sz(4+@ft+yUUtfdDp-Rk%LtED z6M9?Pu%EC8^1H2OF6usT55M+%WxLO|7nykU<+o6N@b3RIijVq(Ki;D1jrg%j_n{F9 zp`}>khT#2)KuF)O2uedeMHni9I|-v-b`XXUy^W-&{wBO%;vtC-OFSjx*dZHd1pjK=;+>VK8;-z84spve9a u!tk$2d{|PI(>6^X+ZRnnS(cK$Gjp2U&CT4o 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 literal 0 HcmV?d00001 diff --git a/build/chalk/appinfo.auto.c b/build/chalk/appinfo.auto.c new file mode 100644 index 0000000..8bc86e4 --- /dev/null +++ b/build/chalk/appinfo.auto.c @@ -0,0 +1,20 @@ +#include "pebble_process_info.h" +#include "src/resource_ids.auto.h" + +const PebbleProcessInfo __pbl_app_info __attribute__ ((section (".pbl_header"))) = { + .header = "PBLAPP", + .struct_version = { PROCESS_INFO_CURRENT_STRUCT_VERSION_MAJOR, PROCESS_INFO_CURRENT_STRUCT_VERSION_MINOR }, + .sdk_version = { PROCESS_INFO_CURRENT_SDK_VERSION_MAJOR, PROCESS_INFO_CURRENT_SDK_VERSION_MINOR }, + .process_version = { 1, 0 }, + .load_size = 0xb6b6, + .offset = 0xb6b6b6b6, + .crc = 0xb6b6b6b6, + .name = "geiger", + .company = "Zahkc", + .icon_resource_id = DEFAULT_MENU_ICON, + .sym_table_addr = 0xA7A7A7A7, + .flags = PROCESS_INFO_WATCH_FACE | PROCESS_INFO_ROCKY_APP | PROCESS_INFO_PLATFORM_CHALK, + .num_reloc_entries = 0xdeadcafe, + .uuid = { 0xA4, 0x26, 0xB3, 0x61, 0xF9, 0x7E, 0x49, 0x34, 0x85, 0x81, 0x4E, 0x1C, 0xB2, 0x99, 0xB7, 0x4A }, + .virtual_size = 0xb6b6 +}; diff --git a/build/chalk/appinfo.auto.c.32.o b/build/chalk/appinfo.auto.c.32.o new file mode 100644 index 0000000000000000000000000000000000000000..9dfb64605c52357524e2609b862b5eb7b1b276eb GIT binary patch literal 4500 zcma)9eQX?85ue?=TR;13$BC0BrB%7sN$Mc()?aa)(3YOh=lJaNoptArxFBu!_SW_$ z_hIesS#ec?8wnw#A|WCE2ogntA|yyDs+St27I^utc*hPm-;IO||N#D2tb@Hx+V61I$)2Kc7w+~Zw3~gCY|k!wtf$?u4UjK#wwt{{w&!jl|Gs_f9Qi!Y z*%&L4?YrFb1p5rJOPqa>y-DnQoZZjb^Dh7R7#*+fK71r2Q3V z53)Z|zSpRqp}s8%I(DEh!zW5r8*Rlc@{ri;n833h^sVm(l+gBT+7S^c#0tojkC9G! zluXK}J^5jjCFrEn6%Ln)M92zV6bYoA(t+;YXsG*^?j8lB?T2Xe9;Dczn;_JEEc(7^ zrWacZJ;PLCDH-CDGmaLkZNT?O7 zq^=rJ8g4HLL6- z^oC1nTy}kZ-ShD@hBvub4uBi?yZ6TsApBnJ>&@lWb-_4UYAI>29u@kjX73vzZC4 zkS^vI3aKF_RS+O3r6+4r_YVgq4cE>VUs(HcZ>G>b2HL&2?JH&Ezl= zG-{5uS~JTr+=n)lHeGYTs|US$$g79FdW3IP^_tyAO-6COTZ4=RrlXmH#z-?gJcLty zopx{(wa0S{u~f`Eh`bvkV#l?(dwpFLwm>Sex}t5yv+Ce7~Q){X`?!&GKsBAxS`j(GLa?Hx?-MaQ)phTEK-mJ`t23FFCP zGCL1&Je4{Y>mMG9mn=7yEX>Bz$?;5V9{ zeCTj|^~l)3=$LuTAU8^AVqZmoyyPwhThNtWUHI%sge(yyeYU9VJcxUkOiy!YURQNL4&f{~^??k{hhH^VT zei_*TZ~}uPKm;Fpe^bAv@Cn9?q2UqK`Ng;0hYDXN+XeL7=Q{;#^dS|@`|wVlhw@TB zKd%*NgCbl-LotxR7aPLQ`{+mc5H8FR1rde(=-CqJ`+WevTJos#i|n&wzWz(- zH|!HcKQDH>xn^Yk4f>rWK@{JQ&|fn$#qdk*4a6RNQ1r%2GR;X~nV<(J@&Et; literal 0 HcmV?d00001 diff --git a/build/chalk/pebble-app.bin b/build/chalk/pebble-app.bin new file mode 100644 index 0000000000000000000000000000000000000000..6f7f73af61ac7fb039972a5f069c1912e24b57cc GIT binary patch literal 252 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 literal 0 HcmV?d00001 diff --git a/build/chalk/pebble-app.raw.bin b/build/chalk/pebble-app.raw.bin new file mode 100644 index 0000000000000000000000000000000000000000..c1a8573464056b76477cf6fcbe05c96e7a579976 GIT binary patch literal 252 zcmWG=@^K6ZU|pV?b8~tQ9&D`z<)4FXN0|N_?BLc+CKy{bw zVu=h67p9CUZv1-^+!^+-00NG!3?DduFeoy7;Q7I*!0>_p2ZI8~UIqsKEsUQ3zdze= W12h=Iez3m=&c3z(3@6YcAOHa6kw};T literal 0 HcmV?d00001 diff --git a/build/chalk/pebble_app.ld.auto b/build/chalk/pebble_app.ld.auto new file mode 100644 index 0000000..f36f597 --- /dev/null +++ b/build/chalk/pebble_app.ld.auto @@ -0,0 +1,53 @@ + +ENTRY(main) + +MEMORY +{ + APP (rwx) : ORIGIN = 0, LENGTH = 65536 +} + +SECTIONS +{ + .header : + { + KEEP(*(.pbl_header)) + + } > APP + + /* -- DO NOT ADD ANY NEW SECTIONS HERE AND DO NOT CHANGE THE ALIGNMENT -- */ + /* The GNU build ID is tacked to the end of the PebbleProcessInfo struct: */ + .note.gnu.build-id ALIGN(1) : { + PROVIDE(BUILD_ID = .); + KEEP(*(.note.gnu.build-id)) + } > APP + + .text : + { + *(.text) + *(.text.*) + *(.rodata) + *(.rodata*) + } > APP + + .data : + { + KEEP(*(.data)) + *(.data.*) + } > APP + + .bss : + { + *(.bss) + *(.bss.*) + } > APP + + DISCARD : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + *(.eh_frame) + } +} + +/* vim:filetype=ld */ diff --git a/build/chalk/resources/rocky-app.js.JS_SNAPSHOT.bytecode b/build/chalk/resources/rocky-app.js.JS_SNAPSHOT.bytecode new file mode 100644 index 0000000000000000000000000000000000000000..e0d530a6036a291c47f1054e9168647bdc66049a GIT binary patch literal 3452 zcma)8YiJzT75?r#_M!L7j-1%dDoW#-ty6hN-i_^bW7(Egc50`_7AYnaWp?*kJ7~4D znH|YepkRtzQ?)YwWk?Gl1QJ4Chy;|NG*BG2h!9E%A%qY@Tau83QcCHM{t7vFW_DM* zkwpjY+{ZcRJJ0(#|Hwr!03m8GMuGQbcyopR3@WWc31JWRA;C24jWbD($!}*6@#r#R zN`$2Tgjex8Uc$?G1uvirC)h~|C*{b%CX368RE^6jqhBao)#Sv+L~IQ0BtL{Olhi25 z*AS}Mz}r|uNP8f5Ju?|H5Thn8m;GCBDKh@C3fW-|!E7j!*C@K0_9d;SxT? zM|d1(@hC3h3_iwR@Cg2jpW*{#u!%{W#(Ox0aZKPC9!7%VkRrQBC}+da@IHBxLYO>Y zk!Ur|+7gKrYfpBFU+0=at6j9(?X4MXwbuJgH+sn3l-#?r79z&J9T@w!G77|j^)%aM z$R6H`5nVOHo<=deoo2iByI7K}5L10n3_EKSL#fN?dzvUdoq6! zy$z-N>d?NcM)zvn1&W9Mg9hupt*qe&YY^3)`6EsIUc7h2k2dj(tnG|{Z-YMw{PysM zvMgfnhscX#bF_9Fv|EF$G*kRI?g;K>HMU*UT6F3|^>`BH|3$vrw0w?nSyey4A9%3g z(vR!IHCfO`4%Qb8iawqFQoG_Vre^sfQYZA)(XT zl^&>ec#9QVio+)!F;F+rFQP4yNBtevatf@;y228MqTT!SliPW#}AL~WF+kJ3Jw@^MV$L;J~=)5?!b;DgQ{Hc+L)I35(nu5AkA zw(*{E%}B56YA89jv9i1=(N0UtCp5`;gHF)Z)pv}Mm73ggT0YrC*ivC)i)wUa4WHUc zTPyfz^bX)e_#Sv#9@i#}cF)$#hS7d=#kh3+olS|9iZk9jy01ir^ckYKvb) zYaFw_Uv#nW@$X4R4fXf?_oVpG(Y=-R?!ytf8^ujIM7N?tx8vi`5fTYNSgr<9{w-Uk z8y%7LG@@y>O;aeyYP$&X{*@FulAW|`m(yxj6G87rvLo3e>X3{C#TSV#Y?&#z zo&n^8L-6E(#dYji9!0KbSNM68>?Ayr5i$2^7u}_zhuwW{YNS7Txetn;|6^%)DiiDvFKJd4cDMF9eGB zf>~(~F4^tyC+B&^9rsE{hzDU^=@}z^D>c{l-6`n1V&(p#p%i+`0L>I9Wyb`QD#m_eLJRb?x&QKxrz$#T- zg5ddcHPA5lV%c_Ff$x9!jQ##;@qK;Vn_pcR^Vd6qJ{0u*LH{4058np;|Bj#j`%?q2 nP3{YDhR3|AIqc8(39jxyP`u_%aESM`n-#7LhZ2Z}R literal 0 HcmV?d00001 diff --git a/build/chalk/resources/rocky-app.js.JS_SNAPSHOT.reso b/build/chalk/resources/rocky-app.js.JS_SNAPSHOT.reso new file mode 100644 index 0000000000000000000000000000000000000000..60bd8d41782ae3459edbc01e117df46dde41ec1b GIT binary patch literal 3754 zcma)9duUu)8UNkayz+juo4Tz#*{t^7*fyP;&baNY+qBK2?e;~JQI@4-@64QJ?q)J~ z?jva;7OG?|Mzic+3o0zjf+FflSRqQ*1?e&pmPJHFL_}0nR76Dl!@tDu+%8W^Sa6tYEjb0|p7K_!^sUpgR{kYc@DjH}{>^~2p?%&K?%AT6OBC6h zSus7+s@T$_ahg&Mtnr3o!j=h7xo1bzoLn&$nH|lwU7entzH#B!^yQl~b}SclJEs zv(>WU%~{T(Yj@tr$vkAcD<_h4cP?s_O~Ylb-E+t8UCQU=qTv~K-^}MafLm9mApnR_ z`&JzIK!Q)p^cA4cEaV7|;22VZilf7VC?%zLCK2=bk|4-2()uyp!rS;ZzJu@Lo9M&^ z;i8C(QmlVR7?xzQHY_OueIn7CDy6n3l4EEi{Xs+pQHhg&9ifJ8yn{_-MD)bylU61) z5&iuGii&~A$${ukc7%+CbFqw|Xo8SdRC!a@gy@MHO-%UC`na+rNwUmopoU>cqK@s_ zBvBo{--;x~d-{DgUcsCAAxXWBv-k#i|2huiF-R19oHR!fYL=>ey^65;#-sWlaG@Sr0CRC;O`>&d4ll1h%ezQxQF}r0vs%3 z1%HQyD*k~vm{`C+@n`%6ckm+qhTq{2_#=Le-{7~%@D(Z;|I!I~f0orhJ(A{o!?ajpsf{k)OxbY#r8V zw}w?|P1s{z+0-P8h z0?$h0>V)3r`#QO;x4pWqKmXv}9g&RkGu}VC_dhH7R&EW7;G3uFp16qDJZ6Kq=wd$- z+>^2r>FW#bN&a1=dn@nXha+@1@|$vyZbgS~#}}X>!V7??R135GWnqnObi}r@h-a0A zDpQh`HlF0;>lw7CJ80LgWtGkrhSr62d%ByiLvjW^t%|9a#Yd@f)*j{Ftx5jw8l?A% z7`|VG@cmMo6kc2qlekGy9ikS&tp6sIQFM&Ep!ZbOa=q)!b?HS(d=)b#(@h$VV=gl{ zX;qS5i6yHgtHP4Yrjg8-mzZZ+UTF~Y)+w@i(h*@*+OcR>mONG{85Ir`326m+iww}K zs9=>Xhjd)CLOMMt8qPw&s1#S}by{W)D-zGhyS|TvHO}T^s2YyTu2ej3t6*`S3}>X| z@OM(#tgz3RMXy9}N{%(}uvI=^EnD6-;<=>5QGsrxp02JW^H#Z-oFdoF0)MNHQp->~ zOa7lpi^!Z7K}Q)*6P+S@^t6mQi`ypsGkf)8pqF%chOH2v`!ZkhdYa6a~?;Y&6^cphVo`Dvl%Pm$2ViixXx9{r(0JP+%1_N zLpx!btm0i}+$<=!`La=1Ko|VdPLh$^M$t6L6y=87yiI>xxKEVtWy5U?^@HpIQOa$_ z^FtwDxP0JQ1gorEw(cqcF8S>+dx^Q;xW9CGO}rJd(F@PIW)+Mwn=u#JwC9+W`8eFA zJcUU^lB0T(9IZKn+$Wzrk{hQ#6Fe?nO&$YVrjV!}MQV%G3e>9P+oDxmDpNJNKG~q4 z`Y=0tm*uMz^DOtsblB`H@p0VOCs^AXxEw9W)BIQneh9 z;|IUT$G-Me{`>2BpT5657R + +// +// AUTOGENERATED BY BUILD +// DO NOT MODIFY - CHANGES WILL BE OVERWRITTEN +// + +uint32_t RESOURCE_ID_JS_SNAPSHOT = 1; diff --git a/build/chalk/src/resource_ids.auto.c.32.o b/build/chalk/src/resource_ids.auto.c.32.o new file mode 100644 index 0000000000000000000000000000000000000000..17ccfdd7c27239b5ecea77d9e7b025b88c2b6860 GIT binary patch literal 2172 zcma)7&2Jl35TEthaay--LmOzRgccOkAhEly?WAczfa{o&Kt2>V7ldT(t{?U`_HMPi zj>4A^ClE)joH%pf3KAFYTsa^P`~y9Jgb)%!^f%A%*-q35Mt<-2o0+#W^FIA?>#f%f z!yqjNEz?vZTFOgLp)O&W7N{)!A3@JaTi)0P8gHY!CJk^Ha}Pmt#{5?dxx!x(ia#^t z3*Q3FZ_pXLZ%Rw?h+)2f9#H%okk1#wD8uMt8Cu~7>3I#kQ83X17mVl2mr7>&TKVD} zK3k$v=@qC5{Un*?+ohLE8F3 zuL+vr_T!;&-}m|lfx8|DqoIhh)ZG=nKM?K%33gW;YMOQr?7FjRCqdO7gwg0|weEV! z&<;{Ni{nA+`eEccjyni_w-*G`7sZjVh3AKE-MQ&h***F3w^M%@1%pvnP|)`V2X2}K zL}}K=x;cF=HW6t&N&?XdyQ$-ive*gabO&+Nvt-9hJc`n=7m2RL$|=)J;`<_)&a)@N zo=9AO6b`y{cYEJzTC&t>A@1XH%aq5`O)EKOo+y}DLL(Gbt9CM)l)Tq!@9gh2Tb+&d z&StyQ-frx+-`KfFX+KUfYw|TuNX<ada2_|l$V4Z{v5)0C8t(0Xj(ZVfPR1KQTW~-$m+#cr zB>Oe=pUmhw?@dAFE#|uE+g}joMM)Fz^^| zU!q~p9ss1YpwzSi)S(x^_1?1k2+G$?l<0Ac`b@CvM;x5rfEUsD)#v##=QWv)_dWKb z0-F{cPwN_I?RonBUu|bJC)JLv=CMlHKbw*DJT1-!kkw5MraT$5I*ObTQ|{o@U=sfU zO~s_rQ~@*T+zI{sbCq<9%Y}c`;sPL|K;7uPbyE gt|)w2VM8I`EB=08;X4ZND~uI>$cT-VbzpfO0ev(pc>n+a literal 0 HcmV?d00001 diff --git a/build/chalk/src/resource_ids.auto.h b/build/chalk/src/resource_ids.auto.h new file mode 100644 index 0000000..bf38521 --- /dev/null +++ b/build/chalk/src/resource_ids.auto.h @@ -0,0 +1,13 @@ +#pragma once + +// +// AUTOGENERATED BY BUILD +// DO NOT MODIFY - CHANGES WILL BE OVERWRITTEN +// + +typedef enum { + INVALID_RESOURCE = 0, + RESOURCE_ID_INVALID = 0, + DEFAULT_MENU_ICON = 0, + RESOURCE_ID_JS_SNAPSHOT = 1, +} ResourceId; \ No newline at end of file diff --git a/build/chalk/src/rocky.c b/build/chalk/src/rocky.c new file mode 100644 index 0000000..56ca996 --- /dev/null +++ b/build/chalk/src/rocky.c @@ -0,0 +1,9 @@ +#include + +extern bool rocky_event_loop_with_resource(uint32_t resource_id); + +int main(void) { + Window *window = window_create(); + window_stack_push(window, false); + rocky_event_loop_with_resource(RESOURCE_ID_JS_SNAPSHOT); +} diff --git a/build/chalk/src/rocky.c.32.o b/build/chalk/src/rocky.c.32.o new file mode 100644 index 0000000000000000000000000000000000000000..6aceab63a6fd9ca3238116a5c3722dcae95fec50 GIT binary patch literal 3784 zcma)9OKclO7@k=_;>3xY*y$s*fLpa{5cO_eO&_#CUTss7G&BvB;9%D4ZM==+jn?b* zp`xM|RFwk{AzlI@E)U|>jGeWJ=|^IK;v-|lW~Z5LuhY@umeI1dIx`$_pwwOrUOEq<^7DUiC%@FlRpbn zf7Df@mF!r1mBsNKR%@8);9VFj1aNlAXgI??uq24$M_X$0$0Hfps62(W>)@+5?vD z?UR`0DU{^aEgoOSVj*xMmuZv7bw>Ua)zt?i}JHpWuQf%UJ!G$~W3 z&SZiZC7_&L^_(#66RFZMM!}i7C#ix(CFp=@>?v{3Xm=oEok80qbdsZi0Z+Aq$`IBs zqUahc)05v!buhdJkm>Yut7MiJjjCrcqvS5x##ytpXc^$ve$|+@3x%?6EDOjL z?G+_fi;KA-eK_Y?1G%zOshu7kGE8qNXH|2)>z1oV!KoO!Zj_yZv0z!kS8*$L&Nd5< zF{JO(2gqIjqp=OYQ?bgmqTMtpT}}d-jk)nhs)kkbJWSG{saUS3W@!X#`X`Fex;*!! zZ8a9SU^@%8XB28qxhM&!D9m%M#WT7^wW|6>yo!2>wj`Je$x>@sG zn8m)t#3iwAv$21_rlII%x3Z8G4|=7mCD-$_wMx}lsMy6UnT}4(9hpBmHj$qk&mW%4 z&&`a?&K){(j5P&K&OA0Ug#Z=I4$jPH$FicLOt3eF2Wg1Ck-jMa)$&;V7#M27^%&t_ zGMx&mfn{(YFPVt)lv63Xr-CBo?G4};7{N&h?877M&a^K-#{>ui+dF89VX)WfLYt<46&)WW(Wm~x{&o+IVv4dk{ zd$YZR1G$3ZXGe}sXD3ERC$q;eVdQoy*~6oAxq-g^0ljZeZg?=a0=ZwvdvXIia|^q6 z_YLp1citzna+qlyj-}4%Q7_HF}9hQi+S&^EiKc^~{oQ7J$ANU`a{H;WNEx`XIpJc2kj+BDvsZ#afu-zPVb%1^%7QIvgNVOda0%Fo5%XfY zQ^PIxV6}y9iN2iLidVVM;Byu<{`4{;QN6D*;HOal&s#K z!Dc-PBb{mb^+$Z2=#(?e_cJavI+Lm?KBX%R+oSBaRb?lP)K?!^BTX|Qe>fxQ(WbQr zvuiL$>bHjCqaALv$Zew|;$(*Xbg~*PB2GqF?-F-8)gx$B@kWa@-Rv}9s$io52B`=y~YbfyU564*nC^RkT)L3B5gpUyYoUWp?T4@sPs__#z*n! literal 0 HcmV?d00001 diff --git a/build/chalk/system_resources.resball b/build/chalk/system_resources.resball new file mode 100644 index 0000000000000000000000000000000000000000..271679b09474d710e1b8d163055d2269a79821f2 GIT binary patch literal 3862 zcma)9duUu)8UNkayz+iF*|zRvyV`qW+jMR^PI(>6^X+ZRnnS(cK$Gjp2U&CT4o zkEDrMsFJm8G|T?Apn}MPBI-(5AxhQ-=`s?QMMOkIL{wB%L`3|xeZTK@Uh_aKxy-W{+!FIn_{&xL*6Hb@VOgo$5%)YN9B7|&g!_)D7Wx`uWmd8b z*YHid;yKbCM=o?Wcy{q+R`NYZx#PqhZzz;%n7SD#rJOh!OWb#oY9Uo-cg>2)O*pB? z<20ojSmO=Fl+!|Zt@oWawIElFdFHeiTCPq`Pu@6pYx45VDW{_l_k7zmW|-6Yyg)>l z6{qWt(_J`JTrjQjNIfub#I;Lv%g2ps^~B4b(_<9myQamQ-r1f)r*F73%%84WhJV*~ z=RK$IMnUGeb@~e;NgpW04a+n<<~aj*oWX@+K`tA<;XE<***4(T)kz2dV${Bs1U`@u z&@z1mC^QQ>hCv)gMo@8RSP-SO^v(nl0bddXIYC-K##?wB-^O?FU3?SmI47JJab8OF zZVAJZEY^l4MW9bCUQ?ya=Ed|FT1bBgaY0m)q+dsAX9EcMK}}t!I^kQ z7v8H4i;0lZMO}WcmY0$n6ZlhrlM5Uh8vi~75oZ6#Z~+a&*SHq zz!omyGTz4pjN>An#dF9|9&+UO2-WNeRD3{@UxX>yY~_7*)GTtdpGhzpDqP>t9o)xj|Ud{@KIjq*A56- z@`97v03Wv1IlA1?(FS*LLcu+Cl!neuJ5P`o2RG_LYKNLe4>zF0Q1y)7I zn8$s=gQ}+Y%GxfQ+E62(#QA@bpL#5E)91aA8@1oBpd-x$4hu(~j+XC7gJjUA*tSCT zjP@}p+qJ44<==HBFQ~M{_+sBv`sjzHhXrkz419d}*zsmaCmO?biStHIHYRlWA??9> zSwc3g)cWqx#fMrGC}fYGYO;5!s@ZMT*LIuDeWIxt<2Hj`8Gx$KZ1ZB<;s}|ibu?TI z7tuD&GvN-~bqcIYnk-~=S$+B~nMS&tsgIJ4QG1i!)0iA+j1D*1Pc^$U1UiKWn?eN0W~MC&q`s^U}C_ zQEv%+o!Hb{USHK;c=+y?NJjY?9~|9#pOt(o?+l9Io2TloxQN$0X2ZDXVjm3eNm+^Y z^n~{$|IX9BRSfRK5xN`sO*urjqD!~qi_j3`1wdS?MOpr$utGOF5*v9W^GZsUDalF; zPx8^#99pw&v};%LO8X9m)`4tmwv(?zat2*H6*I4hk5lEWUCP}X6a3vZMDGu$AzmqJp z!ai-5{aJcba;zDbE%W)RW&78N=aCLa1v-&=rn;0a+EzJziCi~J{H;1lEl2G%`F|=a zB6m^*9c4I4bcX2BlQQnw+&1Z-+O3}ey`-%vwnTjH%gn4FI6yJD1W)mMzH861BubX; zv0DcDNqD5ga~|?0{bh^iJc%NkF)M)#<;`AXQ+6zfZ_1W&ovV^hx2`C-H*5L~t%PZ^ zihr4Lv!L7-Eu%Dt4g{s0AS1VpvT2Yh$_=-9oBrN#pD5pphSw75huH(-l-r6QghIY> z`Ovc%mYHSQ_mmKq{C1hMz&w9ESUS8W{u0^fhHqc9ONPa!%y~BHyJlr332&iDVbYM~ zsGcN8YtA6|$tR!W#_7)lkBe86$G{dTB&tW5+B~%qwJP~GZwozu~L^OAW7D6Y?isusqD_^gJ#=(}Vw(E2J@ON '/home/zahkc/.pebble-sdk/SDKs/current/node_modules/.bin/webpack' +---------------------------------------- +Checking for program node,nodejs +/usr/bin/node +find program=['node', 'nodejs'] paths=['/home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin', '/home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/bin', '/home/zahkc/.local/bin', '/home/zahkc/.local/bin/lvim', '/home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/bin', '/home/zahkc/gems/bin', '/home/zahkc/gems/bin', '/usr/local/bin', '/usr/bin', '/bin', '/usr/local/games', '/usr/games', '/snap/bin', '/home/zahkc/.dotnet', '/home/zahkc/.dotnet/tools'] var='NODE' -> '/usr/bin/node' +---------------------------------------- +Found Pebble SDK for emery in: +/home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/emery +---------------------------------------- +Checking for program gcc,cc +arm-none-eabi-gcc +find program=['gcc', 'cc'] paths='' var='CC' -> 'arm-none-eabi-gcc' +---------------------------------------- +Checking for program ar +arm-none-eabi-ar +find program=['ar'] paths='' var='AR' -> 'arm-none-eabi-ar' +---------------------------------------- +Found Pebble SDK for diorite in: +/home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/diorite +---------------------------------------- +Checking for program gcc,cc +arm-none-eabi-gcc +find program=['gcc', 'cc'] paths='' var='CC' -> 'arm-none-eabi-gcc' +---------------------------------------- +Checking for program ar +arm-none-eabi-ar +find program=['ar'] paths='' var='AR' -> 'arm-none-eabi-ar' +---------------------------------------- +Found Pebble SDK for chalk in: +/home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/chalk +---------------------------------------- +Checking for program gcc,cc +arm-none-eabi-gcc +find program=['gcc', 'cc'] paths='' var='CC' -> 'arm-none-eabi-gcc' +---------------------------------------- +Checking for program ar +arm-none-eabi-ar +find program=['ar'] paths='' var='AR' -> 'arm-none-eabi-ar' +---------------------------------------- +Found Pebble SDK for basalt in: +/home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt +---------------------------------------- +Checking for program gcc,cc +arm-none-eabi-gcc +find program=['gcc', 'cc'] paths='' var='CC' -> 'arm-none-eabi-gcc' +---------------------------------------- +Checking for program ar +arm-none-eabi-ar +find program=['ar'] paths='' var='AR' -> 'arm-none-eabi-ar' diff --git a/build/diorite/app_resources.pbpack b/build/diorite/app_resources.pbpack new file mode 100644 index 0000000000000000000000000000000000000000..03dbe577c601b4033bdbb3a4a01945e8a7808dae GIT binary patch literal 7560 zcmeHLZD?fW6@K3PF(3K<+BK_gofz%jJFd;n&Cb-_v2J!Zne5u#y11btQsSMNcQcnv z=8ku6vPo%SDX~k_Mx+#>EtF!Zh}IG;q$MiI%198AQi_O(Xi-rSk9kK&}N{`K%0R!178;gF5G+3`wt*Q2|XPJUYGs<1QZ%&P(_+b2nTQw38vxZIFsa< z{6Yp1PcAd2M9Au8JcsA;44%cG@DzG*lAV%pN{$R|v$(8C)wrxO`h>z&O-^i0#U{{6 z_9F;0NsW?y4WWuHynqd)B=kqTY@kolPI%7#yQ#KTx zg%4M0V9E>D!&PKiRus_(s)$3D3~W_1)a&-*R%JQbKjew=7@ox6Nb7kV!yhU7-(f#) zfK0hZ$#NXS?4)v9rF^A9Eo`u@ZFxxR7>-iu+*Z32>k0S+zxRF$LJoMM&;e^3nsm7&<-!mjbd8L|`qnjCg=;3rQ zIXpe>$Gbpr9wxk>;%E2;evB*l2^=h88K1#M8K2`4EX?Bze1wnj13ZjR@gDw#5AZhL z!Mn)f`*;xl#G7~s=kPsT#96$BH*hchj_=|h$Y2}OID^-48k3m9-M9w{;vq$GkI|fs zLc{BnNeW@gfJLI!H0wwtQmixCB|hC73XS&AXs89lVwT%!d4(y>g zxKmLe4sE8{K125K){N-75%xTa=Cw52uiwCu6ou&O!=l+;lNd_fMnBLb@fCNqQR_C% zer}{FZrZFRso&gidaw@dr)u=B*Ha)q^lvm&Z)sHxH&g>w_tuXz>3e+di63p!7qhlE z{w)ptfcV|v4P{ku?^ERQ*v!^`gLZ2$E6oz0$34NlS&i++T8mG8q|PTvzAEyq*F|o` zyc=?T?)RF|u?B&0HhNpId~f&2piQx3g&GO{n{u*$O+O^Q8)}+qw8X?>-&On2m$l$L#B^ zZd2cG7>0yTZ&!Mt+Fd)M*s(Z#;V}dC5dB58!}7Sl!&**(4Ov%M!cer^o>Qo0D2ZAt zT5t6<#Dn$0;d<*}Lwsv}@KC*Vn8axxJdvoiQuS8a7t?&)E#^b}&W_W{XC}x&XZIMW z(!w|qER21-ER1W$YsRBSdRo-a@QqWoB`=aSj#)o1y4Vl+_oSkR1_%9nQhXQa-pYFS;TYYG;-(y-ThXE0@ge94 zi3vbht_CdsoUPK0j>u*j(X`s3DMYf`DM&uFmO@vun|AGLTJ32P=)FjGCHurWq+rnB zY?yddx}K>JwHOa3 zwkz&=Ua6RKoa7p23RWd%I*zr(D>1tia|=9HF4!d=Te8epwz$Y$+ja{hptnw*&ykG; zyVQjRtF-9yT)`{}pit0Pk+sPIy^3;n(RRqDVwK3IA9>T6&zYtCidilfxx@1$GqV*h zM#7rpa}ktHr^3&cT;VHc3z-6Etl)@uQqd~$2dunXpf{z!nsfMy7%vxX_Z-P8WFt_4 zJ|ylcFUPWWF&~?z(5;+!tBzAiQ8`BOA5BU~9g#ps8IDjtLH+R~3NG2gH`yO;wU6ME zRV>c%Ws-|n<_fMC0OjBiJmp_;9ebWfkt^C2e!-+T36E?9=f3QsyHXUKN0H@oR>{*L z-s~klV~4!_W^4uLg(<~!;jD_w1EU+mh?0La_*aKe7;3c(G_-R()KG+u@Ha@`^j@Egdl@ z?lSopfNP(#b7qmxSPT53>sY0^C@PCtN|TzTNApQ~wB}3-pJH-JZ_;#4k(ZcFkpo|% zlxRNkR2Hb@sFW$T1v|f3q}deqe0~7xT7`ENt literal 0 HcmV?d00001 diff --git a/build/diorite/appinfo.auto.c b/build/diorite/appinfo.auto.c new file mode 100644 index 0000000..cb6bb31 --- /dev/null +++ b/build/diorite/appinfo.auto.c @@ -0,0 +1,20 @@ +#include "pebble_process_info.h" +#include "src/resource_ids.auto.h" + +const PebbleProcessInfo __pbl_app_info __attribute__ ((section (".pbl_header"))) = { + .header = "PBLAPP", + .struct_version = { PROCESS_INFO_CURRENT_STRUCT_VERSION_MAJOR, PROCESS_INFO_CURRENT_STRUCT_VERSION_MINOR }, + .sdk_version = { PROCESS_INFO_CURRENT_SDK_VERSION_MAJOR, PROCESS_INFO_CURRENT_SDK_VERSION_MINOR }, + .process_version = { 1, 0 }, + .load_size = 0xb6b6, + .offset = 0xb6b6b6b6, + .crc = 0xb6b6b6b6, + .name = "geiger", + .company = "Zahkc", + .icon_resource_id = DEFAULT_MENU_ICON, + .sym_table_addr = 0xA7A7A7A7, + .flags = PROCESS_INFO_WATCH_FACE | PROCESS_INFO_ROCKY_APP | PROCESS_INFO_PLATFORM_DIORITE, + .num_reloc_entries = 0xdeadcafe, + .uuid = { 0xA4, 0x26, 0xB3, 0x61, 0xF9, 0x7E, 0x49, 0x34, 0x85, 0x81, 0x4E, 0x1C, 0xB2, 0x99, 0xB7, 0x4A }, + .virtual_size = 0xb6b6 +}; diff --git a/build/diorite/appinfo.auto.c.23.o b/build/diorite/appinfo.auto.c.23.o new file mode 100644 index 0000000000000000000000000000000000000000..fea8ef87f83451df1c3ba58418b287f16af60140 GIT binary patch literal 4508 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 literal 0 HcmV?d00001 diff --git a/build/diorite/pebble-app.bin b/build/diorite/pebble-app.bin new file mode 100644 index 0000000000000000000000000000000000000000..f1ac9c585524ef8b5a9e0dfc8b22de59f001cc73 GIT binary patch literal 252 zcmWG=@^K6ZU||X%{99tPaaQO1&+N8 g4E$RdJ^z1yw%-P5FogYJe+`^{YyTNephZ9c0BWs4V*mgE literal 0 HcmV?d00001 diff --git a/build/diorite/pebble-app.elf b/build/diorite/pebble-app.elf new file mode 100644 index 0000000000000000000000000000000000000000..86cdd195a21f582b3cacf85519bf7462fb4a43a2 GIT binary patch literal 41635 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⪻h zcM%;gDD>Vz=(eBEGX3sTJ0-85i+JAT%_45A=^Q5gt0fGV)1GmXPn?FzS6q?pUH+&)jqlZy{F29> z)An4zHzh#>i@b?CuP+FtSnB9{hyFN)z z=MtTHi;+nlg#1%a|M~Za%TvOhF61UB?KN?})y<1@%F_kY&dY0$$#O1f(---2ThKL# z=gZ%{XG#|Bl3kvh#65B4&Y^M{oIL17m}%lB#+u5MY^!L>j~nNE%8ZQ-;&ao literal 0 HcmV?d00001 diff --git a/build/diorite/pebble_app.ld.auto b/build/diorite/pebble_app.ld.auto new file mode 100644 index 0000000..f36f597 --- /dev/null +++ b/build/diorite/pebble_app.ld.auto @@ -0,0 +1,53 @@ + +ENTRY(main) + +MEMORY +{ + APP (rwx) : ORIGIN = 0, LENGTH = 65536 +} + +SECTIONS +{ + .header : + { + KEEP(*(.pbl_header)) + + } > APP + + /* -- DO NOT ADD ANY NEW SECTIONS HERE AND DO NOT CHANGE THE ALIGNMENT -- */ + /* The GNU build ID is tacked to the end of the PebbleProcessInfo struct: */ + .note.gnu.build-id ALIGN(1) : { + PROVIDE(BUILD_ID = .); + KEEP(*(.note.gnu.build-id)) + } > APP + + .text : + { + *(.text) + *(.text.*) + *(.rodata) + *(.rodata*) + } > APP + + .data : + { + KEEP(*(.data)) + *(.data.*) + } > APP + + .bss : + { + *(.bss) + *(.bss.*) + } > APP + + DISCARD : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + *(.eh_frame) + } +} + +/* vim:filetype=ld */ diff --git a/build/diorite/resources/rocky-app.js.JS_SNAPSHOT.bytecode b/build/diorite/resources/rocky-app.js.JS_SNAPSHOT.bytecode new file mode 100644 index 0000000000000000000000000000000000000000..e0d530a6036a291c47f1054e9168647bdc66049a GIT binary patch literal 3452 zcma)8YiJzT75?r#_M!L7j-1%dDoW#-ty6hN-i_^bW7(Egc50`_7AYnaWp?*kJ7~4D znH|YepkRtzQ?)YwWk?Gl1QJ4Chy;|NG*BG2h!9E%A%qY@Tau83QcCHM{t7vFW_DM* zkwpjY+{ZcRJJ0(#|Hwr!03m8GMuGQbcyopR3@WWc31JWRA;C24jWbD($!}*6@#r#R zN`$2Tgjex8Uc$?G1uvirC)h~|C*{b%CX368RE^6jqhBao)#Sv+L~IQ0BtL{Olhi25 z*AS}Mz}r|uNP8f5Ju?|H5Thn8m;GCBDKh@C3fW-|!E7j!*C@K0_9d;SxT? zM|d1(@hC3h3_iwR@Cg2jpW*{#u!%{W#(Ox0aZKPC9!7%VkRrQBC}+da@IHBxLYO>Y zk!Ur|+7gKrYfpBFU+0=at6j9(?X4MXwbuJgH+sn3l-#?r79z&J9T@w!G77|j^)%aM z$R6H`5nVOHo<=deoo2iByI7K}5L10n3_EKSL#fN?dzvUdoq6! zy$z-N>d?NcM)zvn1&W9Mg9hupt*qe&YY^3)`6EsIUc7h2k2dj(tnG|{Z-YMw{PysM zvMgfnhscX#bF_9Fv|EF$G*kRI?g;K>HMU*UT6F3|^>`BH|3$vrw0w?nSyey4A9%3g z(vR!IHCfO`4%Qb8iawqFQoG_Vre^sfQYZA)(XT zl^&>ec#9QVio+)!F;F+rFQP4yNBtevatf@;y228MqTT!SliPW#}AL~WF+kJ3Jw@^MV$L;J~=)5?!b;DgQ{Hc+L)I35(nu5AkA zw(*{E%}B56YA89jv9i1=(N0UtCp5`;gHF)Z)pv}Mm73ggT0YrC*ivC)i)wUa4WHUc zTPyfz^bX)e_#Sv#9@i#}cF)$#hS7d=#kh3+olS|9iZk9jy01ir^ckYKvb) zYaFw_Uv#nW@$X4R4fXf?_oVpG(Y=-R?!ytf8^ujIM7N?tx8vi`5fTYNSgr<9{w-Uk z8y%7LG@@y>O;aeyYP$&X{*@FulAW|`m(yxj6G87rvLo3e>X3{C#TSV#Y?&#z zo&n^8L-6E(#dYji9!0KbSNM68>?Ayr5i$2^7u}_zhuwW{YNS7Txetn;|6^%)DiiDvFKJd4cDMF9eGB zf>~(~F4^tyC+B&^9rsE{hzDU^=@}z^D>c{l-6`n1V&(p#p%i+`0L>I9Wyb`QD#m_eLJRb?x&QKxrz$#T- zg5ddcHPA5lV%c_Ff$x9!jQ##;@qK;Vn_pcR^Vd6qJ{0u*LH{4058np;|Bj#j`%?q2 nP3{YDhR3|AIqc8(39jxyP`u_%aESM`n-#7LhZ2Z}R literal 0 HcmV?d00001 diff --git a/build/diorite/resources/rocky-app.js.JS_SNAPSHOT.reso b/build/diorite/resources/rocky-app.js.JS_SNAPSHOT.reso new file mode 100644 index 0000000000000000000000000000000000000000..60bd8d41782ae3459edbc01e117df46dde41ec1b GIT binary patch literal 3754 zcma)9duUu)8UNkayz+juo4Tz#*{t^7*fyP;&baNY+qBK2?e;~JQI@4-@64QJ?q)J~ z?jva;7OG?|Mzic+3o0zjf+FflSRqQ*1?e&pmPJHFL_}0nR76Dl!@tDu+%8W^Sa6tYEjb0|p7K_!^sUpgR{kYc@DjH}{>^~2p?%&K?%AT6OBC6h zSus7+s@T$_ahg&Mtnr3o!j=h7xo1bzoLn&$nH|lwU7entzH#B!^yQl~b}SclJEs zv(>WU%~{T(Yj@tr$vkAcD<_h4cP?s_O~Ylb-E+t8UCQU=qTv~K-^}MafLm9mApnR_ z`&JzIK!Q)p^cA4cEaV7|;22VZilf7VC?%zLCK2=bk|4-2()uyp!rS;ZzJu@Lo9M&^ z;i8C(QmlVR7?xzQHY_OueIn7CDy6n3l4EEi{Xs+pQHhg&9ifJ8yn{_-MD)bylU61) z5&iuGii&~A$${ukc7%+CbFqw|Xo8SdRC!a@gy@MHO-%UC`na+rNwUmopoU>cqK@s_ zBvBo{--;x~d-{DgUcsCAAxXWBv-k#i|2huiF-R19oHR!fYL=>ey^65;#-sWlaG@Sr0CRC;O`>&d4ll1h%ezQxQF}r0vs%3 z1%HQyD*k~vm{`C+@n`%6ckm+qhTq{2_#=Le-{7~%@D(Z;|I!I~f0orhJ(A{o!?ajpsf{k)OxbY#r8V zw}w?|P1s{z+0-P8h z0?$h0>V)3r`#QO;x4pWqKmXv}9g&RkGu}VC_dhH7R&EW7;G3uFp16qDJZ6Kq=wd$- z+>^2r>FW#bN&a1=dn@nXha+@1@|$vyZbgS~#}}X>!V7??R135GWnqnObi}r@h-a0A zDpQh`HlF0;>lw7CJ80LgWtGkrhSr62d%ByiLvjW^t%|9a#Yd@f)*j{Ftx5jw8l?A% z7`|VG@cmMo6kc2qlekGy9ikS&tp6sIQFM&Ep!ZbOa=q)!b?HS(d=)b#(@h$VV=gl{ zX;qS5i6yHgtHP4Yrjg8-mzZZ+UTF~Y)+w@i(h*@*+OcR>mONG{85Ir`326m+iww}K zs9=>Xhjd)CLOMMt8qPw&s1#S}by{W)D-zGhyS|TvHO}T^s2YyTu2ej3t6*`S3}>X| z@OM(#tgz3RMXy9}N{%(}uvI=^EnD6-;<=>5QGsrxp02JW^H#Z-oFdoF0)MNHQp->~ zOa7lpi^!Z7K}Q)*6P+S@^t6mQi`ypsGkf)8pqF%chOH2v`!ZkhdYa6a~?;Y&6^cphVo`Dvl%Pm$2ViixXx9{r(0JP+%1_N zLpx!btm0i}+$<=!`La=1Ko|VdPLh$^M$t6L6y=87yiI>xxKEVtWy5U?^@HpIQOa$_ z^FtwDxP0JQ1gorEw(cqcF8S>+dx^Q;xW9CGO}rJd(F@PIW)+Mwn=u#JwC9+W`8eFA zJcUU^lB0T(9IZKn+$Wzrk{hQ#6Fe?nO&$YVrjV!}MQV%G3e>9P+oDxmDpNJNKG~q4 z`Y=0tm*uMz^DOtsblB`H@p0VOCs^AXxEw9W)BIQneh9 z;|IUT$G-Me{`>2BpT5657R + +// +// AUTOGENERATED BY BUILD +// DO NOT MODIFY - CHANGES WILL BE OVERWRITTEN +// + +uint32_t RESOURCE_ID_JS_SNAPSHOT = 1; diff --git a/build/diorite/src/resource_ids.auto.c.23.o b/build/diorite/src/resource_ids.auto.c.23.o new file mode 100644 index 0000000000000000000000000000000000000000..85f28e677187fd8bdb54fb3af8718700f2943acc GIT binary patch literal 2176 zcma)7O>Y}T7@qOkaay;gp$)WDLJKOYk=R|=cG9#(fa`>kwE0lnTo97AAA`NEy<6=^ z6iN}|1P4xBIdbI05l%?_0d5=+2mSzRFC2;xJnwkMcA`e`$}`XNe#|@Xe62rSyYnvR zoN3{##-8XVBuLQ-? z4*=skbbRNww3Htb%$Lvu%3lJC#Znk$h%Q&5m41?*chK{afgZTPU#p(27}bl_GjkYr ziB&3ZK}G5pm{Gl6xlvg^i#*Cck0h;${q0kQlgM!nO)Y{_PUJVR0{ew}{#W%h!v@iw zpmApqkA(Bk9o+Yw)!5HRBFa){M|j>)I1eOPf!NnH4enbld)Z3-hBXYM{9w7|xXH-! zQ!9((Vd{8clLbFM45++HRi3wl5bvjHA9OJKE$tO2d960+W=PT+XwGAF}~Td{6k( zo#>0OFA~Sg!(qT~ZS9#IQ!a+dNe@jpt>ut;qWA+hVL3``HhS53Jk`0o*4^IQ?X30I zS9=@XUU#d#(|vFIE=vb-l9`jy6slGy6OG+uWw$z=>t?Olu)Huc+q;|QTKnd@c^Aim z$S^WDZg#Ck{Yt~GU$d5*);{JSIk zW|PgGEN`ADJYPJ=7x|0Ed47Sv#9uDH%9)*hG|F5Lm?dKzXojH~vjaDCneCHHLs< zsC|uwGkXA#vJR!G6`)SN0ItuL+>fAqOGJr|Bh+_-TtDODJO-XYqc1slkvpV^&9zGh)aSoEi*9 ze?n6+SY@h!8SK;%{q*F{(7r6t{LlJEUkZ->Jkq-?;384x0;Z#LBBXT@ULZtSrqVAf iv=uHXd{bdtA-yXazo+m6h4&Q33Lg>TU}YWHo__&fA}x>r literal 0 HcmV?d00001 diff --git a/build/diorite/src/resource_ids.auto.h b/build/diorite/src/resource_ids.auto.h new file mode 100644 index 0000000..bf38521 --- /dev/null +++ b/build/diorite/src/resource_ids.auto.h @@ -0,0 +1,13 @@ +#pragma once + +// +// AUTOGENERATED BY BUILD +// DO NOT MODIFY - CHANGES WILL BE OVERWRITTEN +// + +typedef enum { + INVALID_RESOURCE = 0, + RESOURCE_ID_INVALID = 0, + DEFAULT_MENU_ICON = 0, + RESOURCE_ID_JS_SNAPSHOT = 1, +} ResourceId; \ No newline at end of file diff --git a/build/diorite/src/rocky.c b/build/diorite/src/rocky.c new file mode 100644 index 0000000..56ca996 --- /dev/null +++ b/build/diorite/src/rocky.c @@ -0,0 +1,9 @@ +#include + +extern bool rocky_event_loop_with_resource(uint32_t resource_id); + +int main(void) { + Window *window = window_create(); + window_stack_push(window, false); + rocky_event_loop_with_resource(RESOURCE_ID_JS_SNAPSHOT); +} diff --git a/build/diorite/src/rocky.c.23.o b/build/diorite/src/rocky.c.23.o new file mode 100644 index 0000000000000000000000000000000000000000..9752a754c086937fea37ef3d65a83a7b43f25f7f GIT binary patch literal 3792 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 literal 0 HcmV?d00001 diff --git a/build/emery/appinfo.auto.c b/build/emery/appinfo.auto.c new file mode 100644 index 0000000..614a43d --- /dev/null +++ b/build/emery/appinfo.auto.c @@ -0,0 +1,20 @@ +#include "pebble_process_info.h" +#include "src/resource_ids.auto.h" + +const PebbleProcessInfo __pbl_app_info __attribute__ ((section (".pbl_header"))) = { + .header = "PBLAPP", + .struct_version = { PROCESS_INFO_CURRENT_STRUCT_VERSION_MAJOR, PROCESS_INFO_CURRENT_STRUCT_VERSION_MINOR }, + .sdk_version = { PROCESS_INFO_CURRENT_SDK_VERSION_MAJOR, PROCESS_INFO_CURRENT_SDK_VERSION_MINOR }, + .process_version = { 1, 0 }, + .load_size = 0xb6b6, + .offset = 0xb6b6b6b6, + .crc = 0xb6b6b6b6, + .name = "geiger", + .company = "Zahkc", + .icon_resource_id = DEFAULT_MENU_ICON, + .sym_table_addr = 0xA7A7A7A7, + .flags = PROCESS_INFO_WATCH_FACE | PROCESS_INFO_ROCKY_APP | PROCESS_INFO_PLATFORM_EMERY, + .num_reloc_entries = 0xdeadcafe, + .uuid = { 0xA4, 0x26, 0xB3, 0x61, 0xF9, 0x7E, 0x49, 0x34, 0x85, 0x81, 0x4E, 0x1C, 0xB2, 0x99, 0xB7, 0x4A }, + .virtual_size = 0xb6b6 +}; diff --git a/build/emery/appinfo.auto.c.14.o b/build/emery/appinfo.auto.c.14.o new file mode 100644 index 0000000000000000000000000000000000000000..1552693e5d76b683606da05ff0458d2198bbe7d2 GIT binary patch literal 4500 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 Hd#L{a*;wQV literal 0 HcmV?d00001 diff --git a/build/emery/pebble-app.raw.bin b/build/emery/pebble-app.raw.bin new file mode 100644 index 0000000000000000000000000000000000000000..b3ee240f7b3973122ecb899de9dbfcbf8d88135e GIT binary patch literal 252 zcmWG=@^K6ZU| APP + + /* -- DO NOT ADD ANY NEW SECTIONS HERE AND DO NOT CHANGE THE ALIGNMENT -- */ + /* The GNU build ID is tacked to the end of the PebbleProcessInfo struct: */ + .note.gnu.build-id ALIGN(1) : { + PROVIDE(BUILD_ID = .); + KEEP(*(.note.gnu.build-id)) + } > APP + + .text : + { + *(.text) + *(.text.*) + *(.rodata) + *(.rodata*) + } > APP + + .data : + { + KEEP(*(.data)) + *(.data.*) + } > APP + + .bss : + { + *(.bss) + *(.bss.*) + } > APP + + DISCARD : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + *(.eh_frame) + } +} + +/* vim:filetype=ld */ diff --git a/build/emery/resources/rocky-app.js.JS_SNAPSHOT.bytecode b/build/emery/resources/rocky-app.js.JS_SNAPSHOT.bytecode new file mode 100644 index 0000000000000000000000000000000000000000..e0d530a6036a291c47f1054e9168647bdc66049a GIT binary patch literal 3452 zcma)8YiJzT75?r#_M!L7j-1%dDoW#-ty6hN-i_^bW7(Egc50`_7AYnaWp?*kJ7~4D znH|YepkRtzQ?)YwWk?Gl1QJ4Chy;|NG*BG2h!9E%A%qY@Tau83QcCHM{t7vFW_DM* zkwpjY+{ZcRJJ0(#|Hwr!03m8GMuGQbcyopR3@WWc31JWRA;C24jWbD($!}*6@#r#R zN`$2Tgjex8Uc$?G1uvirC)h~|C*{b%CX368RE^6jqhBao)#Sv+L~IQ0BtL{Olhi25 z*AS}Mz}r|uNP8f5Ju?|H5Thn8m;GCBDKh@C3fW-|!E7j!*C@K0_9d;SxT? zM|d1(@hC3h3_iwR@Cg2jpW*{#u!%{W#(Ox0aZKPC9!7%VkRrQBC}+da@IHBxLYO>Y zk!Ur|+7gKrYfpBFU+0=at6j9(?X4MXwbuJgH+sn3l-#?r79z&J9T@w!G77|j^)%aM z$R6H`5nVOHo<=deoo2iByI7K}5L10n3_EKSL#fN?dzvUdoq6! zy$z-N>d?NcM)zvn1&W9Mg9hupt*qe&YY^3)`6EsIUc7h2k2dj(tnG|{Z-YMw{PysM zvMgfnhscX#bF_9Fv|EF$G*kRI?g;K>HMU*UT6F3|^>`BH|3$vrw0w?nSyey4A9%3g z(vR!IHCfO`4%Qb8iawqFQoG_Vre^sfQYZA)(XT zl^&>ec#9QVio+)!F;F+rFQP4yNBtevatf@;y228MqTT!SliPW#}AL~WF+kJ3Jw@^MV$L;J~=)5?!b;DgQ{Hc+L)I35(nu5AkA zw(*{E%}B56YA89jv9i1=(N0UtCp5`;gHF)Z)pv}Mm73ggT0YrC*ivC)i)wUa4WHUc zTPyfz^bX)e_#Sv#9@i#}cF)$#hS7d=#kh3+olS|9iZk9jy01ir^ckYKvb) zYaFw_Uv#nW@$X4R4fXf?_oVpG(Y=-R?!ytf8^ujIM7N?tx8vi`5fTYNSgr<9{w-Uk z8y%7LG@@y>O;aeyYP$&X{*@FulAW|`m(yxj6G87rvLo3e>X3{C#TSV#Y?&#z zo&n^8L-6E(#dYji9!0KbSNM68>?Ayr5i$2^7u}_zhuwW{YNS7Txetn;|6^%)DiiDvFKJd4cDMF9eGB zf>~(~F4^tyC+B&^9rsE{hzDU^=@}z^D>c{l-6`n1V&(p#p%i+`0L>I9Wyb`QD#m_eLJRb?x&QKxrz$#T- zg5ddcHPA5lV%c_Ff$x9!jQ##;@qK;Vn_pcR^Vd6qJ{0u*LH{4058np;|Bj#j`%?q2 nP3{YDhR3|AIqc8(39jxyP`u_%aESM`n-#7LhZ2Z}R literal 0 HcmV?d00001 diff --git a/build/emery/resources/rocky-app.js.JS_SNAPSHOT.reso b/build/emery/resources/rocky-app.js.JS_SNAPSHOT.reso new file mode 100644 index 0000000000000000000000000000000000000000..60bd8d41782ae3459edbc01e117df46dde41ec1b GIT binary patch literal 3754 zcma)9duUu)8UNkayz+juo4Tz#*{t^7*fyP;&baNY+qBK2?e;~JQI@4-@64QJ?q)J~ z?jva;7OG?|Mzic+3o0zjf+FflSRqQ*1?e&pmPJHFL_}0nR76Dl!@tDu+%8W^Sa6tYEjb0|p7K_!^sUpgR{kYc@DjH}{>^~2p?%&K?%AT6OBC6h zSus7+s@T$_ahg&Mtnr3o!j=h7xo1bzoLn&$nH|lwU7entzH#B!^yQl~b}SclJEs zv(>WU%~{T(Yj@tr$vkAcD<_h4cP?s_O~Ylb-E+t8UCQU=qTv~K-^}MafLm9mApnR_ z`&JzIK!Q)p^cA4cEaV7|;22VZilf7VC?%zLCK2=bk|4-2()uyp!rS;ZzJu@Lo9M&^ z;i8C(QmlVR7?xzQHY_OueIn7CDy6n3l4EEi{Xs+pQHhg&9ifJ8yn{_-MD)bylU61) z5&iuGii&~A$${ukc7%+CbFqw|Xo8SdRC!a@gy@MHO-%UC`na+rNwUmopoU>cqK@s_ zBvBo{--;x~d-{DgUcsCAAxXWBv-k#i|2huiF-R19oHR!fYL=>ey^65;#-sWlaG@Sr0CRC;O`>&d4ll1h%ezQxQF}r0vs%3 z1%HQyD*k~vm{`C+@n`%6ckm+qhTq{2_#=Le-{7~%@D(Z;|I!I~f0orhJ(A{o!?ajpsf{k)OxbY#r8V zw}w?|P1s{z+0-P8h z0?$h0>V)3r`#QO;x4pWqKmXv}9g&RkGu}VC_dhH7R&EW7;G3uFp16qDJZ6Kq=wd$- z+>^2r>FW#bN&a1=dn@nXha+@1@|$vyZbgS~#}}X>!V7??R135GWnqnObi}r@h-a0A zDpQh`HlF0;>lw7CJ80LgWtGkrhSr62d%ByiLvjW^t%|9a#Yd@f)*j{Ftx5jw8l?A% z7`|VG@cmMo6kc2qlekGy9ikS&tp6sIQFM&Ep!ZbOa=q)!b?HS(d=)b#(@h$VV=gl{ zX;qS5i6yHgtHP4Yrjg8-mzZZ+UTF~Y)+w@i(h*@*+OcR>mONG{85Ir`326m+iww}K zs9=>Xhjd)CLOMMt8qPw&s1#S}by{W)D-zGhyS|TvHO}T^s2YyTu2ej3t6*`S3}>X| z@OM(#tgz3RMXy9}N{%(}uvI=^EnD6-;<=>5QGsrxp02JW^H#Z-oFdoF0)MNHQp->~ zOa7lpi^!Z7K}Q)*6P+S@^t6mQi`ypsGkf)8pqF%chOH2v`!ZkhdYa6a~?;Y&6^cphVo`Dvl%Pm$2ViixXx9{r(0JP+%1_N zLpx!btm0i}+$<=!`La=1Ko|VdPLh$^M$t6L6y=87yiI>xxKEVtWy5U?^@HpIQOa$_ z^FtwDxP0JQ1gorEw(cqcF8S>+dx^Q;xW9CGO}rJd(F@PIW)+Mwn=u#JwC9+W`8eFA zJcUU^lB0T(9IZKn+$Wzrk{hQ#6Fe?nO&$YVrjV!}MQV%G3e>9P+oDxmDpNJNKG~q4 z`Y=0tm*uMz^DOtsblB`H@p0VOCs^AXxEw9W)BIQneh9 z;|IUT$G-Me{`>2BpT5657R + +// +// AUTOGENERATED BY BUILD +// DO NOT MODIFY - CHANGES WILL BE OVERWRITTEN +// + +uint32_t RESOURCE_ID_JS_SNAPSHOT = 1; diff --git a/build/emery/src/resource_ids.auto.c.14.o b/build/emery/src/resource_ids.auto.c.14.o new file mode 100644 index 0000000000000000000000000000000000000000..7dca951a267036a743256f7797641a305f2ad37a GIT binary patch literal 2172 zcma)7OK%%h6u#rJ zQXWEx1#DpnOP2fs1V4c-3&esy&;^wcLPCgs=gz(MBx(dlzW4jiW6rs6f6{yBEltyy z5{)ghna0>sS$HaK0n2QG)rJ3K=p|t*YuiBW2XvQ(0S;~MA!tdP|BRqi`Ab0c7lLx- zYk>YGI&Js1uvFhAn6ID*RL6jFxe|maqN{aim2ZXTP4rqtM-N=kUaFt3>GjL?b94A? ziPdVaLq+Omm|nk8d$qQ49(kmF9!c6$`x|FUr;+0Vnw$isoXW3YCH6D*+TZoF3=2eS zf~MJ{Xu|CeoY6hcUXQ$N!oxJNce(41xqV-N>GK0c6aSvswpPv9YntOA%nn!Ewi8cG zFEP_78Yi|Jgtleb<{|e zo!$Q1J9lO?wVyP(WE91zG0jbhB{OZ_DU)Zf+QNuqB8L zLSyr0-)uInHm$~WbG2n2fL|5-y4hSYhu78`t80AaWjXCm6Q{$WEo0g;Xr+sB@I!N} z#pX^|w@#IwE?>|VwP*E<+9mBd?fLSH8ncoIlhkp6X`JIoF?^ab%Xd=j;6q3IgQUT;wjjwRh)7Ys&!H1i2Z25 zrbOjay27Hp%pU!#?1cJsw7FG3G7|C^E0SJji^T+DbTfl4PDWA3APb_49h@0-Mt?vv z(OGS#fa&baG5zfH%+R_lQ2i&pflL00k0;&B5)Kk&E} + +extern bool rocky_event_loop_with_resource(uint32_t resource_id); + +int main(void) { + Window *window = window_create(); + window_stack_push(window, false); + rocky_event_loop_with_resource(RESOURCE_ID_JS_SNAPSHOT); +} diff --git a/build/emery/src/rocky.c.14.o b/build/emery/src/rocky.c.14.o new file mode 100644 index 0000000000000000000000000000000000000000..84d0badea392771bbe56b759f5245d848202f38f GIT binary patch literal 3784 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 literal 0 HcmV?d00001 diff --git a/build/include/message_keys.auto.h b/build/include/message_keys.auto.h new file mode 100644 index 0000000..dbda39c --- /dev/null +++ b/build/include/message_keys.auto.h @@ -0,0 +1,12 @@ +#pragma once +#include + +// +// AUTOGENERATED BY BUILD +// DO NOT MODIFY - CHANGES WILL BE OVERWRITTEN +// + +extern uint32_t MESSAGE_KEY_ControlKeyChunk; +extern uint32_t MESSAGE_KEY_ControlKeyResetComplete; +extern uint32_t MESSAGE_KEY_ControlKeyResetRequest; +extern uint32_t MESSAGE_KEY_ControlKeyUnsupportedError; diff --git a/build/js/message_keys.json b/build/js/message_keys.json new file mode 100644 index 0000000..4e24c8d --- /dev/null +++ b/build/js/message_keys.json @@ -0,0 +1,6 @@ +{ + "ControlKeyChunk": 3, + "ControlKeyResetComplete": 2, + "ControlKeyResetRequest": 1, + "ControlKeyUnsupportedError": 4 +} \ No newline at end of file diff --git a/build/pebble-js-app.js b/build/pebble-js-app.js new file mode 100644 index 0000000..9cbe8f5 --- /dev/null +++ b/build/pebble-js-app.js @@ -0,0 +1,1050 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + __webpack_require__(1); + __webpack_require__(2); + module.exports = __webpack_require__(5); + + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + + (function(p) { + if (!p === undefined) { + console.error('Pebble object not found!?'); + return; + } + + // Aliases: + p.on = p.addEventListener; + p.off = p.removeEventListener; + + // For Android (WebView-based) pkjs, print stacktrace for uncaught errors: + if (typeof window !== 'undefined' && window.addEventListener) { + window.addEventListener('error', function(event) { + if (event.error && event.error.stack) { + console.error('' + event.error + '\n' + event.error.stack); + } + }); + } + + })(Pebble); + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + (function() { + var utf8 = __webpack_require__(3); + var POSTMESSAGE_DEBUG = false; + + // Super simple polyfill for Array.from() that only deals with a Uint8Array: + var arrayFromUint8Array = Array.from ? Array.from : function(uint8Array) { + return [].slice.call(uint8Array); + }; + + function debugLog() { + if (POSTMESSAGE_DEBUG) { + console.log.apply(console, arguments); + } + } + + function createHandlersList() { + var pos = 0; + var handlers = []; + + return { + add : function(handler) { + handlers.push(handler); + }, + clear : function() { + handlers = []; + pos = 0; + }, + isEmpty : function() { + return (handlers.length == 0); + }, + remove : function(handler) { + var idx = handlers.indexOf(handler); + if (idx < 0) { return; } // Not registered + if (idx < pos) { pos = Math.max(pos - 1, 0); } // We've iterated past it, and it's been removed + handlers.splice(idx, 1); + }, + newIterator : function() { + pos = 0; // new iterator, reset position + return { + next : function() { + if (pos < handlers.length) { + return handlers[pos++]; + } else { + return undefined; + } + } + } + } + } + } + + var EVENTS = {}; + + var _callHandler = function(handler, event_name, callback_data) { + var msg = { type: event_name }; + if (callback_data !== undefined) { + msg.data = callback_data; + } + handler(msg); + }; + + var _callHandlersForEvent = function(event_name, callback_data) { + var handler; + if (!(event_name in EVENTS)) { + return; + } + + var it = EVENTS[event_name].newIterator(); + while ((handler = it.next())) { + _callHandler(handler, event_name, callback_data); + } + } + + var _isPostMessageEvent = function(event_name) { + return (['message', 'postmessageerror', + 'postmessageconnected', 'postmessagedisconnected'].indexOf(event_name)) > -1; + } + + var __Pebble = Pebble; + + // Create a new object with its prototype pointing to the original, using + // Object.create(). This way, we can rely on JavaScript's prototype chain + // traversal to make all properties on the original object "just work". + // Note however, that these won't be "own properties", so when using + // `for .. in`, Pebble.keys(), Object.getOwnPropertyNames(), etc. these + // "delegated properties" will not be found. + Pebble = Object.create(Pebble); + + for (var attr in __Pebble) { + if (!__Pebble.hasOwnProperty(attr)) { + continue; + } + // Attributes of Pebble which can be bound, should be bound to the original object + if (__Pebble[attr].bind) { + Pebble[attr] = __Pebble[attr].bind(__Pebble); + } else { + Pebble[attr] = __Pebble[attr]; + } + } + + // Ensure that all exported functions exist. + ["addEventListener", "removeEventListener", "showSimpleNotificationOnPebble", + "sendAppMessage", "getTimelineToken", "timelineSubscribe", + "timelineUnsubscribe", "timelineSubscriptions", "getActiveWatchInfo", + "getAccountToken", "getWatchToken", "appGlanceReload"].forEach( + function(elem, idx, arr) { + if ((elem in Pebble) || ((typeof __Pebble[elem]) !== 'function')) { + // This function has already been copied over or doesn't actually exist. + return; + } + Pebble[elem] = __Pebble[elem].bind(__Pebble); + } + ); + + // sendAppMessage is not supported, make it undefined so a user will get a + // "not a function" error, and can check `typeof Pebble.sendAppMessage === 'function'` + // to test for support. + Pebble["sendAppMessage"] = undefined; + + // The rocky implementation! + + function _scheduleAsyncPostMessageError(jsonString, reason) { + _callHandlersForEvent('postmessageerror', JSON.parse(jsonString)); + console.error("postMessage() failed. Reason: " + reason); + } + + Pebble.postMessage = function(obj) { + _out.sendObject(obj); + }; + + var on = function(event_name, handler) { + if (typeof(handler) !== 'function') { + throw TypeError("Handler for event expected, received " + typeof(handler)); + } + if (!(event_name in EVENTS)) { + EVENTS[event_name] = createHandlersList(); + } + EVENTS[event_name].add(handler); + + if ((event_name == "postmessageconnected" && _control.state == ControlStateSessionOpen) || + (event_name == "postmessagedisconnected" && _control.state != ControlStateSessionOpen)) { + _callHandler(handler, event_name); + } + }; + + Pebble.addEventListener = function(event_name, handler) { + if (_isPostMessageEvent(event_name)) { + return on(event_name, handler); + } else if (event_name == 'appmessage') { + throw Error("App Message not supported with Rocky.js apps. See Pebble.postMessage()"); + } else { + return __Pebble.addEventListener(event_name, handler); + } + }; + + // Alias to the overridden implementation: + Pebble.on = Pebble.addEventListener; + + var off = function(event_name, handler) { + if (handler === undefined) { + throw TypeError('Not enough arguments (missing handler)'); + } + if (event_name in EVENTS) { + EVENTS[event_name].remove(handler); + } + } + + Pebble.removeEventListener = function(event_name, handler) { + if (_isPostMessageEvent(event_name)) { + off(event_name, handler); + } else { + return __Pebble.removeEventListener(event_name, handler); + } + } + + // Alias to the overridden implementation: + Pebble.off = Pebble.removeEventListener; + + /********************************************************************************* + * postMessage(): Outbound object and control message queuing, sending & chunking. + ********************************************************************************/ + + var _out = new Sender(); + + function Sender() { + this.controlQueue = []; + this.objectQueue = []; + + this._currentMessageType = undefined; + this._failureCount = 0; + this._offsetBytes = 0; + this._chunkPayloadSize = 0; + + this._resetCurrent = function() { + this._currentMessageType = undefined; + this._failureCount = 0; + this._offsetBytes = 0; + this._chunkPayloadSize = 0; + }; + + this._getNextMessageType = function() { + if (this.controlQueue.length > 0) { + return "control"; + } else if (this.objectQueue.length > 0) { + return "object"; + } + // No messages remaining + return undefined; + }; + + // Begin sending the next prioritized message + this._sendNext = function() { + if (this._currentMessageType !== undefined) { + return; // Already something in flight + } + + var type = this._getNextMessageType(); + if (type === undefined) { + return; // No message to send + } + + if (type === "control") { + this._currentMessageType = type; + this._trySendNextControl(); + } else if (type === "object") { + this._currentMessageType = type; + this._trySendNextChunk(); + } + }; + + + ////////////////////////////////////////////////////////////////////////////// + // Sender: Control Message Handling + ////////////////////////////////////////////////////////////////////////////// + + this._controlSuccess = function() { + this.controlQueue.shift(); + this._resetCurrent(); + this._sendNext(); + }; + + this._controlFailure = function(e) { + this._failureCount++; + var willRetry = (this._failureCount <= 3); + if (willRetry) { + setTimeout(this._trySendNextControl.bind(this), 1000); // 1s retry + } else { + debugLog("Failed to send control message: " + e + + ", entering disconnected state."); + this.controlQueue.shift(); + this._resetCurrent(); + + _control.enter(ControlStateDisconnected); + this._sendNext(); + } + }; + + this._trySendNextControl = function() { + var msg = this.controlQueue[0]; + __Pebble.sendAppMessage(msg, + this._controlSuccess.bind(this), + this._controlFailure.bind(this)); + }; + + + ////////////////////////////////////////////////////////////////////////////// + // Sender: Object Message Handling + ////////////////////////////////////////////////////////////////////////////// + + this._createDataObject = function(obj) { + // Store obj as UTF-8 encoded JSON string into .data: + var native_str_msg; + try { + native_str_msg = JSON.stringify(obj); + } catch(e) { + throw Error("First argument must be JSON-serializable."); + } + // ECMA v5.1, 15.12.3, Note 5: Values that do not have a JSON + // representation (such as undefined and functions) do not produce a + // String. Instead they produce the undefined value. + if (native_str_msg === undefined) { + throw TypeError( + "Argument at index 0 is not a JSON.stringify()-able object"); + } + var utf8_str_msg = utf8.encode(native_str_msg); + var data = []; + for (var i = 0; i < utf8_str_msg.length; i++) { + data.push(utf8_str_msg.charCodeAt(i)); + } + data.push(0); // zero-terminate + + return { + obj: obj, + data: data, + json: native_str_msg, + }; + }; + + this._completeObject = function(failureReasonOrUndefined) { + var completeObject = this.objectQueue.shift(); + this._resetCurrent(); + + if (failureReasonOrUndefined === undefined) { + debugLog("Complete!"); + } else { + _scheduleAsyncPostMessageError(completeObject.json, failureReasonOrUndefined); + } + }; + + this._chunkSuccess = function(e) { + var data = this.objectQueue[0].data; + debugLog("Sent " + this._chunkPayloadSize + " of " + data.length + " bytes"); + this._offsetBytes += this._chunkPayloadSize; + if (this._offsetBytes === data.length) { + this._completeObject(); + this._sendNext(); + } else { + this._trySendNextChunk(); + } + }; + + this._chunkFailure = function(e) { + this._failureCount++; + var willRetry = (this._failureCount <= 3); + console.error("Chunk failed to send (willRetry=" + willRetry + "): " + e); + if (willRetry) { + setTimeout(this._trySendNextChunk.bind(this), 1000); // 1s retry + } else { + this._completeObject("Too many failed transfer attempts"); + this._sendNext(); + } + }; + + this._trySendNextChunk = function() { + if (this._getNextMessageType() !== "object") { + // This is no longer our highest priority outgoing message. + // Send that message instead, and this message will be left in the queue + // andrestarted when appropriate. + this._resetCurrent(); + this._sendNext(); + return; + } + + if (!_control.isSessionOpen()) { + // Make sure to start over if session is closed while chunks have been + // sent for the head object: + this._offsetBytes = 0; + this._chunkFailure("Session not open. Hint: check out the \"postmessageconnected\" event."); + return; + } + + var data = this.objectQueue[0].data; + var sizeRemaining = data.length - this._offsetBytes; + debugLog("Sending next chunk, sizeRemaining: " + sizeRemaining); + this._chunkPayloadSize = + Math.min(_control.protocol.tx_chunk_size, sizeRemaining); + var n; + var isFirst = (this._offsetBytes === 0); + var isFirstBit; + if (isFirst) { + isFirstBit = (1 << 7); + n = data.length; + } else { + isFirstBit = 0; + n = this._offsetBytes; + } + var chunk = [ + n & 255, + (n >> 8) & 255, + (n >> 16) & 255, + ((n >> 24) & ~(1 << 7)) | isFirstBit + ]; + var chunkPayload = data.slice( + this._offsetBytes, this._offsetBytes + this._chunkPayloadSize); + Array.prototype.push.apply(chunk, chunkPayload); + debugLog("Sending Chunk Size: " + this._chunkPayloadSize); + __Pebble.sendAppMessage({ControlKeyChunk: chunk}, + this._chunkSuccess.bind(this), + this._chunkFailure.bind(this)); + }; + + ////////////////////////////////////////////////////////////////////////////// + // Sender: Public Interface + ////////////////////////////////////////////////////////////////////////////// + + this.sendObject = function(obj) { + debugLog("Queuing up object message: " + JSON.stringify(obj)); + var dataObj = this._createDataObject(obj); + this.objectQueue.push(dataObj) + this._sendNext(); + }; + + this.sendControl = function(obj) { + debugLog("Sending control message: " + JSON.stringify(obj)); + this.controlQueue.push(obj); + this._sendNext(); + } + }; + + /***************************************************************************** + * postMessage(): Receiving chunks of inbound objects and reassembly + ****************************************************************************/ + + var _in = new ChunkReceiver(); + + function ChunkReceiver() { + this.utf8_json_string = ""; + this.total_size_bytes = 0; + this.received_size_bytes = 0; + + this.handleChunkReceived = function handleChunkReceived(chunk) { + if (!chunk) { + return false; + } + var isExpectingFirst = (this.utf8_json_string.length === 0); + if (chunk.is_first != isExpectingFirst) { + console.error( + "Protocol out of sync! chunk.is_first=" + chunk.is_first + + " isExpectingFirst=" + isExpectingFirst); + return false; + } + if (chunk.is_first) { + this.total_size_bytes = chunk.total_size_bytes; + this.received_size_bytes = 0; + } else { + if (this.received_size_bytes != chunk.offset_bytes) { + console.error( + "Protocol out of sync! received_size_bytes=" + + this.received_size_bytes + " chunk.offset_bytes=" + chunk.offset_bytes); + return false; + } + if (this.received_size_bytes + chunk.data.length > this.total_size_bytes) { + console.error( + "Protocol out of sync! received_size_bytes=" + this.received_size_bytes + + " chunk.data.length=" + chunk.data.length + + " total_size_bytes=" + this.total_size_bytes); + return false; + } + } + + debugLog("Received (" + this.received_size_bytes + " / " + + this.total_size_bytes + " bytes)"); + debugLog("Payload size: " + chunk.data.length); + + this.received_size_bytes += chunk.data.length; + var isLastChunk = (this.received_size_bytes == this.total_size_bytes); + var isLastChunkZeroTerminated = undefined; + if (isLastChunk) { + isLastChunkZeroTerminated = (chunk.data[chunk.data.length - 1] === 0); + } + + // Copy the received data over: + var end = isLastChunk ? chunk.data.length - 1 : chunk.data.length; + for (var i = 0; i < end; i++) { + this.utf8_json_string += String.fromCharCode(chunk.data[i]); + } + + if (isLastChunk) { + if (isLastChunkZeroTerminated) { + var json_string = utf8.decode(this.utf8_json_string); + var data; + try { + data = JSON.parse(json_string); + } catch (e) { + console.error( + "Dropping message, failed to parse JSON with error: " + e + + " (json_string=" + json_string + ")"); + } + if (data !== undefined) { + _callHandlersForEvent('message', data); + } + } else { + console.error("Last Chunk wasn't zero terminated! Dropping message."); + } + + this.utf8_json_string = ""; + } + + return true; + } + } + + /***************************************************************************** + * postMessage() Session Control Protocol + ****************************************************************************/ + + var ControlStateDisconnected = "ControlStateDisconnected"; + var ControlStateAwaitingResetCompleteRemoteInitiated = "ControlStateAwaitingResetCompleteRemoteInitiated"; + var ControlStateAwaitingResetCompleteLocalInitiated = "ControlStateAwaitingResetCompleteLocalInitiated"; + var ControlStateSessionOpen = "ControlStateSessionOpen"; + + var ControlKeyResetRequest = "ControlKeyResetRequest"; + var ControlKeyResetComplete = "ControlKeyResetComplete"; + var ControlKeyChunk = "ControlKeyChunk"; + var ControlKeyUnsupportedError = "ControlKeyUnsupportedError"; + + function _unpackResetCompleteMessage(data) { + debugLog("Got ResetComplete: " + data); + return { + min_version : data[0], + max_version : data[1], + max_tx_chunk_size : (data[2] << 8) | (data[3]), + max_rx_chunk_size : (data[4] << 8) | (data[5]), + }; + }; + + function _unpackChunk(data) { + //debugLog("Got Chunk: " + data); + if (data.length <= 4) { + console.error("Chunk data too short to be valid!"); + return; + } + var is_first_bit = (1 << 7); + var is_first = (is_first_bit === (data[3] & is_first_bit)); + var chunk = { + is_first : is_first + }; + var msbyte = (~is_first_bit) & data[3]; + var num31bits = (msbyte << 24) | (data[2] << 16) | (data[1] << 8) | data[0]; + if (is_first) { + chunk.total_size_bytes = num31bits; + } else { + chunk.offset_bytes = num31bits; + } + chunk.data = data.slice(4); + return chunk; + } + + function _remoteProtocolValidateAndSet(remote) { + debugLog("Remote min: " + remote.min_version); + debugLog("Remote max: " + remote.max_version); + if (remote.min_version == undefined || remote.max_version == undefined || + remote.min_version > PROTOCOL.max_version || remote.max_version < PROTOCOL.min_version) { + return false; + } + + _control.protocol = { + version : Math.min(remote.max_version, PROTOCOL.max_version), + tx_chunk_size : Math.min(remote.max_rx_chunk_size, PROTOCOL.max_tx_chunk_size), + rx_chunk_size : Math.min(remote.max_tx_chunk_size, PROTOCOL.max_rx_chunk_size), + }; + + return true; + }; + + function _sendControlMessage(msg) { + _out.sendControl(msg); + } + + function _controlSendResetComplete() { + var data = new Uint8Array(6); + data[0] = PROTOCOL.min_version; + data[1] = PROTOCOL.max_version; + data[2] = PROTOCOL.max_tx_chunk_size >> 8; + data[3] = PROTOCOL.max_tx_chunk_size; + data[4] = PROTOCOL.max_rx_chunk_size >> 8; + data[5] = PROTOCOL.max_rx_chunk_size; + _sendControlMessage({ ControlKeyResetComplete : arrayFromUint8Array(data) }); + } + + function _controlSendResetRequest() { + _sendControlMessage({ ControlKeyResetRequest : 0 }); + } + + function _controlSendUnsupportedError() { + _sendControlMessage({ ControlKeyUnsupportedError : 0 }); + } + + var ControlHandlers = { + ControlStateDisconnected : function(payload) { + }, + ControlStateAwaitingResetCompleteRemoteInitiated : function(payload) { + if (ControlKeyResetComplete in payload) { + var remote_protocol = _unpackResetCompleteMessage(payload[ControlKeyResetComplete]); + // NOTE: This should *always* be true, we should never receive a + // ResetComplete response from the Remote in this state since it already + // knows it is unsupported + if (_remoteProtocolValidateAndSet(remote_protocol)) { + _control.enter(ControlStateSessionOpen); + } + } else if (ControlKeyResetRequest in payload) { + _control.enter(ControlStateAwaitingResetCompleteRemoteInitiated); // Re-enter this state + } else if (ControlKeyChunk in payload) { + _control.enter(ControlStateAwaitingResetCompleteLocalInitiated); + } else if (ControlKeyUnsupportedError in payload) { + throw Error("Unsupported protocol error: " + payload[ControlKeyUnsupportedError]); + } + }, + ControlStateAwaitingResetCompleteLocalInitiated : function(payload) { + if (ControlKeyResetComplete in payload) { + var remote_protocol = _unpackResetCompleteMessage(payload[ControlKeyResetComplete]); + debugLog("Remote Protocol: " + remote_protocol); + if (_remoteProtocolValidateAndSet(remote_protocol)) { + debugLog("OK Remote protocol..."); + _controlSendResetComplete(); + _control.enter(ControlStateSessionOpen); + } else { + _controlSendUnsupportedError(); + } + } else { + ; // Ignore, we're in this state because we already sent a ResetRequest + } + }, + ControlStateSessionOpen : function(payload) { + if (ControlKeyChunk in payload) { + var chunk = _unpackChunk(payload[ControlKeyChunk]); + if (false === _in.handleChunkReceived(chunk)) { + _control.enter(ControlStateAwaitingResetCompleteLocalInitiated); + } + } else if (ControlKeyResetRequest in payload) { + _control.enter(ControlStateAwaitingResetCompleteRemoteInitiated); + } else { + // FIXME: This could be an UnsupportedError, we probably don't want to + // keep on trying to negotiate protocol + _control.enter(ControlStateAwaitingResetCompleteLocalInitiated); + } + }, + }; + + var ControlTransitions = { + ControlStateDisconnected : function(from_state) { + _control.resetProtocol(); + _control.state = ControlStateAwaitingResetCompleteRemoteInitiated; + }, + ControlStateAwaitingResetCompleteRemoteInitiated : function(from_state) { + _control.resetProtocol(); + _control.state = ControlStateAwaitingResetCompleteRemoteInitiated; + _controlSendResetComplete(); + }, + ControlStateAwaitingResetCompleteLocalInitiated : function(from_state) { + if (from_state != ControlStateAwaitingResetCompleteLocalInitiated) { + // Coming from elsewhere, send the ResetRequest + _controlSendResetRequest(); + } + _control.resetProtocol(); + _control.state = ControlStateAwaitingResetCompleteLocalInitiated; + }, + ControlStateSessionOpen : function(from_state) { + _control.state = ControlStateSessionOpen; + _callHandlersForEvent('postmessageconnected'); + }, + }; + + var PROTOCOL = { + min_version : 1, + max_version : 1, + max_tx_chunk_size : 1000, + max_rx_chunk_size : 1000, + }; + + var _control = { + state : ControlStateDisconnected, + handle : function(msg) { + debugLog("Handle " + this.state + "(" + JSON.stringify(msg.payload) + "}"); + ControlHandlers[this.state](msg.payload); + }, + enter : function(to_state) { + debugLog("Enter " + this.state + " ===> " + to_state); + var prev_state = this.state; + ControlTransitions[to_state](this.state); + if (prev_state == ControlStateSessionOpen && to_state != ControlStateSessionOpen) { + _callHandlersForEvent('postmessagedisconnected'); + } + }, + isSessionOpen: function() { + return (this.state === ControlStateSessionOpen); + }, + resetProtocol: function() { + this.protocol = { + version : 0, + tx_chunk_size : 0, + rx_chunk_size : 0, + }; + }, + protocol : { + version : 0, + tx_chunk_size : 0, + rx_chunk_size : 0, + }, + }; + + __Pebble.addEventListener('appmessage', function(msg) { + _control.handle(msg); + }); + + __Pebble.addEventListener('ready', function(e) { + _control.enter(ControlStateAwaitingResetCompleteLocalInitiated); + }); + })(); + + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module) {/*! https://mths.be/utf8js v2.1.2 by @mathias */ + ;(function(root) { + + // Detect free variables `exports` + var freeExports = typeof exports == 'object' && exports; + + // Detect free variable `module` + var freeModule = typeof module == 'object' && module && + module.exports == freeExports && module; + + // Detect free variable `global`, from Node.js or Browserified code, + // and use it as `root` + var freeGlobal = typeof global == 'object' && global; + if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { + root = freeGlobal; + } + + /*--------------------------------------------------------------------------*/ + + var stringFromCharCode = String.fromCharCode; + + // Taken from https://mths.be/punycode + function ucs2decode(string) { + var output = []; + var counter = 0; + var length = string.length; + var value; + var extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + // Taken from https://mths.be/punycode + function ucs2encode(array) { + var length = array.length; + var index = -1; + var value; + var output = ''; + while (++index < length) { + value = array[index]; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + } + return output; + } + + function checkScalarValue(codePoint) { + if (codePoint >= 0xD800 && codePoint <= 0xDFFF) { + throw Error( + 'Lone surrogate U+' + codePoint.toString(16).toUpperCase() + + ' is not a scalar value' + ); + } + } + /*--------------------------------------------------------------------------*/ + + function createByte(codePoint, shift) { + return stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80); + } + + function encodeCodePoint(codePoint) { + if ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence + return stringFromCharCode(codePoint); + } + var symbol = ''; + if ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence + symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0); + } + else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence + checkScalarValue(codePoint); + symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0); + symbol += createByte(codePoint, 6); + } + else if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence + symbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0); + symbol += createByte(codePoint, 12); + symbol += createByte(codePoint, 6); + } + symbol += stringFromCharCode((codePoint & 0x3F) | 0x80); + return symbol; + } + + function utf8encode(string) { + var codePoints = ucs2decode(string); + var length = codePoints.length; + var index = -1; + var codePoint; + var byteString = ''; + while (++index < length) { + codePoint = codePoints[index]; + byteString += encodeCodePoint(codePoint); + } + return byteString; + } + + /*--------------------------------------------------------------------------*/ + + function readContinuationByte() { + if (byteIndex >= byteCount) { + throw Error('Invalid byte index'); + } + + var continuationByte = byteArray[byteIndex] & 0xFF; + byteIndex++; + + if ((continuationByte & 0xC0) == 0x80) { + return continuationByte & 0x3F; + } + + // If we end up here, it’s not a continuation byte + throw Error('Invalid continuation byte'); + } + + function decodeSymbol() { + var byte1; + var byte2; + var byte3; + var byte4; + var codePoint; + + if (byteIndex > byteCount) { + throw Error('Invalid byte index'); + } + + if (byteIndex == byteCount) { + return false; + } + + // Read first byte + byte1 = byteArray[byteIndex] & 0xFF; + byteIndex++; + + // 1-byte sequence (no continuation bytes) + if ((byte1 & 0x80) == 0) { + return byte1; + } + + // 2-byte sequence + if ((byte1 & 0xE0) == 0xC0) { + byte2 = readContinuationByte(); + codePoint = ((byte1 & 0x1F) << 6) | byte2; + if (codePoint >= 0x80) { + return codePoint; + } else { + throw Error('Invalid continuation byte'); + } + } + + // 3-byte sequence (may include unpaired surrogates) + if ((byte1 & 0xF0) == 0xE0) { + byte2 = readContinuationByte(); + byte3 = readContinuationByte(); + codePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3; + if (codePoint >= 0x0800) { + checkScalarValue(codePoint); + return codePoint; + } else { + throw Error('Invalid continuation byte'); + } + } + + // 4-byte sequence + if ((byte1 & 0xF8) == 0xF0) { + byte2 = readContinuationByte(); + byte3 = readContinuationByte(); + byte4 = readContinuationByte(); + codePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) | + (byte3 << 0x06) | byte4; + if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) { + return codePoint; + } + } + + throw Error('Invalid UTF-8 detected'); + } + + var byteArray; + var byteCount; + var byteIndex; + function utf8decode(byteString) { + byteArray = ucs2decode(byteString); + byteCount = byteArray.length; + byteIndex = 0; + var codePoints = []; + var tmp; + while ((tmp = decodeSymbol()) !== false) { + codePoints.push(tmp); + } + return ucs2encode(codePoints); + } + + /*--------------------------------------------------------------------------*/ + + var utf8 = { + 'version': '2.1.2', + 'encode': utf8encode, + 'decode': utf8decode + }; + + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + true + ) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return utf8; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (freeExports && !freeExports.nodeType) { + if (freeModule) { // in Node.js or RingoJS v0.8.0+ + freeModule.exports = utf8; + } else { // in Narwhal or RingoJS v0.7.0- + var object = {}; + var hasOwnProperty = object.hasOwnProperty; + for (var key in utf8) { + hasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]); + } + } + } else { // in Rhino or a web browser + root.utf8 = utf8; + } + + }(this)); + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4)(module))) + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + + module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + module.children = []; + module.webpackPolyfill = 1; + } + return module; + } + + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + + // https://developer.pebble.com/docs/pebblekit-js/Pebble/#on + Pebble.on('message', function(event) { + console.log('Message received from watch:', event.data); + }); + + +/***/ }) +/******/ ]); +//# sourceMappingURL=pebble-js-app.js.map \ No newline at end of file diff --git a/build/pebble-js-app.js.map b/build/pebble-js-app.js.map new file mode 100644 index 0000000..74fefaf --- /dev/null +++ b/build/pebble-js-app.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap c71645c9a0936d3b9cd9","/home/zahkc/.pebble-sdk/SDKs/4.3/sdk-core/pebble/common/include/_pkjs_shared_additions.js","/home/zahkc/.pebble-sdk/SDKs/4.3/sdk-core/pebble/common/include/_pkjs_message_wrapper.js","/home/zahkc/.pebble-sdk/SDKs/4.3/~/utf8/utf8.js","(webpack)/buildin/module.js","./src/pkjs/index.js"],"names":[],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA,EAAC;;;;;;;ACnBD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,uBAAsB,QAAQ,EAAE;AAChC,yBAAwB,4BAA4B,EAAE;AACtD;AACA,QAAO;AACP;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+DAA8D;AAC9D,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,yBAAyB;AAC9C;AACA;AACA,oBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6DAA4D;AAC5D,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,uBAAuB;AACtD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,sDAAsD;AAC/E;;AAEA;AACA,0BAAyB,6BAA6B;AACtD;;AAEA;AACA,0BAAyB,iCAAiC;AAC1D;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,0EAAyE;AACzE,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP,UAAS;AACT;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+EAA8E;AAC9E;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;AACA,IAAG;AACH,EAAC;;;;;;;mCChrBD;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC;AACA,MAAK;AACL,6BAA4B;AAC5B;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uCAAsC;AACtC;AACA;AACA;AACA,uCAAsC;AACtC;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAEA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;AACF,oBAAmB;AACnB;AACA,IAAG,OAAO;AACV;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO;AACT;AACA;;AAEA,EAAC;;;;;;;;ACnPD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA;AACA;AACA,EAAC","file":"pebble-js-app.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c71645c9a0936d3b9cd9","(function(p) {\n if (!p === undefined) {\n console.error('Pebble object not found!?');\n return;\n }\n\n // Aliases:\n p.on = p.addEventListener;\n p.off = p.removeEventListener;\n\n // For Android (WebView-based) pkjs, print stacktrace for uncaught errors:\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('error', function(event) {\n if (event.error && event.error.stack) {\n console.error('' + event.error + '\\n' + event.error.stack);\n }\n });\n }\n\n})(Pebble);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/zahkc/.pebble-sdk/SDKs/4.3/sdk-core/pebble/common/include/_pkjs_shared_additions.js\n// module id = 1\n// module chunks = 0","(function() {\n var utf8 = require('utf8');\n var POSTMESSAGE_DEBUG = false;\n\n // Super simple polyfill for Array.from() that only deals with a Uint8Array:\n var arrayFromUint8Array = Array.from ? Array.from : function(uint8Array) {\n return [].slice.call(uint8Array);\n };\n\n function debugLog() {\n if (POSTMESSAGE_DEBUG) {\n console.log.apply(console, arguments);\n }\n }\n\n function createHandlersList() {\n var pos = 0;\n var handlers = [];\n\n return {\n add : function(handler) {\n handlers.push(handler);\n },\n clear : function() {\n handlers = [];\n pos = 0;\n },\n isEmpty : function() {\n return (handlers.length == 0);\n },\n remove : function(handler) {\n var idx = handlers.indexOf(handler);\n if (idx < 0) { return; } // Not registered\n if (idx < pos) { pos = Math.max(pos - 1, 0); } // We've iterated past it, and it's been removed\n handlers.splice(idx, 1);\n },\n newIterator : function() {\n pos = 0; // new iterator, reset position\n return {\n next : function() {\n if (pos < handlers.length) {\n return handlers[pos++];\n } else {\n return undefined;\n }\n }\n }\n }\n }\n }\n\n var EVENTS = {};\n\n var _callHandler = function(handler, event_name, callback_data) {\n var msg = { type: event_name };\n if (callback_data !== undefined) {\n msg.data = callback_data;\n }\n handler(msg);\n };\n\n var _callHandlersForEvent = function(event_name, callback_data) {\n var handler;\n if (!(event_name in EVENTS)) {\n return;\n }\n\n var it = EVENTS[event_name].newIterator();\n while ((handler = it.next())) {\n _callHandler(handler, event_name, callback_data);\n }\n }\n\n var _isPostMessageEvent = function(event_name) {\n return (['message', 'postmessageerror',\n 'postmessageconnected', 'postmessagedisconnected'].indexOf(event_name)) > -1;\n }\n\n var __Pebble = Pebble;\n\n // Create a new object with its prototype pointing to the original, using\n // Object.create(). This way, we can rely on JavaScript's prototype chain\n // traversal to make all properties on the original object \"just work\".\n // Note however, that these won't be \"own properties\", so when using\n // `for .. in`, Pebble.keys(), Object.getOwnPropertyNames(), etc. these\n // \"delegated properties\" will not be found.\n Pebble = Object.create(Pebble);\n\n for (var attr in __Pebble) {\n if (!__Pebble.hasOwnProperty(attr)) {\n continue;\n }\n // Attributes of Pebble which can be bound, should be bound to the original object\n if (__Pebble[attr].bind) {\n Pebble[attr] = __Pebble[attr].bind(__Pebble);\n } else {\n Pebble[attr] = __Pebble[attr];\n }\n }\n\n // Ensure that all exported functions exist.\n [\"addEventListener\", \"removeEventListener\", \"showSimpleNotificationOnPebble\",\n \"sendAppMessage\", \"getTimelineToken\", \"timelineSubscribe\",\n \"timelineUnsubscribe\", \"timelineSubscriptions\", \"getActiveWatchInfo\",\n \"getAccountToken\", \"getWatchToken\", \"appGlanceReload\"].forEach(\n function(elem, idx, arr) {\n if ((elem in Pebble) || ((typeof __Pebble[elem]) !== 'function')) {\n // This function has already been copied over or doesn't actually exist.\n return;\n }\n Pebble[elem] = __Pebble[elem].bind(__Pebble);\n }\n );\n\n // sendAppMessage is not supported, make it undefined so a user will get a\n // \"not a function\" error, and can check `typeof Pebble.sendAppMessage === 'function'`\n // to test for support.\n Pebble[\"sendAppMessage\"] = undefined;\n\n // The rocky implementation!\n\n function _scheduleAsyncPostMessageError(jsonString, reason) {\n _callHandlersForEvent('postmessageerror', JSON.parse(jsonString));\n console.error(\"postMessage() failed. Reason: \" + reason);\n }\n\n Pebble.postMessage = function(obj) {\n _out.sendObject(obj);\n };\n\n var on = function(event_name, handler) {\n if (typeof(handler) !== 'function') {\n throw TypeError(\"Handler for event expected, received \" + typeof(handler));\n }\n if (!(event_name in EVENTS)) {\n EVENTS[event_name] = createHandlersList();\n }\n EVENTS[event_name].add(handler);\n\n if ((event_name == \"postmessageconnected\" && _control.state == ControlStateSessionOpen) ||\n (event_name == \"postmessagedisconnected\" && _control.state != ControlStateSessionOpen)) {\n _callHandler(handler, event_name);\n }\n };\n\n Pebble.addEventListener = function(event_name, handler) {\n if (_isPostMessageEvent(event_name)) {\n return on(event_name, handler);\n } else if (event_name == 'appmessage') {\n throw Error(\"App Message not supported with Rocky.js apps. See Pebble.postMessage()\");\n } else {\n return __Pebble.addEventListener(event_name, handler);\n }\n };\n\n // Alias to the overridden implementation:\n Pebble.on = Pebble.addEventListener;\n\n var off = function(event_name, handler) {\n if (handler === undefined) {\n throw TypeError('Not enough arguments (missing handler)');\n }\n if (event_name in EVENTS) {\n EVENTS[event_name].remove(handler);\n }\n }\n\n Pebble.removeEventListener = function(event_name, handler) {\n if (_isPostMessageEvent(event_name)) {\n off(event_name, handler);\n } else {\n return __Pebble.removeEventListener(event_name, handler);\n }\n }\n\n // Alias to the overridden implementation:\n Pebble.off = Pebble.removeEventListener;\n\n /*********************************************************************************\n * postMessage(): Outbound object and control message queuing, sending & chunking.\n ********************************************************************************/\n\n var _out = new Sender();\n\n function Sender() {\n this.controlQueue = [];\n this.objectQueue = [];\n\n this._currentMessageType = undefined;\n this._failureCount = 0;\n this._offsetBytes = 0;\n this._chunkPayloadSize = 0;\n\n this._resetCurrent = function() {\n this._currentMessageType = undefined;\n this._failureCount = 0;\n this._offsetBytes = 0;\n this._chunkPayloadSize = 0;\n };\n\n this._getNextMessageType = function() {\n if (this.controlQueue.length > 0) {\n return \"control\";\n } else if (this.objectQueue.length > 0) {\n return \"object\";\n }\n // No messages remaining\n return undefined;\n };\n\n // Begin sending the next prioritized message\n this._sendNext = function() {\n if (this._currentMessageType !== undefined) {\n return; // Already something in flight\n }\n\n var type = this._getNextMessageType();\n if (type === undefined) {\n return; // No message to send\n }\n\n if (type === \"control\") {\n this._currentMessageType = type;\n this._trySendNextControl();\n } else if (type === \"object\") {\n this._currentMessageType = type;\n this._trySendNextChunk();\n }\n };\n\n\n //////////////////////////////////////////////////////////////////////////////\n // Sender: Control Message Handling\n //////////////////////////////////////////////////////////////////////////////\n\n this._controlSuccess = function() {\n this.controlQueue.shift();\n this._resetCurrent();\n this._sendNext();\n };\n\n this._controlFailure = function(e) {\n this._failureCount++;\n var willRetry = (this._failureCount <= 3);\n if (willRetry) {\n setTimeout(this._trySendNextControl.bind(this), 1000); // 1s retry\n } else {\n debugLog(\"Failed to send control message: \" + e +\n \", entering disconnected state.\");\n this.controlQueue.shift();\n this._resetCurrent();\n\n _control.enter(ControlStateDisconnected);\n this._sendNext();\n }\n };\n\n this._trySendNextControl = function() {\n var msg = this.controlQueue[0];\n __Pebble.sendAppMessage(msg,\n this._controlSuccess.bind(this),\n this._controlFailure.bind(this));\n };\n\n\n //////////////////////////////////////////////////////////////////////////////\n // Sender: Object Message Handling\n //////////////////////////////////////////////////////////////////////////////\n\n this._createDataObject = function(obj) {\n // Store obj as UTF-8 encoded JSON string into .data:\n var native_str_msg;\n try {\n native_str_msg = JSON.stringify(obj);\n } catch(e) {\n throw Error(\"First argument must be JSON-serializable.\");\n }\n // ECMA v5.1, 15.12.3, Note 5: Values that do not have a JSON\n // representation (such as undefined and functions) do not produce a\n // String. Instead they produce the undefined value.\n if (native_str_msg === undefined) {\n throw TypeError(\n \"Argument at index 0 is not a JSON.stringify()-able object\");\n }\n var utf8_str_msg = utf8.encode(native_str_msg);\n var data = [];\n for (var i = 0; i < utf8_str_msg.length; i++) {\n data.push(utf8_str_msg.charCodeAt(i));\n }\n data.push(0); // zero-terminate\n\n return {\n obj: obj,\n data: data,\n json: native_str_msg,\n };\n };\n\n this._completeObject = function(failureReasonOrUndefined) {\n var completeObject = this.objectQueue.shift();\n this._resetCurrent();\n\n if (failureReasonOrUndefined === undefined) {\n debugLog(\"Complete!\");\n } else {\n _scheduleAsyncPostMessageError(completeObject.json, failureReasonOrUndefined);\n }\n };\n\n this._chunkSuccess = function(e) {\n var data = this.objectQueue[0].data;\n debugLog(\"Sent \" + this._chunkPayloadSize + \" of \" + data.length + \" bytes\");\n this._offsetBytes += this._chunkPayloadSize;\n if (this._offsetBytes === data.length) {\n this._completeObject();\n this._sendNext();\n } else {\n this._trySendNextChunk();\n }\n };\n\n this._chunkFailure = function(e) {\n this._failureCount++;\n var willRetry = (this._failureCount <= 3);\n console.error(\"Chunk failed to send (willRetry=\" + willRetry + \"): \" + e);\n if (willRetry) {\n setTimeout(this._trySendNextChunk.bind(this), 1000); // 1s retry\n } else {\n this._completeObject(\"Too many failed transfer attempts\");\n this._sendNext();\n }\n };\n\n this._trySendNextChunk = function() {\n if (this._getNextMessageType() !== \"object\") {\n // This is no longer our highest priority outgoing message.\n // Send that message instead, and this message will be left in the queue\n // andrestarted when appropriate.\n this._resetCurrent();\n this._sendNext();\n return;\n }\n\n if (!_control.isSessionOpen()) {\n // Make sure to start over if session is closed while chunks have been\n // sent for the head object:\n this._offsetBytes = 0;\n this._chunkFailure(\"Session not open. Hint: check out the \\\"postmessageconnected\\\" event.\");\n return;\n }\n\n var data = this.objectQueue[0].data;\n var sizeRemaining = data.length - this._offsetBytes;\n debugLog(\"Sending next chunk, sizeRemaining: \" + sizeRemaining);\n this._chunkPayloadSize =\n Math.min(_control.protocol.tx_chunk_size, sizeRemaining);\n var n;\n var isFirst = (this._offsetBytes === 0);\n var isFirstBit;\n if (isFirst) {\n isFirstBit = (1 << 7);\n n = data.length;\n } else {\n isFirstBit = 0;\n n = this._offsetBytes;\n }\n var chunk = [\n n & 255,\n (n >> 8) & 255,\n (n >> 16) & 255,\n ((n >> 24) & ~(1 << 7)) | isFirstBit\n ];\n var chunkPayload = data.slice(\n this._offsetBytes, this._offsetBytes + this._chunkPayloadSize);\n Array.prototype.push.apply(chunk, chunkPayload);\n debugLog(\"Sending Chunk Size: \" + this._chunkPayloadSize);\n __Pebble.sendAppMessage({ControlKeyChunk: chunk},\n this._chunkSuccess.bind(this),\n this._chunkFailure.bind(this));\n };\n\n //////////////////////////////////////////////////////////////////////////////\n // Sender: Public Interface\n //////////////////////////////////////////////////////////////////////////////\n\n this.sendObject = function(obj) {\n debugLog(\"Queuing up object message: \" + JSON.stringify(obj));\n var dataObj = this._createDataObject(obj);\n this.objectQueue.push(dataObj)\n this._sendNext();\n };\n\n this.sendControl = function(obj) {\n debugLog(\"Sending control message: \" + JSON.stringify(obj));\n this.controlQueue.push(obj);\n this._sendNext();\n }\n };\n\n /*****************************************************************************\n * postMessage(): Receiving chunks of inbound objects and reassembly\n ****************************************************************************/\n\n var _in = new ChunkReceiver();\n\n function ChunkReceiver() {\n this.utf8_json_string = \"\";\n this.total_size_bytes = 0;\n this.received_size_bytes = 0;\n\n this.handleChunkReceived = function handleChunkReceived(chunk) {\n if (!chunk) {\n return false;\n }\n var isExpectingFirst = (this.utf8_json_string.length === 0);\n if (chunk.is_first != isExpectingFirst) {\n console.error(\n \"Protocol out of sync! chunk.is_first=\" + chunk.is_first +\n \" isExpectingFirst=\" + isExpectingFirst);\n return false;\n }\n if (chunk.is_first) {\n this.total_size_bytes = chunk.total_size_bytes;\n this.received_size_bytes = 0;\n } else {\n if (this.received_size_bytes != chunk.offset_bytes) {\n console.error(\n \"Protocol out of sync! received_size_bytes=\" +\n this.received_size_bytes + \" chunk.offset_bytes=\" + chunk.offset_bytes);\n return false;\n }\n if (this.received_size_bytes + chunk.data.length > this.total_size_bytes) {\n console.error(\n \"Protocol out of sync! received_size_bytes=\" + this.received_size_bytes +\n \" chunk.data.length=\" + chunk.data.length +\n \" total_size_bytes=\" + this.total_size_bytes);\n return false;\n }\n }\n\n debugLog(\"Received (\" + this.received_size_bytes + \" / \" +\n this.total_size_bytes + \" bytes)\");\n debugLog(\"Payload size: \" + chunk.data.length);\n\n this.received_size_bytes += chunk.data.length;\n var isLastChunk = (this.received_size_bytes == this.total_size_bytes);\n var isLastChunkZeroTerminated = undefined;\n if (isLastChunk) {\n isLastChunkZeroTerminated = (chunk.data[chunk.data.length - 1] === 0);\n }\n\n // Copy the received data over:\n var end = isLastChunk ? chunk.data.length - 1 : chunk.data.length;\n for (var i = 0; i < end; i++) {\n this.utf8_json_string += String.fromCharCode(chunk.data[i]);\n }\n\n if (isLastChunk) {\n if (isLastChunkZeroTerminated) {\n var json_string = utf8.decode(this.utf8_json_string);\n var data;\n try {\n data = JSON.parse(json_string);\n } catch (e) {\n console.error(\n \"Dropping message, failed to parse JSON with error: \" + e +\n \" (json_string=\" + json_string + \")\");\n }\n if (data !== undefined) {\n _callHandlersForEvent('message', data);\n }\n } else {\n console.error(\"Last Chunk wasn't zero terminated! Dropping message.\");\n }\n\n this.utf8_json_string = \"\";\n }\n\n return true;\n }\n }\n\n /*****************************************************************************\n * postMessage() Session Control Protocol\n ****************************************************************************/\n\n var ControlStateDisconnected = \"ControlStateDisconnected\";\n var ControlStateAwaitingResetCompleteRemoteInitiated = \"ControlStateAwaitingResetCompleteRemoteInitiated\";\n var ControlStateAwaitingResetCompleteLocalInitiated = \"ControlStateAwaitingResetCompleteLocalInitiated\";\n var ControlStateSessionOpen = \"ControlStateSessionOpen\";\n\n var ControlKeyResetRequest = \"ControlKeyResetRequest\";\n var ControlKeyResetComplete = \"ControlKeyResetComplete\";\n var ControlKeyChunk = \"ControlKeyChunk\";\n var ControlKeyUnsupportedError = \"ControlKeyUnsupportedError\";\n\n function _unpackResetCompleteMessage(data) {\n debugLog(\"Got ResetComplete: \" + data);\n return {\n min_version : data[0],\n max_version : data[1],\n max_tx_chunk_size : (data[2] << 8) | (data[3]),\n max_rx_chunk_size : (data[4] << 8) | (data[5]),\n };\n };\n\n function _unpackChunk(data) {\n //debugLog(\"Got Chunk: \" + data);\n if (data.length <= 4) {\n console.error(\"Chunk data too short to be valid!\");\n return;\n }\n var is_first_bit = (1 << 7);\n var is_first = (is_first_bit === (data[3] & is_first_bit));\n var chunk = {\n is_first : is_first\n };\n var msbyte = (~is_first_bit) & data[3];\n var num31bits = (msbyte << 24) | (data[2] << 16) | (data[1] << 8) | data[0];\n if (is_first) {\n chunk.total_size_bytes = num31bits;\n } else {\n chunk.offset_bytes = num31bits;\n }\n chunk.data = data.slice(4);\n return chunk;\n }\n\n function _remoteProtocolValidateAndSet(remote) {\n debugLog(\"Remote min: \" + remote.min_version);\n debugLog(\"Remote max: \" + remote.max_version);\n if (remote.min_version == undefined || remote.max_version == undefined ||\n remote.min_version > PROTOCOL.max_version || remote.max_version < PROTOCOL.min_version) {\n return false;\n }\n\n _control.protocol = {\n version : Math.min(remote.max_version, PROTOCOL.max_version),\n tx_chunk_size : Math.min(remote.max_rx_chunk_size, PROTOCOL.max_tx_chunk_size),\n rx_chunk_size : Math.min(remote.max_tx_chunk_size, PROTOCOL.max_rx_chunk_size),\n };\n\n return true;\n };\n\n function _sendControlMessage(msg) {\n _out.sendControl(msg);\n }\n\n function _controlSendResetComplete() {\n var data = new Uint8Array(6);\n data[0] = PROTOCOL.min_version;\n data[1] = PROTOCOL.max_version;\n data[2] = PROTOCOL.max_tx_chunk_size >> 8;\n data[3] = PROTOCOL.max_tx_chunk_size;\n data[4] = PROTOCOL.max_rx_chunk_size >> 8;\n data[5] = PROTOCOL.max_rx_chunk_size;\n _sendControlMessage({ ControlKeyResetComplete : arrayFromUint8Array(data) });\n }\n\n function _controlSendResetRequest() {\n _sendControlMessage({ ControlKeyResetRequest : 0 });\n }\n\n function _controlSendUnsupportedError() {\n _sendControlMessage({ ControlKeyUnsupportedError : 0 });\n }\n\n var ControlHandlers = {\n ControlStateDisconnected : function(payload) {\n },\n ControlStateAwaitingResetCompleteRemoteInitiated : function(payload) {\n if (ControlKeyResetComplete in payload) {\n var remote_protocol = _unpackResetCompleteMessage(payload[ControlKeyResetComplete]);\n // NOTE: This should *always* be true, we should never receive a\n // ResetComplete response from the Remote in this state since it already\n // knows it is unsupported\n if (_remoteProtocolValidateAndSet(remote_protocol)) {\n _control.enter(ControlStateSessionOpen);\n }\n } else if (ControlKeyResetRequest in payload) {\n _control.enter(ControlStateAwaitingResetCompleteRemoteInitiated); // Re-enter this state\n } else if (ControlKeyChunk in payload) {\n _control.enter(ControlStateAwaitingResetCompleteLocalInitiated);\n } else if (ControlKeyUnsupportedError in payload) {\n throw Error(\"Unsupported protocol error: \" + payload[ControlKeyUnsupportedError]);\n }\n },\n ControlStateAwaitingResetCompleteLocalInitiated : function(payload) {\n if (ControlKeyResetComplete in payload) {\n var remote_protocol = _unpackResetCompleteMessage(payload[ControlKeyResetComplete]);\n debugLog(\"Remote Protocol: \" + remote_protocol);\n if (_remoteProtocolValidateAndSet(remote_protocol)) {\n debugLog(\"OK Remote protocol...\");\n _controlSendResetComplete();\n _control.enter(ControlStateSessionOpen);\n } else {\n _controlSendUnsupportedError();\n }\n } else {\n ; // Ignore, we're in this state because we already sent a ResetRequest\n }\n },\n ControlStateSessionOpen : function(payload) {\n if (ControlKeyChunk in payload) {\n var chunk = _unpackChunk(payload[ControlKeyChunk]);\n if (false === _in.handleChunkReceived(chunk)) {\n _control.enter(ControlStateAwaitingResetCompleteLocalInitiated);\n }\n } else if (ControlKeyResetRequest in payload) {\n _control.enter(ControlStateAwaitingResetCompleteRemoteInitiated);\n } else {\n // FIXME: This could be an UnsupportedError, we probably don't want to\n // keep on trying to negotiate protocol\n _control.enter(ControlStateAwaitingResetCompleteLocalInitiated);\n }\n },\n };\n\n var ControlTransitions = {\n ControlStateDisconnected : function(from_state) {\n _control.resetProtocol();\n _control.state = ControlStateAwaitingResetCompleteRemoteInitiated;\n },\n ControlStateAwaitingResetCompleteRemoteInitiated : function(from_state) {\n _control.resetProtocol();\n _control.state = ControlStateAwaitingResetCompleteRemoteInitiated;\n _controlSendResetComplete();\n },\n ControlStateAwaitingResetCompleteLocalInitiated : function(from_state) {\n if (from_state != ControlStateAwaitingResetCompleteLocalInitiated) {\n // Coming from elsewhere, send the ResetRequest\n _controlSendResetRequest();\n }\n _control.resetProtocol();\n _control.state = ControlStateAwaitingResetCompleteLocalInitiated;\n },\n ControlStateSessionOpen : function(from_state) {\n _control.state = ControlStateSessionOpen;\n _callHandlersForEvent('postmessageconnected');\n },\n };\n\n var PROTOCOL = {\n min_version : 1,\n max_version : 1,\n max_tx_chunk_size : 1000,\n max_rx_chunk_size : 1000,\n };\n\n var _control = {\n state : ControlStateDisconnected,\n handle : function(msg) {\n debugLog(\"Handle \" + this.state + \"(\" + JSON.stringify(msg.payload) + \"}\");\n ControlHandlers[this.state](msg.payload);\n },\n enter : function(to_state) {\n debugLog(\"Enter \" + this.state + \" ===> \" + to_state);\n var prev_state = this.state;\n ControlTransitions[to_state](this.state);\n if (prev_state == ControlStateSessionOpen && to_state != ControlStateSessionOpen) {\n _callHandlersForEvent('postmessagedisconnected');\n }\n },\n isSessionOpen: function() {\n return (this.state === ControlStateSessionOpen);\n },\n resetProtocol: function() {\n this.protocol = {\n version : 0,\n tx_chunk_size : 0,\n rx_chunk_size : 0,\n };\n },\n protocol : {\n version : 0,\n tx_chunk_size : 0,\n rx_chunk_size : 0,\n },\n };\n\n __Pebble.addEventListener('appmessage', function(msg) {\n _control.handle(msg);\n });\n\n __Pebble.addEventListener('ready', function(e) {\n _control.enter(ControlStateAwaitingResetCompleteLocalInitiated);\n });\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/zahkc/.pebble-sdk/SDKs/4.3/sdk-core/pebble/common/include/_pkjs_message_wrapper.js\n// module id = 2\n// module chunks = 0","/*! https://mths.be/utf8js v2.1.2 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.1.2',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn utf8;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// /home/zahkc/.pebble-sdk/SDKs/4.3/~/utf8/utf8.js\n// module id = 3\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 4\n// module chunks = 0","// https://developer.pebble.com/docs/pebblekit-js/Pebble/#on\nPebble.on('message', function(event) {\n console.log('Message received from watch:', event.data);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pkjs/index.js\n// module id = 5\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/build/pebble-rocky.map b/build/pebble-rocky.map new file mode 100644 index 0000000..7944e09 --- /dev/null +++ b/build/pebble-rocky.map @@ -0,0 +1,1432 @@ +Archive member included because of file (symbol) + +/home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + basalt/src/rocky.c.41.o (window_create) + +Discarded input sections + + .text 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crti.o + .bss 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crti.o + .init 0x0000000000000000 0x4 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crti.o + .fini 0x0000000000000000 0x4 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crti.o + .text 0x0000000000000000 0xc8 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + .bss 0x0000000000000000 0x1c /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + .init_array 0x0000000000000000 0x4 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + .fini_array 0x0000000000000000 0x4 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + .eh_frame 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + .jcr 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + .tm_clone_table + 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + .text 0x0000000000000000 0x0 basalt/src/rocky.c.41.o + .bss 0x0000000000000000 0x0 basalt/src/rocky.c.41.o + .text 0x0000000000000000 0x0 basalt/appinfo.auto.c.41.o + .bss 0x0000000000000000 0x0 basalt/appinfo.auto.c.41.o + .text 0x0000000000000000 0x0 basalt/src/resource_ids.auto.c.41.o + .bss 0x0000000000000000 0x0 basalt/src/resource_ids.auto.c.41.o + .data.RESOURCE_ID_JS_SNAPSHOT + 0x0000000000000000 0x4 basalt/src/resource_ids.auto.c.41.o + .text 0x0000000000000000 0x0 src/message_keys.auto.c.41.o + .bss 0x0000000000000000 0x0 src/message_keys.auto.c.41.o + .data.MESSAGE_KEY_ControlKeyResetComplete + 0x0000000000000000 0x4 src/message_keys.auto.c.41.o + .data.MESSAGE_KEY_ControlKeyUnsupportedError + 0x0000000000000000 0x4 src/message_keys.auto.c.41.o + .data.MESSAGE_KEY_ControlKeyChunk + 0x0000000000000000 0x4 src/message_keys.auto.c.41.o + .data.MESSAGE_KEY_ControlKeyResetRequest + 0x0000000000000000 0x4 src/message_keys.auto.c.41.o + .bss 0x0000000000000000 0x0 /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.accel_data_service_subscribe__deprecated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.accel_data_service_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.accel_service_peek + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.accel_service_set_samples_per_update + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.accel_service_set_sampling_rate + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.accel_tap_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.accel_tap_service_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_legacy2_add_to_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_legacy2_clear_icon + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_legacy2_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_legacy2_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_legacy2_get_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_legacy2_remove_from_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_legacy2_set_background_color_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_legacy2_set_click_config_provider + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_legacy2_set_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_legacy2_set_icon + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_get_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_is_scheduled + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_schedule + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_set_curve + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_set_delay + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_set_duration + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_set_handlers + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_set_implementation + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_unschedule + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_unschedule_all + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_comm_get_sniff_interval + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_comm_set_sniff_interval + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_event_loop + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_log 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_deregister_callbacks + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_open + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_sync_deinit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_sync_get + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_sync_init + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_sync_set + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_timer_cancel + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_timer_register + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_timer_reschedule + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.atan2_lookup + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.atoi 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.atol 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.battery_state_service_peek + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.battery_state_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.battery_state_service_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bitmap_layer_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bitmap_layer_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bitmap_layer_get_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bitmap_layer_set_alignment + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bitmap_layer_set_background_color_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bitmap_layer_set_bitmap + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bitmap_layer_set_compositing_mode + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bluetooth_connection_service_peek + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bluetooth_connection_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bluetooth_connection_service_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.click_number_of_clicks_counted + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.click_recognizer_get_button_id + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.clock_copy_time_string + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.clock_is_24h_style + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.cos_lookup + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.data_logging_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.data_logging_finish + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.data_logging_log + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_calc_buffer_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_calc_buffer_size_from_tuplets + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_find + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_merge + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_read_begin_from_buffer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_read_first + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_read_next + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_serialize_tuplets + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_serialize_tuplets_to_buffer__deprecated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_serialize_tuplets_to_buffer_with_iter + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_begin + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_cstring + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_end + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_int + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_int16 + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_int32 + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_int8 + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_tuplet + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_uint16 + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_uint32 + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_write_uint8 + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.fonts_get_system_font + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.fonts_load_custom_font + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.fonts_unload_custom_font + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.free 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_create_as_sub_bitmap + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_create_with_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_create_with_resource + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gmtime 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gpath_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gpath_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gpath_draw_filled_legacy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gpath_draw_outline + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gpath_move_to + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gpath_rotate_to + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gpoint_equal + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_context_set_compositing_mode + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_context_set_fill_color_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_context_set_stroke_color_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_context_set_text_color_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_draw_bitmap_in_rect + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_draw_circle + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_draw_line + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_draw_pixel + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_draw_rect + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_draw_round_rect + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_fill_circle + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_fill_rect + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_text_layout_get_max_used_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.grect_align + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.grect_center_point + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.grect_clip + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.grect_contains_point + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.grect_crop + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.grect_equal + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.grect_is_empty + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.grect_standardize + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gsize_equal + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.inverter_layer_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.inverter_layer_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.inverter_layer_get_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_add_child + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_create_with_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_get_bounds + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_get_clips + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_get_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_get_frame + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_get_hidden + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_get_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_insert_above_sibling + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_insert_below_sibling + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_mark_dirty + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_remove_child_layers + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_remove_from_parent + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_set_bounds + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_set_clips + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_set_frame + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_set_hidden + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_set_update_proc + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.light_enable + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.light_enable_interaction + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.localtime__deprecated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.malloc 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.memcpy 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.memmove 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.memset 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_cell_basic_draw + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_cell_basic_header_draw + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_cell_title_draw + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_index_compare + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_legacy2_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_get_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_get_scroll_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_get_selected_index + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_reload_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_legacy2_set_callbacks__deprecated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_set_click_config_onto_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_set_selected_index + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_set_selected_next + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.number_window_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.number_window_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.number_window_get_value + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.number_window_set_label + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.number_window_set_max + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.number_window_set_min + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.number_window_set_step_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.number_window_set_value + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_delete + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_exists + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_get_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_read_bool + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_read_data__deprecated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_read_int + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_read_string__deprecated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_write_bool + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_write_data__deprecated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_write_int + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_write_string + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_legacy2_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_legacy2_create_layer_frame + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_legacy2_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_legacy2_update_gpoint + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_legacy2_update_grect + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_legacy2_update_int16 + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.psleep 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.rand 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.resource_get_handle + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.resource_load + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.resource_load_byte_range + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.resource_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.rot_bitmap_layer_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.rot_bitmap_layer_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.rot_bitmap_layer_increment_angle + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.rot_bitmap_layer_set_angle + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.rot_bitmap_layer_set_corner_clip_color_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.rot_bitmap_set_compositing_mode + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.rot_bitmap_set_src_ic + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_add_child + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_get_content_offset + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_get_content_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_get_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_get_shadow_hidden + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_scroll_down_click_handler + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_scroll_up_click_handler + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_set_callbacks + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_set_click_config_onto_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_set_content_offset + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_set_content_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_set_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_set_frame + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_set_shadow_hidden + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.simple_menu_layer_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.simple_menu_layer_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.simple_menu_layer_get_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.simple_menu_layer_get_selected_index + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.simple_menu_layer_set_selected_index + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.sin_lookup + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.snprintf + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.srand 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.strcat 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.strcmp 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.strcpy 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.strftime + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.strlen 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.strncat 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.strncmp 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.strncpy 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_get_content_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_get_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_get_text + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_set_background_color_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_set_font + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_set_overflow_mode + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_set_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_set_text + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_set_text_alignment + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_legacy2_set_text_color_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.tick_timer_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.tick_timer_service_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.time__deprecated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.time_ms_deprecated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.vibes_cancel + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.vibes_double_pulse + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.vibes_enqueue_custom_pattern + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.vibes_long_pulse + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.vibes_short_pulse + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_get_click_config_provider + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_get_fullscreen + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_get_root_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_is_loaded + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_set_background_color_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_set_click_config_provider + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_set_click_config_provider_with_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_set_fullscreen + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_set_status_bar_icon + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_set_window_handlers + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_stack_contains_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_stack_get_top_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_stack_pop + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_stack_pop_all + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_stack_remove + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_focus_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_focus_service_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_get_user_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_set_user_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_get_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_inbox_size_maximum + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_outbox_begin + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_outbox_send + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_outbox_size_maximum + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_register_inbox_dropped + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_register_inbox_received + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_register_outbox_failed + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_register_outbox_sent + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_message_set_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_long_click_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_multi_click_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_raw_click_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_set_click_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_single_click_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_single_repeating_click_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_draw_text + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_serialize_tuplets_to_buffer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_read_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_read_string + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.persist_write_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dict_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_text_layout_get_content_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.simple_menu_layer_get_menu_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.accel_data_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.calloc 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bitmap_layer_get_bitmap + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_legacy2_set_callbacks + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_get_click_config_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.number_window_get_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.realloc 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_create_blank_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.click_recognizer_is_repeating + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.accel_raw_data_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_worker_is_running + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_worker_kill + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_worker_launch + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_worker_message_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_worker_message_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_worker_send_message + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.worker_event_loop + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.worker_launch_app + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.heap_bytes_free + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.heap_bytes_used + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.compass_service_peek + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.compass_service_set_heading_filter + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.compass_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.compass_service_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.uuid_equal + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.uuid_to_string + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gpath_draw_filled + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_legacy2_set_custom_curve + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.watch_info_get_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.watch_info_get_firmware_version + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.watch_info_get_model + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_capture_frame_buffer_2bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_frame_buffer_is_captured + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_release_frame_buffer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.clock_to_timestamp + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.launch_reason + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.wakeup_cancel + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.wakeup_cancel_all + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.wakeup_get_launch_event + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.wakeup_query + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.wakeup_schedule + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.wakeup_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.clock_is_timezone_set + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.i18n_get_system_locale + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text._localeconv_r + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.setlocale + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.mktime 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gcolor_equal__deprecated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.__profiler_init + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.__profiler_print_stats + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.__profiler_start + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.__profiler_stop + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.bitmap_layer_set_background_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_context_set_fill_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_context_set_stroke_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_context_set_text_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.rot_bitmap_layer_set_corner_clip_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.window_set_background_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.clock_get_timezone + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.localtime + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_get_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_is_scheduled + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_schedule + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_set_curve + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_set_custom_curve + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_set_delay + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_set_duration + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_set_handlers + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_set_implementation + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_unschedule + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_unschedule_all + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_create_blank + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_capture_frame_buffer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_capture_frame_buffer_format + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_create_layer_frame + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_from + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_get_animation + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_subject + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_to + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_update_gpoint + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_update_grect + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_update_int16 + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_create_blank_with_palette + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_get_bounds + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_get_bytes_per_row + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_get_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_get_format + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_get_palette + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_set_bounds + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_set_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_set_palette + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_sequence_create_with_resource + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_sequence_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_sequence_get_bitmap_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_sequence_get_current_frame_idx + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_sequence_get_total_num_frames + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_sequence_update_bitmap_next_frame + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_create_from_png_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_clone + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_get_delay + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_get_duration + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_get_play_count + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_get_elapsed + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_get_reverse + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_sequence_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_sequence_create_from_array + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_set_play_count + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_set_elapsed + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_set_reverse + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_spawn_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_spawn_create_from_array + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_get_curve + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_get_custom_curve + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.animation_get_implementation + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.launch_get_args + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_sequence_get_play_count + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_sequence_restart + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_sequence_set_play_count + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_context_set_antialiased + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_context_set_stroke_width + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_add_to_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_clear_icon + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_get_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_remove_from_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_set_background_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_set_click_config_provider + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_set_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_set_icon + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_set_icon_animated + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_sequence_update_bitmap_by_elapsed + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_create_palettized_from_1bit + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_cell_layer_is_highlighted + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_draw_rotated_bitmap + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_bar_layer_set_icon_press_animation + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_get_content_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_get_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_get_text + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_set_background_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_set_font + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_set_overflow_mode + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_set_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_set_text + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_set_text_alignment + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_set_text_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_draw + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_frame_draw + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_frame_get_duration + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_frame_set_duration + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_get_fill_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_get_hidden + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_get_num_points + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_get_path_open + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_get_point + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_get_radius + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_get_stroke_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_get_stroke_width + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_get_type + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_image_clone + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_image_create_with_resource + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_image_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_image_draw + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_image_get_bounds_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_image_get_command_list + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_image_set_bounds_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_list_draw + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_list_get_command + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_list_get_num_commands + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_list_iterate + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_clone + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_create_with_resource + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_get_bounds_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_get_frame_by_elapsed + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_get_frame_by_index + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_get_num_frames + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_get_play_count + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_get_total_duration + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_set_bounds_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_sequence_set_play_count + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_set_fill_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_set_hidden + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_set_path_open + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_set_point + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_set_radius + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_set_stroke_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_set_stroke_width + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_create_bounds_origin + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_update_uint32 + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gpath_draw_outline_open + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.time 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_set_highlight_colors + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_set_normal_colors + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_set_callbacks + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_pad_bottom_enable + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.status_bar_layer_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.status_bar_layer_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.status_bar_layer_get_background_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.status_bar_layer_get_foreground_color + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.status_bar_layer_get_layer + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.status_bar_layer_set_colors + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.status_bar_layer_set_separator_mode + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.difftime + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.time_ms 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gcolor_legible_over + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.property_animation_update_gcolor8 + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_focus_service_subscribe_handlers + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_close + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_freeze + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_get_context + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_get_root_level + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_hierarchy_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_item_get_action_data + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_item_get_label + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_level_add_action + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_level_add_child + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_level_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_level_set_display_mode + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_open + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_set_result_window + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.action_menu_unfreeze + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dictation_session_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dictation_session_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dictation_session_enable_confirmation + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dictation_session_start + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dictation_session_stop + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_attribute_begin_write + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_attribute_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_attribute_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_attribute_end_write + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_attribute_get_attribute_id + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_attribute_get_service_id + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_attribute_read + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_service_is_available + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_set_timeout + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.smartstrap_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.connection_service_peek_pebble_app_connection + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.connection_service_peek_pebblekit_connection + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.connection_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.connection_service_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.dictation_session_enable_error_dialogs + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gbitmap_get_data_row_info + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.content_indicator_configure_direction + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.content_indicator_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.content_indicator_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.content_indicator_get_content_available + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.content_indicator_set_content_available + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_get_content_indicator + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_get_center_focused + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_set_center_focused + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.grect_inset + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gpoint_from_polar + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_draw_arc + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_fill_radial + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.grect_centered_from_polar + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_text_attributes_create + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_text_attributes_destroy + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_text_attributes_enable_paging + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_text_attributes_enable_screen_text_flow + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_text_attributes_restore_default_paging + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_text_attributes_restore_default_text_flow + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.graphics_text_layout_get_content_size_with_attributes + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_convert_point_to_screen + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_convert_rect_to_screen + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_get_paging + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.scroll_layer_set_paging + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_enable_screen_text_flow_and_paging + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.text_layer_restore_default_text_flow_and_paging + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.menu_layer_is_index_selected + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_activities_iterate + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_any_activity_accessible + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_events_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_events_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_get_minute_history + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_metric_accessible + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_peek_current_activities + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_sum + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_sum_today + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.time_start_of_today + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_metric_averaged_accessible + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_sum_averaged + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_get_measurement_system_for_display + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gdraw_command_frame_get_command_list + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.gcolor_equal + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_glance_add_slice + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.app_glance_reload + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.exit_reason_set + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_aggregate_averaged + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_cancel_metric_alert + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_metric_aggregate_averaged_accessible + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_peek_current_value + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_register_metric_alert + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.layer_get_unobstructed_bounds + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.preferred_result_display_duration + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.unobstructed_area_service_subscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.unobstructed_area_service_unsubscribe + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.memory_cache_flush + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_get_heart_rate_sample_period_expiration_sec + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.health_service_set_heart_rate_sample_period + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.preferred_content_size + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text.quiet_time_is_active + 0x0000000000000000 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .text 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtend.o + .bss 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtend.o + .eh_frame 0x0000000000000000 0x4 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtend.o + .jcr 0x0000000000000000 0x4 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtend.o + .tm_clone_table + 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtend.o + .text 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtn.o + .bss 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtn.o + .init 0x0000000000000000 0x8 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtn.o + .fini 0x0000000000000000 0x8 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtn.o + +Memory Configuration + +Name Origin Length Attributes +APP 0x0000000000000000 0x0000000000010000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crti.o +LOAD /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o +LOAD basalt/src/rocky.c.41.o +LOAD basalt/appinfo.auto.c.41.o +LOAD basalt/src/resource_ids.auto.c.41.o +LOAD src/message_keys.auto.c.41.o +LOAD /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a +START GROUP +LOAD /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/libgcc.a +LOAD /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/../../../../arm-none-eabi/lib/thumb2/libc.a +END GROUP +LOAD /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtend.o +LOAD /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtn.o + +.header 0x0000000000000000 0x82 + *(.pbl_header) + .pbl_header 0x0000000000000000 0x82 basalt/appinfo.auto.c.41.o + 0x0000000000000000 __pbl_app_info + +.note.gnu.build-id + 0x0000000000000082 0x26 + 0x0000000000000082 PROVIDE (BUILD_ID, .) + *(.note.gnu.build-id) + *fill* 0x0000000000000082 0x2 + .note.gnu.build-id + 0x0000000000000084 0x24 linker stubs + +.text 0x00000000000000a8 0x50 + *(.text) + .text 0x00000000000000a8 0x14 /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + *(.text.*) + .text.startup.main + 0x00000000000000bc 0x16 basalt/src/rocky.c.41.o + 0x00000000000000bc main + *fill* 0x00000000000000d2 0x2 + .text.window_create + 0x00000000000000d4 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + 0x00000000000000d4 window_create + .text.window_stack_push + 0x00000000000000e0 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + 0x00000000000000e0 window_stack_push + .text.rocky_event_loop_with_resource + 0x00000000000000ec 0xc /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + 0x00000000000000ec rocky_event_loop_with_resource + *(.rodata) + *(.rodata*) + +.glue_7 0x00000000000000f8 0x0 + .glue_7 0x0000000000000000 0x0 linker stubs + +.glue_7t 0x00000000000000f8 0x0 + .glue_7t 0x0000000000000000 0x0 linker stubs + +.vfp11_veneer 0x00000000000000f8 0x0 + .vfp11_veneer 0x0000000000000000 0x0 linker stubs + +.v4_bx 0x00000000000000f8 0x0 + .v4_bx 0x0000000000000000 0x0 linker stubs + +.iplt 0x00000000000000f8 0x0 + .iplt 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + +.rel.dyn 0x00000000000000f8 0x0 + .rel.iplt 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + +.data 0x00000000000000f8 0x4 + *(.data) + .data 0x00000000000000f8 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crti.o + .data 0x00000000000000f8 0x4 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + 0x00000000000000f8 __dso_handle + .data 0x00000000000000fc 0x0 basalt/src/rocky.c.41.o + .data 0x00000000000000fc 0x0 basalt/appinfo.auto.c.41.o + .data 0x00000000000000fc 0x0 basalt/src/resource_ids.auto.c.41.o + .data 0x00000000000000fc 0x0 src/message_keys.auto.c.41.o + .data 0x00000000000000fc 0x0 /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .data 0x00000000000000fc 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtend.o + .data 0x00000000000000fc 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtn.o + *(.data.*) + +.igot.plt 0x00000000000000fc 0x0 + .igot.plt 0x0000000000000000 0x0 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + +.bss + *(.bss) + *(.bss.*) + +DISCARD + libc.a(*) + libm.a(*) + libgcc.a(*) + *(.eh_frame) +OUTPUT(/home/zahkc/Documents/Projects/Pebble/geiger/build/basalt/pebble-app.elf elf32-littlearm) + +.ARM.attributes + 0x0000000000000000 0x27 + .ARM.attributes + 0x0000000000000000 0x19 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crti.o + .ARM.attributes + 0x0000000000000019 0x29 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + .ARM.attributes + 0x0000000000000042 0x33 basalt/src/rocky.c.41.o + .ARM.attributes + 0x0000000000000075 0x33 basalt/appinfo.auto.c.41.o + .ARM.attributes + 0x00000000000000a8 0x33 basalt/src/resource_ids.auto.c.41.o + .ARM.attributes + 0x00000000000000db 0x33 src/message_keys.auto.c.41.o + .ARM.attributes + 0x000000000000010e 0x21 /home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/basalt/lib/libpebble.a(tmpFRPTsFpebble.o) + .ARM.attributes + 0x000000000000012f 0x29 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtend.o + .ARM.attributes + 0x0000000000000158 0x19 /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtn.o + +.comment 0x0000000000000000 0x4e + .comment 0x0000000000000000 0x4e /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtbegin.o + 0x4f (size before relaxing) + .comment 0x0000000000000000 0x4f basalt/src/rocky.c.41.o + .comment 0x0000000000000000 0x4f basalt/appinfo.auto.c.41.o + .comment 0x0000000000000000 0x4f basalt/src/resource_ids.auto.c.41.o + .comment 0x0000000000000000 0x4f src/message_keys.auto.c.41.o + .comment 0x0000000000000000 0x4f /home/zahkc/Documents/Pebble/pebble-dev/pebble-sdk-4.6-rc2-linux64/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.7.2/thumb2/crtend.o + +.debug_info 0x0000000000000000 0x5fd + .debug_info 0x0000000000000000 0x15b basalt/src/rocky.c.41.o + .debug_info 0x000000000000015b 0x36a basalt/appinfo.auto.c.41.o + .debug_info 0x00000000000004c5 0x81 basalt/src/resource_ids.auto.c.41.o + .debug_info 0x0000000000000546 0xb7 src/message_keys.auto.c.41.o + +.debug_abbrev 0x0000000000000000 0x22c + .debug_abbrev 0x0000000000000000 0x106 basalt/src/rocky.c.41.o + .debug_abbrev 0x0000000000000106 0x9e basalt/appinfo.auto.c.41.o + .debug_abbrev 0x00000000000001a4 0x44 basalt/src/resource_ids.auto.c.41.o + .debug_abbrev 0x00000000000001e8 0x44 src/message_keys.auto.c.41.o + +.debug_loc 0x0000000000000000 0x20 + .debug_loc 0x0000000000000000 0x20 basalt/src/rocky.c.41.o + +.debug_aranges 0x0000000000000000 0x68 + .debug_aranges + 0x0000000000000000 0x20 basalt/src/rocky.c.41.o + .debug_aranges + 0x0000000000000020 0x18 basalt/appinfo.auto.c.41.o + .debug_aranges + 0x0000000000000038 0x18 basalt/src/resource_ids.auto.c.41.o + .debug_aranges + 0x0000000000000050 0x18 src/message_keys.auto.c.41.o + +.debug_ranges 0x0000000000000000 0x10 + .debug_ranges 0x0000000000000000 0x10 basalt/src/rocky.c.41.o + +.debug_line 0x0000000000000000 0x499 + .debug_line 0x0000000000000000 0x18a basalt/src/rocky.c.41.o + .debug_line 0x000000000000018a 0x156 basalt/appinfo.auto.c.41.o + .debug_line 0x00000000000002e0 0xe0 basalt/src/resource_ids.auto.c.41.o + .debug_line 0x00000000000003c0 0xd9 src/message_keys.auto.c.41.o + +.debug_str 0x0000000000000000 0x526 + .debug_str 0x0000000000000000 0x15b basalt/src/rocky.c.41.o + 0x194 (size before relaxing) + .debug_str 0x000000000000015b 0x30a basalt/appinfo.auto.c.41.o + 0x433 (size before relaxing) + .debug_str 0x0000000000000465 0x1f basalt/src/resource_ids.auto.c.41.o + 0x103 (size before relaxing) + .debug_str 0x0000000000000484 0xa2 src/message_keys.auto.c.41.o + 0x16e (size before relaxing) + +.debug_frame 0x0000000000000000 0x28 + .debug_frame 0x0000000000000000 0x28 basalt/src/rocky.c.41.o diff --git a/build/resources/rocky-app.js b/build/resources/rocky-app.js new file mode 100644 index 0000000..03e4890 --- /dev/null +++ b/build/resources/rocky-app.js @@ -0,0 +1,247 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + module.exports = __webpack_require__(1); + + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + var rocky = __webpack_require__(2); + + // An object to cache our date & time values, + // to minimize computations in the draw handler. + var timeData = { + hr: '', + min: '' + }; + + // Every minute + // https://developer.pebble.com/docs/rockyjs/rocky/#on + rocky.on('minutechange', function(event) { + // Current date/time + // https://developer.pebble.com/docs/rockyjs/Date/ + var d = event.date; + + // Get current time, based on 12h or 24h format (01:00 or 1:00 AM) + timeData.hr = d.toLocaleTimeString().substring(0,2); + timeData.min = d.toLocaleTimeString().substring(3,5); + + + // Force screen redraw + rocky.requestDraw(); + }); + + // Redraw the screen + rocky.on('draw', function(event) { + // Drawing canvas + var ctx = event.context; + + // Clear the canvas + // https://developer.pebble.com/docs/rockyjs/CanvasRenderingContext2D/#Canvas + ctx.fillStyle = 'yellow'; + ctx.fillRect(0, 0, ctx.canvas.clientWidth, ctx.canvas.clientHeight); + + ctx.fillStyle = 'black'; + ctx.rockyFillRadial(ctx.canvas.clientWidth/2, ctx.canvas.clientWidth/2, 0, ctx.canvas.clientWidth/2.125 ,0, 2* Math.PI); + + ctx.fillStyle = 'white'; + ctx.rockyFillRadial(ctx.canvas.clientWidth/2, ctx.canvas.clientWidth/2, 0, ctx.canvas.clientWidth/2.5 ,0, 2* Math.PI); + + ctx.fillStyle = 'black'; + ctx.beginPath(); + ctx.moveTo(4 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + ctx.lineTo(4.5 * ctx.canvas.clientWidth/10, 5.5 * ctx.canvas.clientHeight/10); + ctx.lineTo(5 * ctx.canvas.clientWidth/10, 5.25 * ctx.canvas.clientHeight/10); + ctx.lineTo(5.5 * ctx.canvas.clientWidth/10, 5.5 * ctx.canvas.clientHeight/10); + ctx.lineTo(6 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + ctx.closePath(); + ctx.fill(); + + ctx.fillStyle = 'black'; + ctx.rockyFillRadial(1.25 * ctx.canvas.clientWidth/10, 8.55 * ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/16 ,0, 2* Math.PI); + + ctx.rockyFillRadial(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/8 ,0, 2* Math.PI); + ctx.fillStyle = 'yellow'; + ctx.rockyFillRadial(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/9 ,0, 2* Math.PI); + ctx.fillStyle = 'black'; + ctx.rockyFillRadial(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/10 ,0, 2* Math.PI); + ctx.fillStyle = 'yellow'; + ctx.rockyFillRadial(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/32 ,0, 2* Math.PI); + + ctx.beginPath(); + ctx.moveTo(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10 + 5); + ctx.lineTo(8 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + ctx.lineTo(9 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + ctx.closePath(); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10); + ctx.lineTo(7.32 * ctx.canvas.clientWidth/10, 8.75 * ctx.canvas.clientHeight/10); + ctx.lineTo(8 * ctx.canvas.clientWidth/10, 9.8 * ctx.canvas.clientHeight/10); + ctx.closePath(); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10); + ctx.lineTo(9.69 * ctx.canvas.clientWidth/10, 8.75 * ctx.canvas.clientHeight/10); + ctx.lineTo(9 * ctx.canvas.clientWidth/10, 9.8 * ctx.canvas.clientHeight/10); + ctx.closePath(); + ctx.fill(); + + + + + ctx.fillStyle = 'black'; + ctx.rockyFillRadial(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/48 ,0, 2* Math.PI); + + + ctx.strokeStyle = 'lightgrey'; + ctx.beginPath(); + ctx.arc(ctx.canvas.clientWidth/2 , 5.5 * ctx.canvas.clientHeight/10, 50, 1.125 * Math.PI, 1.875 * Math.PI); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(ctx.canvas.clientWidth/2 , 5.5 * ctx.canvas.clientHeight/10, 40, 1.125 * Math.PI, 1.875 * Math.PI); + ctx.stroke(); + + ctx.font = '14px bold Gothic'; + ctx.fillText('0', 1.5 * ctx.canvas.clientWidth/10, 3.5 * ctx.canvas.clientWidth/10) + ctx.fillText('15', 2.75 * ctx.canvas.clientWidth/10 - 5, 2 * ctx.canvas.clientWidth/10) + ctx.fillText('30', 4.75 * ctx.canvas.clientWidth/10 - 3, 1.5 * ctx.canvas.clientWidth/10) + ctx.fillText('45', 6.75 * ctx.canvas.clientWidth/10, 2 * ctx.canvas.clientWidth/10) + ctx.fillText('60', 8 * ctx.canvas.clientWidth/10, 3.5 * ctx.canvas.clientWidth/10) + + + ctx.fillText('12', 0.8 * ctx.canvas.clientWidth/10, 7 * ctx.canvas.clientHeight/10); + ctx.fillText('3', 2 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + ctx.fillText('6', 1 * ctx.canvas.clientWidth/10, 9 * ctx.canvas.clientHeight/10); + ctx.fillText('9' , 0 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + + plotLines(ctx, 0, 5, 'lightgrey'); + plotLines(ctx, 5, 0, 'lightgrey'); + plotLines(ctx, 10, 0, 'lightgrey'); + plotLines(ctx, 15, 5, 'lightgrey'); + plotLines(ctx, 20, 0, 'lightgrey'); + plotLines(ctx, 25, 0, 'lightgrey'); + plotLines(ctx, 30, 5, 'lightgrey'); + plotLines(ctx, 35, 0, 'lightgrey'); + plotLines(ctx, 40, 0, 'lightgrey'); + plotLines(ctx, 45, 5, 'red'); + plotLines(ctx, 50, 0, 'red'); + plotLines(ctx, 55, 0, 'red'); + plotLines(ctx, 60, 5, 'red'); + + ctx.font = '18px bold Gothic' + ctx.fillText('r/hr', 4 * ctx.canvas.clientWidth/10, 3.5 * ctx.canvas.clientHeight/10); + + ctx.lineWidth = 1; + ctx.strokeStyle = "darkgrey"; + ctx.beginPath(); + ctx.moveTo(ctx.canvas.clientWidth/2 , 5.5 * ctx.canvas.clientHeight/10); + var minDeg = 203 + (134/60 * parseInt(timeData.min)); + ctx.lineTo( + (Math.cos( minDeg / (180 / Math.PI) ) * 48) + ctx.canvas.clientWidth/2, + (Math.sin( minDeg / (180 / Math.PI) ) * 48) + 5.5 * ctx.canvas.clientHeight/10 + ); + ctx.stroke(); + + ctx.strokeStyle = 'darkcandyapplered'; + ctx.beginPath(); + ctx.moveTo(ctx.canvas.clientWidth/2 , 5.5 * ctx.canvas.clientHeight/10); + ctx.lineTo( + (Math.cos( minDeg / (180 / Math.PI) ) * -10) + ctx.canvas.clientWidth/2, + (Math.sin( minDeg / (180 / Math.PI) ) * -10) + 5.5 * ctx.canvas.clientHeight/10 + ); + ctx.stroke(); + + var minDeg = Math.abs((360/12 * (parseInt(timeData.hr)%12)) - 90); + ctx.strokeStyle = 'white'; + ctx.beginPath(); + ctx.moveTo(1.25 * ctx.canvas.clientWidth/10, 8.55 * ctx.canvas.clientHeight/10); + ctx.lineTo( + (Math.cos( minDeg / (180 / Math.PI) ) * 10) + 1.25 * ctx.canvas.clientWidth/10, + (Math.sin( minDeg / (180 / Math.PI) ) * 10) + 8.55 * ctx.canvas.clientHeight/10 + ); + ctx.stroke(); + + }); + + function plotLines(ctx, minute, boost, color){ + + ctx.lineWidth = 1; + ctx.strokeStyle = color; + + var deg = 203 + (134/60 * minute); + + ctx.beginPath(); + ctx.moveTo( + (Math.cos( deg / (180 / Math.PI) ) * 40) + ctx.canvas.clientWidth/2, + (Math.sin( deg / (180 / Math.PI) ) * 40) + 5.5 * ctx.canvas.clientHeight/10 + ); + ctx.lineTo( + (Math.cos( deg / (180 / Math.PI) ) * (50 + boost)) + ctx.canvas.clientWidth/2, + (Math.sin( deg / (180 / Math.PI) ) * (50 + boost)) + 5.5 * ctx.canvas.clientHeight/10 + ); + ctx.stroke(); + + } + + // Send a single message to the Phone + // https://developer.pebble.com/docs/rockyjs/rocky/#postMessage + rocky.postMessage("This arrives on the phone via bluetooth!"); + + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + + module.exports = _rocky; + + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/build/src/message_keys.auto.c b/build/src/message_keys.auto.c new file mode 100644 index 0000000..eb5fcff --- /dev/null +++ b/build/src/message_keys.auto.c @@ -0,0 +1,12 @@ + +#include + +// +// AUTOGENERATED BY BUILD +// DO NOT MODIFY - CHANGES WILL BE OVERWRITTEN +// + +uint32_t MESSAGE_KEY_ControlKeyChunk = 3; +uint32_t MESSAGE_KEY_ControlKeyResetComplete = 2; +uint32_t MESSAGE_KEY_ControlKeyResetRequest = 1; +uint32_t MESSAGE_KEY_ControlKeyUnsupportedError = 4; diff --git a/build/src/message_keys.auto.c.14.o b/build/src/message_keys.auto.c.14.o new file mode 100644 index 0000000000000000000000000000000000000000..f7537e831554b8497d78a2ec160bbeeac15e7257 GIT binary patch literal 2900 zcma)8&2QX96d&8W*(94TO`E1IMPN`7LBe*r`Dj`YX|i3SlBPrn0U;qpws+WdvuiK5 zH);?PAS8}l;J^tXB>n+Ff+K$cNJt#Ga7O~EoH+CVzc==Hy-POqX~*yPK4#{UQ;2>R8GT`Y31q4*|Ju-R5?9{JukCz`9+8bXqIV}>*eRmx6Wes zR6mZ57Bl_olsbtOXE4&#f%^0dpvr!tr}Ch3ilM}ak&;!S&}CLD=y2;DyLI4NHv_lV z;eH%h+uU*5-0BKuH29%}QRBc^G?$Igtr~65@7-HowCu2BxRDVDK|8V>&$mp|YI}~= zbX{Td1D_k*c06m*ylPg-oc(BS-|qQtyVt;Zb$ArnO}>A?k0R6V#ewNk#8KQp`OTI{ zv>o_OT|DSWw(7gPYa8|b&H5YrwZMV?FM1Y8}%>@Le}#muj%uKK6=g$ zk9fSp-|q1!9#x(&xXaysotoTh^3Za6Ub`_Ol3J_hAFz!(dwNY5Wnd!ofq42E4X880 zZP~~GkuOyD<77Ui5w(z@o_PsXlBAe`Q?`z)=kXO2+1G+jx6NaoE=?=4jau!xKDSUc z952?_cDD5T+WIa1RUA5Y@qGQ|^in0$($#OGfkR%KY*QUwSr8 zeyxf-Xw#*@I|^8=(IMS4wiejfWNB+cJyV!b&MD`$3(7_1QRVT%QwlSqqfTr);BlDn zmPD8uGqYjGHZz?lN}%~L8H!0GJokog&q>b70iWbCaIwsgx6KB3dd+>$e=9)50^5!g z@P^kVowG+lxxbp$jXK}mm21+b*4 zF!m%c`H4mcKI}&}qGvGBq5jwJIrt2(N4;E<#IHe-_gjH1ZR9KQheLiZi>kWAO&#pBbvs5DI*;Pv!oGP35m^<0$mh6^(&bU#&;Rt|6PmmHc%R^sec_JxNt$`m6IGOA3bCuW zsB~9})7cQeNF0|=Pi5+Tq&HK(lyd4tq+d(>w?)N~{tKHdwv_+? literal 0 HcmV?d00001 diff --git a/build/src/message_keys.auto.c.23.o b/build/src/message_keys.auto.c.23.o new file mode 100644 index 0000000000000000000000000000000000000000..f7537e831554b8497d78a2ec160bbeeac15e7257 GIT binary patch literal 2900 zcma)8&2QX96d&8W*(94TO`E1IMPN`7LBe*r`Dj`YX|i3SlBPrn0U;qpws+WdvuiK5 zH);?PAS8}l;J^tXB>n+Ff+K$cNJt#Ga7O~EoH+CVzc==Hy-POqX~*yPK4#{UQ;2>R8GT`Y31q4*|Ju-R5?9{JukCz`9+8bXqIV}>*eRmx6Wes zR6mZ57Bl_olsbtOXE4&#f%^0dpvr!tr}Ch3ilM}ak&;!S&}CLD=y2;DyLI4NHv_lV z;eH%h+uU*5-0BKuH29%}QRBc^G?$Igtr~65@7-HowCu2BxRDVDK|8V>&$mp|YI}~= zbX{Td1D_k*c06m*ylPg-oc(BS-|qQtyVt;Zb$ArnO}>A?k0R6V#ewNk#8KQp`OTI{ zv>o_OT|DSWw(7gPYa8|b&H5YrwZMV?FM1Y8}%>@Le}#muj%uKK6=g$ zk9fSp-|q1!9#x(&xXaysotoTh^3Za6Ub`_Ol3J_hAFz!(dwNY5Wnd!ofq42E4X880 zZP~~GkuOyD<77Ui5w(z@o_PsXlBAe`Q?`z)=kXO2+1G+jx6NaoE=?=4jau!xKDSUc z952?_cDD5T+WIa1RUA5Y@qGQ|^in0$($#OGfkR%KY*QUwSr8 zeyxf-Xw#*@I|^8=(IMS4wiejfWNB+cJyV!b&MD`$3(7_1QRVT%QwlSqqfTr);BlDn zmPD8uGqYjGHZz?lN}%~L8H!0GJokog&q>b70iWbCaIwsgx6KB3dd+>$e=9)50^5!g z@P^kVowG+lxxbp$jXK}mm21+b*4 zF!m%c`H4mcKI}&}qGvGBq5jwJIrt2(N4;E<#IHe-_gjH1ZR9KQheLiZi>kWAO&#pBbvs5DI*;Pv!oGP35m^<0$mh6^(&bU#&;Rt|6PmmHc%R^sec_JxNt$`m6IGOA3bCuW zsB~9})7cQeNF0|=Pi5+Tq&HK(lyd4tq+d(>w?)N~{tKHdwv_+? literal 0 HcmV?d00001 diff --git a/build/src/message_keys.auto.c.32.o b/build/src/message_keys.auto.c.32.o new file mode 100644 index 0000000000000000000000000000000000000000..f7537e831554b8497d78a2ec160bbeeac15e7257 GIT binary patch literal 2900 zcma)8&2QX96d&8W*(94TO`E1IMPN`7LBe*r`Dj`YX|i3SlBPrn0U;qpws+WdvuiK5 zH);?PAS8}l;J^tXB>n+Ff+K$cNJt#Ga7O~EoH+CVzc==Hy-POqX~*yPK4#{UQ;2>R8GT`Y31q4*|Ju-R5?9{JukCz`9+8bXqIV}>*eRmx6Wes zR6mZ57Bl_olsbtOXE4&#f%^0dpvr!tr}Ch3ilM}ak&;!S&}CLD=y2;DyLI4NHv_lV z;eH%h+uU*5-0BKuH29%}QRBc^G?$Igtr~65@7-HowCu2BxRDVDK|8V>&$mp|YI}~= zbX{Td1D_k*c06m*ylPg-oc(BS-|qQtyVt;Zb$ArnO}>A?k0R6V#ewNk#8KQp`OTI{ zv>o_OT|DSWw(7gPYa8|b&H5YrwZMV?FM1Y8}%>@Le}#muj%uKK6=g$ zk9fSp-|q1!9#x(&xXaysotoTh^3Za6Ub`_Ol3J_hAFz!(dwNY5Wnd!ofq42E4X880 zZP~~GkuOyD<77Ui5w(z@o_PsXlBAe`Q?`z)=kXO2+1G+jx6NaoE=?=4jau!xKDSUc z952?_cDD5T+WIa1RUA5Y@qGQ|^in0$($#OGfkR%KY*QUwSr8 zeyxf-Xw#*@I|^8=(IMS4wiejfWNB+cJyV!b&MD`$3(7_1QRVT%QwlSqqfTr);BlDn zmPD8uGqYjGHZz?lN}%~L8H!0GJokog&q>b70iWbCaIwsgx6KB3dd+>$e=9)50^5!g z@P^kVowG+lxxbp$jXK}mm21+b*4 zF!m%c`H4mcKI}&}qGvGBq5jwJIrt2(N4;E<#IHe-_gjH1ZR9KQheLiZi>kWAO&#pBbvs5DI*;Pv!oGP35m^<0$mh6^(&bU#&;Rt|6PmmHc%R^sec_JxNt$`m6IGOA3bCuW zsB~9})7cQeNF0|=Pi5+Tq&HK(lyd4tq+d(>w?)N~{tKHdwv_+? literal 0 HcmV?d00001 diff --git a/build/src/message_keys.auto.c.41.o b/build/src/message_keys.auto.c.41.o new file mode 100644 index 0000000000000000000000000000000000000000..f7537e831554b8497d78a2ec160bbeeac15e7257 GIT binary patch literal 2900 zcma)8&2QX96d&8W*(94TO`E1IMPN`7LBe*r`Dj`YX|i3SlBPrn0U;qpws+WdvuiK5 zH);?PAS8}l;J^tXB>n+Ff+K$cNJt#Ga7O~EoH+CVzc==Hy-POqX~*yPK4#{UQ;2>R8GT`Y31q4*|Ju-R5?9{JukCz`9+8bXqIV}>*eRmx6Wes zR6mZ57Bl_olsbtOXE4&#f%^0dpvr!tr}Ch3ilM}ak&;!S&}CLD=y2;DyLI4NHv_lV z;eH%h+uU*5-0BKuH29%}QRBc^G?$Igtr~65@7-HowCu2BxRDVDK|8V>&$mp|YI}~= zbX{Td1D_k*c06m*ylPg-oc(BS-|qQtyVt;Zb$ArnO}>A?k0R6V#ewNk#8KQp`OTI{ zv>o_OT|DSWw(7gPYa8|b&H5YrwZMV?FM1Y8}%>@Le}#muj%uKK6=g$ zk9fSp-|q1!9#x(&xXaysotoTh^3Za6Ub`_Ol3J_hAFz!(dwNY5Wnd!ofq42E4X880 zZP~~GkuOyD<77Ui5w(z@o_PsXlBAe`Q?`z)=kXO2+1G+jx6NaoE=?=4jau!xKDSUc z952?_cDD5T+WIa1RUA5Y@qGQ|^in0$($#OGfkR%KY*QUwSr8 zeyxf-Xw#*@I|^8=(IMS4wiejfWNB+cJyV!b&MD`$3(7_1QRVT%QwlSqqfTr);BlDn zmPD8uGqYjGHZz?lN}%~L8H!0GJokog&q>b70iWbCaIwsgx6KB3dd+>$e=9)50^5!g z@P^kVowG+lxxbp$jXK}mm21+b*4 zF!m%c`H4mcKI}&}qGvGBq5jwJIrt2(N4;E<#IHe-_gjH1ZR9KQheLiZi>kWAO&#pBbvs5DI*;Pv!oGP35m^<0$mh6^(&bU#&;Rt|6PmmHc%R^sec_JxNt$`m6IGOA3bCuW zsB~9})7cQeNF0|=Pi5+Tq&HK(lyd4tq+d(>w?)N~{tKHdwv_+? literal 0 HcmV?d00001 diff --git a/build/webpack/pkjs/webpack.config.js b/build/webpack/pkjs/webpack.config.js new file mode 100644 index 0000000..413d96b --- /dev/null +++ b/build/webpack/pkjs/webpack.config.js @@ -0,0 +1,101 @@ +//////////////////////////////////////////////////////////////////////////////// +// Template vars injected by projess_js.py: + +// boolean +const isSandbox = false; + +// Array with absolute file path strings +const entryFilenames = ["_pkjs_shared_additions.js", +"_pkjs_message_wrapper.js", +"/home/zahkc/Documents/Projects/Pebble/geiger/src/pkjs/index.js"]; + +// folder path string +const outputPath = "build"; + +// file name string +const outputFilename = "pebble-js-app.js"; + +// Array with absolute folder path strings +const resolveRoots = ["/home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/common/include", +"/home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/common/tools/webpack", +"/home/zahkc/.pebble-sdk/SDKs/current/node_modules", +"/home/zahkc/Documents/Projects/Pebble/geiger/build/js"]; + +// Object, { alias1: 'path1', ... } +const resolveAliases = {"app_package.json": "/home/zahkc/Documents/Projects/Pebble/geiger/package.json"}; + +// null or Object with key 'sourceMapFilename' +const sourceMapConfig = {"sourceMapFilename": "pebble-js-app.js.map"}; + +//////////////////////////////////////////////////////////////////////////////// +// NOTE: Must escape dollar-signs, because this is a Python template! + +const webpack = require('webpack'); + +module.exports = (() => { + // The basic config: + const config = { + entry: entryFilenames, + output: { + path: outputPath, + filename: outputFilename + }, + target: 'node', + resolve: { + root: resolveRoots, + extensions: ['', '.js', '.json'], + alias: resolveAliases + }, + resolveLoader: { + root: resolveRoots + } + }; + + if (sourceMapConfig) { + // Enable webpack's source map output: + config.devtool = 'source-map'; + config.output.sourceMapFilename = sourceMapConfig.sourceMapFilename; + config.output.devtoolModuleFilenameTemplate = '[resource-path]'; + config.output.devtoolFallbackModuleFilenameTemplate = '[resourcePath]?[hash]'; + } + + return config; +})(); + +module.exports.plugins = (() => { + const plugins = [ + // Returns a non-zero exit code when webpack reports an error: + require('webpack-fail-plugin'), + + // Includes _message_keys_wrapper in every build to mimic old loader.js: + new webpack.ProvidePlugin({ require: '_message_key_wrapper' }) + ]; + + if (isSandbox) { + // Prevents using `require('evil_loader!mymodule')` to execute custom + // loader code during the webpack build. + const RestrictResourcePlugin = require('restrict-resource-webpack-plugin'); + const plugin = new RestrictResourcePlugin(/!+/, + 'Custom inline loaders are not permitted.'); + plugins.push(plugin); + } + + return plugins; +})(); + +module.exports.module = { + loaders: (() => { + const loaders = [{'test': /\.json$/, 'loader': 'json-loader'}]; + + if (isSandbox) { + // See restricted-resource-loader.js, prevents loading files outside + // of the project folder, i.e. `require(../../not_your_business)`: + const restrictLoader = { + 'test': /^.*/, 'loader': 'restricted-resource-loader' + }; + loaders.push(restrictLoader); + } + + return loaders; + })() +}; diff --git a/build/webpack/rocky/webpack.config.js b/build/webpack/rocky/webpack.config.js new file mode 100644 index 0000000..1d90dc3 --- /dev/null +++ b/build/webpack/rocky/webpack.config.js @@ -0,0 +1,99 @@ +//////////////////////////////////////////////////////////////////////////////// +// Template vars injected by projess_js.py: + +// boolean +const isSandbox = false; + +// Array with absolute file path strings +const entryFilenames = ["/home/zahkc/Documents/Projects/Pebble/geiger/src/rocky/index.js"]; + +// folder path string +const outputPath = "build/resources"; + +// file name string +const outputFilename = "rocky-app.js"; + +// Array with absolute folder path strings +const resolveRoots = ["/home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/common/include", +"/home/zahkc/.pebble-sdk/SDKs/current/sdk-core/pebble/common/tools/webpack", +"/home/zahkc/.pebble-sdk/SDKs/current/node_modules", +"/home/zahkc/Documents/Projects/Pebble/geiger/build/js"]; + +// Object, { alias1: 'path1', ... } +const resolveAliases = {"app_package.json": "/home/zahkc/Documents/Projects/Pebble/geiger/package.json"}; + +// null or Object with key 'sourceMapFilename' +const sourceMapConfig = null; + +//////////////////////////////////////////////////////////////////////////////// +// NOTE: Must escape dollar-signs, because this is a Python template! + +const webpack = require('webpack'); + +module.exports = (() => { + // The basic config: + const config = { + entry: entryFilenames, + output: { + path: outputPath, + filename: outputFilename + }, + target: 'node', + resolve: { + root: resolveRoots, + extensions: ['', '.js', '.json'], + alias: resolveAliases + }, + resolveLoader: { + root: resolveRoots + } + }; + + if (sourceMapConfig) { + // Enable webpack's source map output: + config.devtool = 'source-map'; + config.output.sourceMapFilename = sourceMapConfig.sourceMapFilename; + config.output.devtoolModuleFilenameTemplate = '[resource-path]'; + config.output.devtoolFallbackModuleFilenameTemplate = '[resourcePath]?[hash]'; + } + + return config; +})(); + +module.exports.plugins = (() => { + const plugins = [ + // Returns a non-zero exit code when webpack reports an error: + require('webpack-fail-plugin'), + + // Includes _message_keys_wrapper in every build to mimic old loader.js: + new webpack.ProvidePlugin({ require: '_message_key_wrapper' }) + ]; + + if (isSandbox) { + // Prevents using `require('evil_loader!mymodule')` to execute custom + // loader code during the webpack build. + const RestrictResourcePlugin = require('restrict-resource-webpack-plugin'); + const plugin = new RestrictResourcePlugin(/!+/, + 'Custom inline loaders are not permitted.'); + plugins.push(plugin); + } + + return plugins; +})(); + +module.exports.module = { + loaders: (() => { + const loaders = [{'test': /\.json$/, 'loader': 'json-loader'}]; + + if (isSandbox) { + // See restricted-resource-loader.js, prevents loading files outside + // of the project folder, i.e. `require(../../not_your_business)`: + const restrictLoader = { + 'test': /^.*/, 'loader': 'restricted-resource-loader' + }; + loaders.push(restrictLoader); + } + + return loaders; + })() +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..b312578 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "Geiger Counter", + "author": "Zahkc", + "version": "1.0.0", + "keywords": ["pebble-app"], + "private": false, + "dependencies": {}, + "pebble": { + "main": { + "rockyjs": "src/rocky/index.js", + "pkjs": "src/pkjs/index.js" + }, + "displayName": "geiger", + "uuid": "a426b361-f97e-4934-8581-4e1cb299b74a", + "projectType": "rocky", + "sdkVersion": "3", + "enableMultiJS": true, + "watchapp": { + "watchface": true + }, + "resources": { + "media": [] + } + } +} diff --git a/src/pkjs/index.js b/src/pkjs/index.js new file mode 100644 index 0000000..a60a7a6 --- /dev/null +++ b/src/pkjs/index.js @@ -0,0 +1,4 @@ +// https://developer.pebble.com/docs/pebblekit-js/Pebble/#on +Pebble.on('message', function(event) { + console.log('Message received from watch:', event.data); +}); diff --git a/src/rocky/index.js b/src/rocky/index.js new file mode 100644 index 0000000..3559bad --- /dev/null +++ b/src/rocky/index.js @@ -0,0 +1,183 @@ +var rocky = require('rocky'); + +// An object to cache our date & time values, +// to minimize computations in the draw handler. +var timeData = { + hr: '', + min: '' +}; + +// Every minute +// https://developer.pebble.com/docs/rockyjs/rocky/#on +rocky.on('minutechange', function(event) { + // Current date/time + // https://developer.pebble.com/docs/rockyjs/Date/ + var d = event.date; + + // Get current time, based on 12h or 24h format (01:00 or 1:00 AM) + timeData.hr = d.toLocaleTimeString().substring(0,2); + timeData.min = d.toLocaleTimeString().substring(3,5); + + + // Force screen redraw + rocky.requestDraw(); +}); + +// Redraw the screen +rocky.on('draw', function(event) { + // Drawing canvas + var ctx = event.context; + + // Clear the canvas + // https://developer.pebble.com/docs/rockyjs/CanvasRenderingContext2D/#Canvas + ctx.fillStyle = 'yellow'; + ctx.fillRect(0, 0, ctx.canvas.clientWidth, ctx.canvas.clientHeight); + + ctx.fillStyle = 'black'; + ctx.rockyFillRadial(ctx.canvas.clientWidth/2, ctx.canvas.clientWidth/2, 0, ctx.canvas.clientWidth/2.125 ,0, 2* Math.PI); + + ctx.fillStyle = 'white'; + ctx.rockyFillRadial(ctx.canvas.clientWidth/2, ctx.canvas.clientWidth/2, 0, ctx.canvas.clientWidth/2.5 ,0, 2* Math.PI); + + ctx.fillStyle = 'black'; + ctx.beginPath(); + ctx.moveTo(4 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + ctx.lineTo(4.5 * ctx.canvas.clientWidth/10, 5.5 * ctx.canvas.clientHeight/10); + ctx.lineTo(5 * ctx.canvas.clientWidth/10, 5.25 * ctx.canvas.clientHeight/10); + ctx.lineTo(5.5 * ctx.canvas.clientWidth/10, 5.5 * ctx.canvas.clientHeight/10); + ctx.lineTo(6 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + ctx.closePath(); + ctx.fill(); + + ctx.fillStyle = 'black'; + ctx.rockyFillRadial(1.25 * ctx.canvas.clientWidth/10, 8.55 * ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/16 ,0, 2* Math.PI); + + ctx.rockyFillRadial(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/8 ,0, 2* Math.PI); + ctx.fillStyle = 'yellow'; + ctx.rockyFillRadial(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/9 ,0, 2* Math.PI); + ctx.fillStyle = 'black'; + ctx.rockyFillRadial(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/10 ,0, 2* Math.PI); + ctx.fillStyle = 'yellow'; + ctx.rockyFillRadial(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/32 ,0, 2* Math.PI); + + ctx.beginPath(); + ctx.moveTo(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10 + 5); + ctx.lineTo(8 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + ctx.lineTo(9 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + ctx.closePath(); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10); + ctx.lineTo(7.32 * ctx.canvas.clientWidth/10, 8.75 * ctx.canvas.clientHeight/10); + ctx.lineTo(8 * ctx.canvas.clientWidth/10, 9.8 * ctx.canvas.clientHeight/10); + ctx.closePath(); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10); + ctx.lineTo(9.69 * ctx.canvas.clientWidth/10, 8.75 * ctx.canvas.clientHeight/10); + ctx.lineTo(9 * ctx.canvas.clientWidth/10, 9.8 * ctx.canvas.clientHeight/10); + ctx.closePath(); + ctx.fill(); + + + + + ctx.fillStyle = 'black'; + ctx.rockyFillRadial(8.5*ctx.canvas.clientWidth/10, 8.75*ctx.canvas.clientHeight/10, 0, ctx.canvas.clientWidth/48 ,0, 2* Math.PI); + + + ctx.strokeStyle = 'lightgrey'; + ctx.beginPath(); + ctx.arc(ctx.canvas.clientWidth/2 , 5.5 * ctx.canvas.clientHeight/10, 50, 1.125 * Math.PI, 1.875 * Math.PI); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(ctx.canvas.clientWidth/2 , 5.5 * ctx.canvas.clientHeight/10, 40, 1.125 * Math.PI, 1.875 * Math.PI); + ctx.stroke(); + + ctx.font = '14px bold Gothic'; + ctx.fillText('0', 1.5 * ctx.canvas.clientWidth/10, 3.5 * ctx.canvas.clientWidth/10) + ctx.fillText('15', 2.75 * ctx.canvas.clientWidth/10 - 5, 2 * ctx.canvas.clientWidth/10) + ctx.fillText('30', 4.75 * ctx.canvas.clientWidth/10 - 3, 1.5 * ctx.canvas.clientWidth/10) + ctx.fillText('45', 6.75 * ctx.canvas.clientWidth/10, 2 * ctx.canvas.clientWidth/10) + ctx.fillText('60', 8 * ctx.canvas.clientWidth/10, 3.5 * ctx.canvas.clientWidth/10) + + + ctx.fillText('12', 0.8 * ctx.canvas.clientWidth/10, 7 * ctx.canvas.clientHeight/10); + ctx.fillText('3', 2 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + ctx.fillText('6', 1 * ctx.canvas.clientWidth/10, 9 * ctx.canvas.clientHeight/10); + ctx.fillText('9' , 0 * ctx.canvas.clientWidth/10, 8 * ctx.canvas.clientHeight/10); + + plotLines(ctx, 0, 5, 'lightgrey'); + plotLines(ctx, 5, 0, 'lightgrey'); + plotLines(ctx, 10, 0, 'lightgrey'); + plotLines(ctx, 15, 5, 'lightgrey'); + plotLines(ctx, 20, 0, 'lightgrey'); + plotLines(ctx, 25, 0, 'lightgrey'); + plotLines(ctx, 30, 5, 'lightgrey'); + plotLines(ctx, 35, 0, 'lightgrey'); + plotLines(ctx, 40, 0, 'lightgrey'); + plotLines(ctx, 45, 5, 'red'); + plotLines(ctx, 50, 0, 'red'); + plotLines(ctx, 55, 0, 'red'); + plotLines(ctx, 60, 5, 'red'); + + ctx.font = '18px bold Gothic' + ctx.fillText('r/hr', 4 * ctx.canvas.clientWidth/10, 3.5 * ctx.canvas.clientHeight/10); + + ctx.lineWidth = 1; + ctx.strokeStyle = "darkgrey"; + ctx.beginPath(); + ctx.moveTo(ctx.canvas.clientWidth/2 , 5.5 * ctx.canvas.clientHeight/10); + var minDeg = 203 + (134/60 * parseInt(timeData.min)); + ctx.lineTo( + (Math.cos( minDeg / (180 / Math.PI) ) * 48) + ctx.canvas.clientWidth/2, + (Math.sin( minDeg / (180 / Math.PI) ) * 48) + 5.5 * ctx.canvas.clientHeight/10 + ); + ctx.stroke(); + + ctx.strokeStyle = 'darkcandyapplered'; + ctx.beginPath(); + ctx.moveTo(ctx.canvas.clientWidth/2 , 5.5 * ctx.canvas.clientHeight/10); + ctx.lineTo( + (Math.cos( minDeg / (180 / Math.PI) ) * -10) + ctx.canvas.clientWidth/2, + (Math.sin( minDeg / (180 / Math.PI) ) * -10) + 5.5 * ctx.canvas.clientHeight/10 + ); + ctx.stroke(); + + var minDeg = Math.abs((360/12 * (parseInt(timeData.hr)%12)) - 90); + ctx.strokeStyle = 'white'; + ctx.beginPath(); + ctx.moveTo(1.25 * ctx.canvas.clientWidth/10, 8.55 * ctx.canvas.clientHeight/10); + ctx.lineTo( + (Math.cos( minDeg / (180 / Math.PI) ) * 10) + 1.25 * ctx.canvas.clientWidth/10, + (Math.sin( minDeg / (180 / Math.PI) ) * 10) + 8.55 * ctx.canvas.clientHeight/10 + ); + ctx.stroke(); + +}); + +function plotLines(ctx, minute, boost, color){ + + ctx.lineWidth = 1; + ctx.strokeStyle = color; + + var deg = 203 + (134/60 * minute); + + ctx.beginPath(); + ctx.moveTo( + (Math.cos( deg / (180 / Math.PI) ) * 40) + ctx.canvas.clientWidth/2, + (Math.sin( deg / (180 / Math.PI) ) * 40) + 5.5 * ctx.canvas.clientHeight/10 + ); + ctx.lineTo( + (Math.cos( deg / (180 / Math.PI) ) * (50 + boost)) + ctx.canvas.clientWidth/2, + (Math.sin( deg / (180 / Math.PI) ) * (50 + boost)) + 5.5 * ctx.canvas.clientHeight/10 + ); + ctx.stroke(); + +} + +// Send a single message to the Phone +// https://developer.pebble.com/docs/rockyjs/rocky/#postMessage +rocky.postMessage("This arrives on the phone via bluetooth!"); diff --git a/wscript b/wscript new file mode 100644 index 0000000..e6b347a --- /dev/null +++ b/wscript @@ -0,0 +1,30 @@ +# +# This file is the default set of rules to compile a Pebble application. +# +# Feel free to customize this to your needs. +# +top = '.' +out = 'build' + + +def options(ctx): + ctx.load('pebble_sdk') + + +def configure(ctx): + """ + This method is used to configure your build. ctx.load(`pebble_sdk`) automatically configures + a build for each valid platform in `targetPlatforms`. Platform-specific configuration: add your + change after calling ctx.load('pebble_sdk') and make sure to set the correct environment first. + Universal configuration: add your change prior to calling ctx.load('pebble_sdk'). + """ + ctx.load('pebble_sdk') + + +def build(ctx): + ctx.load('pebble_sdk') + ctx.pbl_bundle(js=ctx.path.ant_glob(['src/pkjs/**/*.js', + 'src/pkjs/**/*.json', + 'src/common/**/*.js']), + js_entry_file='src/pkjs/index.js', + bin_type='rocky')