From 628c6f4bc37412ef4f5e8b59d18547a152f9ea24 Mon Sep 17 00:00:00 2001 From: Mollie Munoz Date: Wed, 1 Feb 2023 21:33:28 -0800 Subject: [PATCH] Add light monitor Wio Terminal directory. Contains tutorial readme, docs/, and .ino Arduino file. --- .../demo_lightmonitor/demo_lightmonitor.ino | 498 +++++++ .../docs/BoardsManager_URL_WioTerminal.png | Bin 0 -> 33982 bytes .../docs/BoardsManager_WioTerminal.png | Bin 0 -> 91346 bytes .../docs/LibraryManager_AzureRTOS.png | Bin 0 -> 80489 bytes examples/demo_lightmonitor/readme.md | 1189 +++++++++++++++++ 5 files changed, 1687 insertions(+) create mode 100644 examples/demo_lightmonitor/demo_lightmonitor.ino create mode 100644 examples/demo_lightmonitor/docs/BoardsManager_URL_WioTerminal.png create mode 100644 examples/demo_lightmonitor/docs/BoardsManager_WioTerminal.png create mode 100644 examples/demo_lightmonitor/docs/LibraryManager_AzureRTOS.png create mode 100644 examples/demo_lightmonitor/readme.md diff --git a/examples/demo_lightmonitor/demo_lightmonitor.ino b/examples/demo_lightmonitor/demo_lightmonitor.ino new file mode 100644 index 0000000..dbe055e --- /dev/null +++ b/examples/demo_lightmonitor/demo_lightmonitor.ino @@ -0,0 +1,498 @@ +/* + * Copyright (c) Microsoft Corporation. All rights reserved. + * + * This is a multi-threading demo using the Azure RTOS ThreadX for Arduino library. It uses message + * queues and mutexes for thread communication and synchronization. The code is designed to run on + * a Seeed Wio Terminal as a light-monitoring app. This sketch is part of the Azure RTOS ThreadX + * tutorial series published on Hackster.io. + * + * For info on the Wio Terminal components and sprite library used, please see: + * https://wiki.seeedstudio.com/Wio-Terminal-Switch/ + * https://wiki.seeedstudio.com/Wio-Terminal-Light/ + * https://wiki.seeedstudio.com/Wio-Terminal-LCD-Overview/ + * https://wiki.seeedstudio.com/Wio-Terminal-Buzzer/ + * https://github.com/Bodmer/TFT_eSPI/blob/master/examples/Sprite/Transparent_Sprite_Demo/Transparent_Sprite_Demo.ino + */ + +/* Azure RTOS ThreadX and Sprite libraries*/ +#include +#include + +#define THREAD_STACK_SIZE 1024 +#define QUEUE_STACK_SIZE 240 +#define DEFAULT_LIGHT_THRESHOLD 200 +#define LIGHT_VALUE_STRING_SIZE 20 + +TFT_eSPI tft; +TFT_eSprite img = TFT_eSprite(&tft); + +/* Thread, message queue, and mutex control blocks */ +TX_THREAD light_sensor_controller_thread; +TX_THREAD switch_press_controller_thread; +TX_THREAD button_a_controller_thread; +TX_THREAD button_b_controller_thread; +TX_THREAD button_c_controller_thread; +TX_THREAD lcd_controller_thread; +TX_QUEUE lcd_queue; +TX_MUTEX light_threshold_mutex; + +/* Thread and message queue stacks */ +UCHAR light_sensor_controller_stack[THREAD_STACK_SIZE]; +UCHAR switch_press_controller_stack[THREAD_STACK_SIZE]; +UCHAR button_a_controller_stack[THREAD_STACK_SIZE]; +UCHAR button_b_controller_stack[THREAD_STACK_SIZE]; +UCHAR button_c_controller_stack[THREAD_STACK_SIZE]; +UCHAR lcd_controller_stack[THREAD_STACK_SIZE]; +UCHAR lcd_queue_stack[QUEUE_STACK_SIZE]; + +/* Light threshold variables */ +int32_t light_threshold = DEFAULT_LIGHT_THRESHOLD; +char light_value_string[LIGHT_VALUE_STRING_SIZE]; + +/* Message related data types for the message queue */ +enum lcd_message_type +{ + lcd_message_undefined, + lcd_message_light_value, + lcd_message_light_threshold_reset, + lcd_message_light_threshold_increased, + lcd_message_light_threshold_decreased, + lcd_message_light_threshold_reached, + lcd_message_buzzer_silenced, +}; + +struct lcd_message +{ + lcd_message_type type; + int32_t value; +}; + +/* Thread entry functions */ +void light_sensor_controller_entry(ULONG thread_input); +void switch_press_controller_entry(ULONG thread_input); +void button_a_controller_entry(ULONG thread_input); +void button_b_controller_entry(ULONG thread_input); +void button_c_controller_entry(ULONG thread_input); +void lcd_controller_entry(ULONG thread_input); + +/* LCD drawing functions */ +void lcd_draw_background(); +void lcd_draw_light_value(char* value); +void lcd_draw_alarm(lcd_message_type message_type); +void lcd_draw_light_threshold_value(char* value); + +void setup() +{ + /* Setup serial */ + Serial.begin(9600); + + /* Setup environment sensor */ + pinMode(WIO_LIGHT, INPUT); + + /* Setup user controls */ + pinMode(WIO_5S_PRESS, INPUT_PULLUP); + pinMode(WIO_KEY_A, INPUT_PULLUP); + pinMode(WIO_KEY_B, INPUT_PULLUP); + pinMode(WIO_KEY_C, INPUT_PULLUP); + + /* Setup buzzer */ + pinMode(WIO_BUZZER, OUTPUT); + + /* Setup LCD */ + tft.begin(); + tft.setRotation(3); + lcd_draw_background(); + lcd_draw_light_value(""); + lcd_draw_alarm(lcd_message_undefined); + itoa(DEFAULT_LIGHT_THRESHOLD, light_value_string, 10); + lcd_draw_light_threshold_value(light_value_string); + + /* Entering the Azure RTOS ThreadX kernel. This ultimately calls tx_application_define(). */ + tx_kernel_enter(); +} + +/* + * Because tx_kernel_enter() is called in setup(), loop() will never be called. However, the Arduino + * compiler still expects to see loop() defined so it cannot be removed. + */ +void loop() +{ +} + +/* Thread entry functions */ + +/* + * This thread reads the light sensor and updates the LCD. If the light threshold is reached, a + * buzzer will sound and the LCD is updated. + */ +void light_sensor_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + UINT status; + + while(1) + { + /* Read light sensor. */ + int32_t light = analogRead(WIO_LIGHT); + + /* Update LCD. */ + lcd_message message = {lcd_message_light_value, light}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + + /* Check light threshold. */ + if (light >= light_threshold) + { + Serial.println("Light sensor: threshold reached."); + + /* Turn on buzzer. */ + analogWrite(WIO_BUZZER, 128); + + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_reached, 0}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + + Serial.println("Light sensor: buzzer turned on."); + } + + tx_thread_sleep(TX_TIMER_TICKS_PER_SECOND); + } +} + +/* + * This thread checks if the 5-way switch is pressed, turns off the buzzer, and updates the LCD. + */ +void switch_press_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + while(1) + { + /* Check if 5-way switch is pressed. */ + if (digitalRead(WIO_5S_PRESS) == LOW) + { + Serial.println("5-way switch: pressed."); + + /* Turn off buzzer. */ + analogWrite(WIO_BUZZER, 0); + + /* Update LCD. */ + lcd_message message = {lcd_message_buzzer_silenced, 0}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + + Serial.println("5-way switch: buzzer silenced."); + } + + tx_thread_sleep(15); + } +} + +/* + * This thread checks if Button A is pressed, increases the light threshold, and updates the LCD. + */ +void button_a_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + UINT status; + + while(1) + { + /* Check if Button A pressed. */ + if (digitalRead(WIO_KEY_A) == LOW) + { + Serial.println("Button A: Pressed."); + + Serial.println("Button A: About to get mutex"); + tx_mutex_get(&light_threshold_mutex, TX_WAIT_FOREVER); + Serial.println("Button A: Got mutex"); + + /* Increase light threshold. */ + light_threshold = light_threshold + 5; + + /* Used to demonstrate effectiveness of mutex. See readme for more information. */ + // tx_thread_sleep(TX_TIMER_TICKS_PER_SECOND * 3); + + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_increased, light_threshold}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + + Serial.print("Button A: Light threshold increased to "); + Serial.println(light_threshold); + + Serial.println("Button A: About to put mutex"); + tx_mutex_put(&light_threshold_mutex); + Serial.println("Button A: Put mutex"); + } + + tx_thread_sleep(15); + } +} + +/* + * This thread checks if Button B is pressed, decreases the light threshold, and updates the LCD. + */ +void button_b_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + UINT status; + + while(1) + { + /* Check if Button B pressed. */ + if (digitalRead(WIO_KEY_B) == LOW) + { + Serial.println("Button B: Pressed."); + + Serial.println("Button B: About to get mutex"); + tx_mutex_get(&light_threshold_mutex, TX_WAIT_FOREVER); + Serial.println("Button B: Got mutex"); + + /* Decrease light threshold. */ + light_threshold = light_threshold - 5; + + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_decreased, light_threshold}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + + Serial.print("Button B: Light threshold decreased to "); + Serial.println(light_threshold); + + Serial.println("Button B: About to put mutex"); + tx_mutex_put(&light_threshold_mutex); + Serial.println("Button B: Put mutex"); + } + + tx_thread_sleep(15); + } +} + +/* + * This thread checks if Button C is pressed, resets the light threshold, and updates the LCD. + */ +void button_c_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + UINT status; + + while(1) + { + /* Check if Button C pressed. */ + if (digitalRead(WIO_KEY_C) == LOW) + { + Serial.println("Button C: Pressed."); + + Serial.println("Button C: About to get mutex"); + tx_mutex_get(&light_threshold_mutex, TX_WAIT_FOREVER); + Serial.println("Button C: Gt mutex"); + + /* Reset light threshold. */ + light_threshold = DEFAULT_LIGHT_THRESHOLD; + + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_reset, light_threshold}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + + Serial.print("Button C: Light threshold reset to "); + Serial.println(light_threshold); + + Serial.println("Button C: About to put mutex"); + tx_mutex_put(&light_threshold_mutex); + Serial.println("Button C: Put mutex"); + } + + tx_thread_sleep(15); + } +} + +/* + * This thread checks if any messages have been received in the lcd_queue. If there is a message, + * it updates the LCD accordingly. + */ +void lcd_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + lcd_message message = {lcd_message_undefined, 0}; + + while(1) + { + tx_queue_receive(&lcd_queue, &message, TX_WAIT_FOREVER); + + switch(message.type) + { + case lcd_message_light_value: + itoa(message.value, light_value_string, 10); + //Serial.print("LCD: light value: "); + //Serial.println(message.value); + + lcd_draw_light_value(light_value_string); + break; + + case lcd_message_light_threshold_reset: + itoa(message.value, light_value_string, 10); + Serial.print("LCD: light threshold reset to "); + Serial.println(message.value); + + lcd_draw_light_threshold_value(light_value_string); + break; + + case lcd_message_light_threshold_increased: + itoa(message.value, light_value_string, 10); + Serial.print("LCD: light threshold increased to "); + Serial.println(message.value); + + lcd_draw_light_threshold_value(light_value_string); + break; + + case lcd_message_light_threshold_decreased: + itoa(message.value, light_value_string, 10); + Serial.print("LCD: light threshold decreased to "); + Serial.println(message.value); + + lcd_draw_light_threshold_value(light_value_string); + break; + + case lcd_message_light_threshold_reached: + Serial.print("LCD: light threshold reached"); + lcd_draw_alarm(lcd_message_light_threshold_reached); + break; + + case lcd_message_buzzer_silenced: + Serial.println("LCD: shhhh!!! buzzer silenced"); + lcd_draw_alarm(lcd_message_buzzer_silenced); + break; + + default: + Serial.println("UNDEFINED"); + } + } +} + +/* + * Azure RTOS for ThreadX environment function (required). All threads, message queue, and mutex are + * created here. + */ +void tx_application_define(void *first_unused_memory) +{ + (VOID)first_unused_memory; + + tx_thread_create(&light_sensor_controller_thread, "Light Sensor Controller Thread", + light_sensor_controller_entry, 0, light_sensor_controller_stack, THREAD_STACK_SIZE, + 0, 0, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_thread_create(&switch_press_controller_thread, "Switch Press Controller Thread", + switch_press_controller_entry, 0, switch_press_controller_stack, THREAD_STACK_SIZE, + 8, 8, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_thread_create(&button_a_controller_thread, "Button A Controller Thread", + button_a_controller_entry, 0, button_a_controller_stack, THREAD_STACK_SIZE, + 8, 8, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_thread_create(&button_b_controller_thread, "Button B Controller Thread", + button_b_controller_entry, 0, button_b_controller_stack, THREAD_STACK_SIZE, + 8, 8, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_thread_create(&button_c_controller_thread, "Button C Controller Thread", + button_c_controller_entry, 0, button_c_controller_stack, THREAD_STACK_SIZE, + 6, 6, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_thread_create(&lcd_controller_thread, "LCD Controller Thread", + lcd_controller_entry, 0, lcd_controller_stack, THREAD_STACK_SIZE, + 4, 4, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_queue_create(&lcd_queue, "LCD Queue", sizeof(lcd_message) / 4, lcd_queue_stack, QUEUE_STACK_SIZE); + tx_mutex_create(&light_threshold_mutex, "Light Threshold Mutex", TX_NO_INHERIT); +} + +/* LCD drawing functions */ +void lcd_draw_background() +{ + tft.fillScreen(TFT_NAVY); + + img.setColorDepth(8); + img.createSprite(300, 220); + img.fillSprite(TFT_BLACK); + + img.fillRoundRect(0, 0, 300, 220, 15, TFT_WHITE); + + img.setTextColor(TFT_NAVY); + img.setTextSize(2); + img.drawString("Light: ", 20, 20); + img.drawString("Light Threshold: ", 20, 140); + + img.pushSprite(10, 10, TFT_BLACK); + + img.deleteSprite(); +} + +void lcd_draw_light_value(char* value) +{ + img.setColorDepth(8); + img.createSprite(80, 60); + img.fillSprite(TFT_WHITE); + + img.setTextColor(TFT_NAVY); + img.setTextSize(3); + img.drawString(String(value), 0, 0); + + img.pushSprite(55, 70); + + img.deleteSprite(); +} + +void lcd_draw_alarm(lcd_message_type message_type) +{ + img.setColorDepth(8); + img.createSprite(140, 95); + + img.setTextSize(3); + + if (message_type == lcd_message_undefined) + { + img.fillSprite(TFT_WHITE); + img.drawString("", 0, 0); + } + else if (message_type == lcd_message_light_threshold_reached) + { + img.fillSprite(TFT_WHITE); + img.fillRoundRect(0, 0, 140, 95, 20, TFT_YELLOW); + img.setTextColor(TFT_ORANGE); + img.drawString("Good", 32, 10); + img.drawString("Morning", 7, 35); + img.drawString("Sun!", 37, 60); + } + else if (message_type == lcd_message_buzzer_silenced) + { + img.fillSprite(TFT_WHITE); + img.fillRoundRect(0, 0, 140, 95, 20, TFT_NAVY); + img.setTextColor(TFT_WHITE); + img.drawString("Shhhh!", 20, 40); + } + else + { + img.drawString("", 0, 0); + Serial.println("Not a valid message type for alarm."); + } + + img.pushSprite(150, 25); + + img.deleteSprite(); +} + +void lcd_draw_light_threshold_value(char* value) +{ + img.setColorDepth(8); + img.createSprite(80, 40); + img.fillSprite(TFT_WHITE); + + img.setTextColor(TFT_NAVY); + img.setTextSize(3); + img.drawString(String(value), 0, 0); + + img.pushSprite(120, 185); + + img.deleteSprite(); +} diff --git a/examples/demo_lightmonitor/docs/BoardsManager_URL_WioTerminal.png b/examples/demo_lightmonitor/docs/BoardsManager_URL_WioTerminal.png new file mode 100644 index 0000000000000000000000000000000000000000..91b551ba6352f802535b39a9225b9f2a435fcff8 GIT binary patch literal 33982 zcmb@udpy&B|36NI$|05Htb-`Waz1V8B*`JYCC8DFm_yEtIfP0MmF8>}rBcp0+elg& zmgBHFAC@y4X6NtA_4{7mPuKPN_qW?kOWA9$Jr9q^{q*$2+R{{LzvO-{E-oRnYnN@f zxcD)^-*W``fIq7m4Zi_T+(9;`7rDxMq!)m1c)d(4Ot`oz(+@D+_5$DU3%F(<#Km>$ z&+Zp@y!&2hF0Mzn%r2Y!6YjDy#-D%W$|z>z;z4Uc`4juEo-+GKH0Z)j!RG9fcejni zstd;pNDCjmhBOs5;!h|=zCX-c{Wf;rO%2!E)}mtPxZXB1N(;O`LmR!kLZft^an?xH z8cl|TerH=}XJ;$hkOW~F1GUf-|M^h3*OOn);s{AOXGWgH$z`*&hf4}tc<7;MjA{XB6zS|C5JLtbJgZy8Yc^Jc{ zDRQ>@t>z#Ow_A>G{^@NG`SW{R)unkD{_c%Q0v~&+h3Z+aJ054*xJhkfqLl6}Yi(JQCYo;8@tk`_uGUJqF!_e{I6w$YwFTP^G!)Ao@?% zia#6&v&$|B8~>=1D!eZ8gF{~`AL|f@OoJH9njAw<0y2DhpWlc_)|R=fQ^??;c~^$l zdYf$2^6F^a+N4_JpSN9BON!)j{|QuC*xGm*l%P{)U+o#=!KHGi;XyoQh|$#4P=6H7bG~HmsXge*|4ef+`w1ULs@8Xe zEX}$8^l9tFer1(4h<`;J-|C;D^w0vsu+WtuXjZ2$h$s$$O&wKrn3dG^ zTShU-=A0awtDIrzayG5(0gAC|Nd11;>K;m2(7YS?h-3UJ`_fSB-wt@}-Hzfk4SjKJ zvd|s-&fl}o!7^X3@>}Ib81E0A@o;xA*PBlaYl7Z(%l2r$Oc*f`7@$;Qr*hpU?LN1o z)`Nkc{DF9TFB!QDYro$l$YoxTuN&5xfCb^-TS##thd$f;eS0L%TGILlf$=`66hmKt zZ;&jU3|@+3RjQvkMsE!|BSD1BSCz6LYnQ_dD&`JuiDI2SDQ$i@W9s@Gysy~IJTv_+ z!s@Rz^AVmM>`-RJSCh%Hdz#j&o_!8A5yP+*`1URlS_K91Z0Fdvy;$CMrC&rnZMg?~ zQD_`hUkfE1RdDv%--g!2F`EcMIO8!gHcO;fUJgZnP%A=Cm0{FJk$)+UF@R-k;kBoJ zsT_?mWGut!TxGLfq=K+eQ|Z8ZpWe4u<`sK(_d`kPtGV?`-po?V0)xhWEAW`e^^DxQ z?NOg5HRr~i^Xh+XP#ZB|GbL#do=-|?N`(=ibzN2|Gj05G!G}-ZSm$nGtik0e{hf)} zPj+4ro1Z$revb5b5H(Sn(yCXTjdu=n<`{c;jMjMj4OdL9&ZL94!3Qdr>19o;i=o6y zBqT{1%-$)I0>SE|=nGy<>XwCtYH81nbNdF? zzB9!i)^DNPV7Mk-d)ZamsGm*@!cjE0;fxhsj%Ht29#qR5@;~eUaxv;=fKxGIBY#Cm zm-riZ<1`nxYprPwWk?|q-&+jYOjz4+2FFX{L3U1urCGtMekYXoii zO>iSwHu9&szeu44YPE5WN8+z*UoK|oaC) zxbjD5*p&w@Q`-ir&SzoO(fPDeBAbp!)4kri&v)5-V4`p89Ly^(N~6DA>MuzbslWjh z#W{LQJ7%bQU;jd{sa!~V^28hj(*W#dCZ#|$+P}V_zDApOA#5z9t}57m0?dQd@>1a0 zPK^Z$I#vCgG6?BWU4+GHQW&)aKWe(@PrGnfmw?>)dmrG=5}+(n6Ap=PZJ{qJua5eZ zW0~)#QFhzcVqtP}7bI8fCfH?;b!19n^E+5HuwhUz;0H@b+<$%T3U?rI^XP{H#c(;o zoiMF;C%2F^jVaJgLQmz;TcW6;s*Yu|{am4|E#yw@>YHTQGL01QjdDFV$$3Z6#}qns z;@xudlKmUl`Jc1xBH)MVM&xUEB_C~_B4HkjQZom+4Qcd8k#Ve=D$7yOdMl4Uj#MAC z_rOsVB}P*@@ql`>wRhvw|7n2Nj8se2zQ)InHjvm@Xzhq6sMX9mRXzSmo?qifk?-nt zP7$rm*#^P)*LdQ1UlQv4f&P>5dgxPWZ72^P6WPQhV~Ibc{PSrRRX_nJtf8UF(1YPK z$0%)w#(X|kHo`3~tbE10DC=pY?K|wU8FyEuj`$Gt*wJx&JW4(6mqON#>v3$BV?{di zw6nl7_7a4&Lluihv#=0LtQy!#o&s#)vq~Ci8qsDP7-jK=xmpMhzw94jFmru>+{WEM z_;MtJisr27OfadGy_xEKeEAPMf34!+ptB6hDQ{>p+Qa(iKE?b=BpTIq9{bPm5U}dz zwumr_u)!*Qob(C>fozE5uhy3OdMAHvT|_tt34%j zysOaIaJ$()daIT#odTj3j`Sw*34L1s9ClmB74nua2^;o8MpqFg!)AV@2I0V*X2<$~ zHyjBL#Td@n?6(5y8>5HQe4bxM>*q={r6KIZx@R1ehW@zO#kG=X2F>|jOO z=)IQ~ojp@M!2LCw9lm|?wXmz9JS)4wO7c--=*qNRpFBKV9myhN%XgyPq>wT6kB~mO zxrH!S9reF!`~%5dh>_prbLQ>Vkg~|@&jdebeA!Q&GJ7&Xgeg8A!+>(&pgWR{?wB;T zc3iGvVfZ(6nQ*)Tzf5q2&vGTEbrW2IRjM z!|o%HJHI&AZJQftYQB^o{r=?eSQaE^0Yv}fj+QAr31wJjERwP6R4|Du-x~65AExQ+ zkV8Kl_u0L0FnT6cmyYxLv3<+Rc+Rsc9IaA5M2TaPz0Av(61-~VcpGbp4-asn_9QN2 ze?C7smT~+NQ>PF{J|j0=CGX-*E6dhE7Gzj@%-sw8bLMx&PSNbmbBX5v5&^ z5YDKI(R;6J?%h<|>{8X~zP?OdxotpsylN z6Lm)J^)EmB<&S0!jYTd&K>|moqhfm2QatjYwZD2UE8Op>9?q$hywd7BT;VqI`aJHS z=dYPlyfXXBY+vnFZ}U2BTw)*>L}G)YYVE5%qBF`*i)NovO0lm-1?Un3+7Fq3Kg>H% zBOev?8+tMoh)`$iWDZhGb zeX5;kYv(+draylS|HV<4QK&81aSp zwrt&I=kx(YFU4>^yQrGS_-SI?o={W(=v0Avmu$>Nhj_FD#>~f1<(;1gQY&iqc`~p~ zXG@Kb#s)##g>=`;Md#1OJ?zu%0SdqvfUKw4nvV?wZ%krkUhW08ZtuEww)!|GmuWl9B!_~h+VE!0B9RU-q1gBr0T{(n+$2QFUO82OD`gE-9Z%*+o8u)ytueD^HN0R{d?ag!V$(w zB@lQ4qk#m>fwS+r_Lr56A)QI?R4Ls+fEe8GDGyi(=!wqz(p^0deG(YoR{FW>DL~Df z#|G^nbAF8rSHl)RmfZfiR`aFCCS|$d`P$5ZZ|8~4w5K_CVmEcB`EJe5{8B`oWjrG{ zKGw4L`SO+68pkuXg@=#;ST`yO>HCY!%%)#x3p^u<*s8TJp~>Ixc!BA-+^UE7wLH9P zUUXH+IpwH1A4XiA-HppGPt)MSs1S<1q)6?aKjPg_{jtAwtw`&p-_D7j{^o^;m5AOY zGOVS$Cx-PsI*)`=x-SvU6bqIu_2-W0x_wI-k^gfZs}*9n)*Li#!?3-=g^zEi&C2oI zJofk?uqeKnDEt}ynnDP~#OR~%^o)V>NKu3d&31Z{lwa^#GsRB_Y$B_9E3zmxvf-r_ z=$DX;!FT@7eMiKx@q1~5=cY87FUh$Iw9=>C5=ImGUTw+V7wKPW`mT>Cu#yEEMp!hQ zsaUib{D0QQbMT(Mm@5xNu~meiZ+Y6KE&_G-3d|!V0s7YaqHCcC9%rzmf(Ix_m(}0s=j;*b ztha86P_5rD&5u`il|Fs#rq^z;5Bq_@5aup1l$D9~=w@^t+R;bS%4hrxz*XR~d` z-giG>YkT)lo-Jv{{|2gFann*+(^!HCDAS_o_7{hSv9O75blKCHG^u6329FN_H_tX? zZKChRYjf6`EI5+y0C~qhRG!FT^~P*6))E zXl-pqhY#$*t)}0tXb-_Vlh{mB(HMaF|6F}`Yzk>6TPE4Y7CctrbJNpY*V_iggnKxA zr5nRZUB6niqC)_lrM%i_uHFqQj6aVnQuWo~3kNY=qE_r{-jV(q2)4lPKpcO)Ig>tz zO*?$!v+ob}He|iLb4VigDoJWU5c#G%C@BOPWPq>`t$JzFAW)=lfP!Yyj;y$ zP-|Y_gPwhOAAnL=HCES)^}~vm0Q&Cm`o|+G z=x@w%_)9a`Uou&LM5yh1If~wgKCLu{Vl}cuUI0j!MmkcG>YBIrbtTZB>8=p9r7!rA zHO*`j$1a6VOsW)#=lT7yNU=HqLNf3-RX*UEY-MSN-*DTjr+;_8*aUytKo9R zr7VF-G;5o%t1yt;BFFI`ZU*zBDe#p8$|+DQeMpd(inA6TdSw_nxxDU6e0!GxF@PO%{Io^xENW-^ z0H^V0(bY0IhwaB$siRJizEv)xIWc~;xh(1gplyZu0Thv~J*=)w`m9&+Lvo|dvNIw} z%~^9o)q8P3w@R}_7m$CDw*!aeJaLM1?hb^Ar7v}`-;%{NwWj512l(f%g#d(A2=SAh#cdO)7AnZ%jx@v7Y~vCE zYm%g|jacyk9)8~u#_CwpE-u@~^d%a^iyirEc^5y}Edh~0&#S6d%Ta*+Hc6<8^Sac! zp6#9%So)>*!MtMPfh>#D8ApV+jVWE4Ba^CaO~%{9#yU!!D4F2jCL^uG%Olle!VN#&$wCi5lhDptVAiL5jH!^A$*VQQ3Jw6D^P2v=J-~X(BQL-P6osAG zmg74QaPQv3puqouvZbpY_AGLl{YaHs^O{P~GGMN^BZh?;mq$-`>s)mpxamjr5j*FA z$#A+Iy4}g#4wEK`no1WIKrIZaPsF#xFjf{~q-F`X9iemd&5<7*weQ>1u`md}%7gZB zzAFZKelCO~IrVTOkQA;acqAMcVOAC0HMVQA4MS%MS9Sw?xazahmo;z#I%=aM>n`r& z;-nL2_N5ier}F^GrN)If;(O2!=tvY<3)yz+uRU|9+$33828-`{_4dTE6q(wIHYobi zoThE5`~N3nl3NGRhWWREEb?lT*SJ%+^et!a8TuN_r$n&k21ErR~?DXcSs z?W`|PBwU!5@XB9BrpwmJ4VuU=0}CzGIBI*-n=36*{y2}I07|VT_#`@=*PzJU?eHUM z!_d#TAhz1~TKoCY!mnMGaKMR)xeY72YR)jKXq_iE1XW|>fsat+;T@0#Pwlrf98}*Y zzP8{_LDReNcYxThgg5qn@gDxL=D@~lJ1U-~GZanL0eCXWG9i41%> zGcN=WB~hN42pSF5|?1=RlZh*54j>uQCZ9x01-w zfi?mN!zIz3XW@JdGdv8a8ar!kQEYNne`ik%IgY#8Yv{9j6}I5;L9d9g+p4bM52mX? zf!@C*PLftu_}ut_CNFuLOFjUn;>%ZIU3gX*Dfr0M`q|zgeV6Sxulee;TC*J$r8Q9#z$&e>bTV^E=HWsd4mxjSw^Rmva2zPh22idb!44sP@Ft zTGhNSW#k*V)7CEDC@>f-;jeDnxA;O<0Bh{+3+8XL<2yi%AXO;rnVB4xsJTEN4qYCW z$Y|RZI1L7bZVzvir>{Og=>V;xidHMfYwfZXT^wRMcgiKf-D0t^OsJ1=02=qm|&9#_oc?3TRVBbD*{UuB)cM&m67FWPzPLi?&ZVwbB@k!8^fRsbY?ezbbCZz>`UCb zNA!C1uqA5}H23CKi6xup0Y8@c4fU#I>8u!Ej>exq3nj?yiNCz;YcVRf-%o}Mom4Wb zcr4$GaP(W?(dcOP(wKSi>@=6{&qK{_@+F_bW!0+n+b8t|cq{WmB3zq2bk@xeK7D-@ zn@EX@ceLG?7S!Bz&pD`DJ35vaPwcv&aPR@)_-`suE@=`?y!0KF1Iv}p2-TS7N(^xe zKQRen@3?a)*5?vtp|pL&avd@Bo&F6K{L!-R9%bNXTJHpPQBiH#Ivqg}?&R zCv{CO#YgfA2}QJ4chg$-4*%jY^h1QAfluxPm}gaUuYXVK9m{A_8TpZ#_s@c_qhLh=dZ%)Eqfc4GDF56S!H&I{wkm?)Kd)6ZV-w^* z?oG?F@A|w9*xpKcE}5^q3L}O@3L|84i@5(3~ zHWdtkUw$Vh&Chd3iL`v6EryKggoL92t!zuI=hFX>JkeiPT6$$3gFXT#hY+%S*ag5O ziWzCObP!nGr7?h1<-?9bSPN&FBKodcr;_y7>fOO|zD>aTJ!>THc>O@gQ`Jjybw*LB zzR|S55#PE|{Wgv~YX)G#}^OR5`JQ zIa89qytLP|EnSZD2oQWRnrQpJT@VFWB4F@L-Uxul0J4iV^Edpfi=NoZiJ$rUIA_@Ed`gK7ay>OZb! zuce0qT)jBhuo3|AXlB7ve%`|39W*{`d9quP-I1rD&G#vRrnCfl#wL z<@&z|^b~xJ*b+8x>wW+ChbKPG7aj5UX+vebRmx3C7J0x|?kiUFN1uv+PLAJX{{Uxp z_-**75T~zD#>x-G1fzR6J*xBtpSt_wS$IH^ljWF@hK76cnDpSqchh{&jtYc)oNi*utR}$GrT>r!8M%m1KX581E1I z$-Ml)5!j1f{~01;njAdh-%H`bHxpd;KP!2*dCJ)g(r3RY3urU{9+chZ>(bbg^7?Tu zx#mIgLdO;Qi=JZL1+|dm|H=s|_~zI~)gz>2=5uQo^Jz~8c>D5#6eBcMP~VFC%&4t z1^&Hmo*%0EXU4Pa3N_k!=BSTX%!v?gnh7ccY-9M}7ZmNf;Wr*)Rkukl^#p!wAMGOh zK3~Mj|GGgfh`-(5A4__2^6FT{j}iYBzRHXhGgyB8ZeVF2`3dty?(R1D>v3f8m7Plt z>&5gP&p}zgoWUU+OmT~wb_HeD4MZ3I9@k=7pW)yubuh-t`3bY=i>T*t8_mB0TR-J& zO5&(A4mxW34hQ}3cPLiQKNr(yrs&}^2V+5^x?ZtRMP=0k?Te<4k^ra@x?%Y>n zf3yNp#MMKA_&`FQUf^2-kPCC(&E4$^HGr|O`Y$s#3@{%)87_V(B3@ViQuBRnHhlqz zvQa|L^y!t)41A^Nea4Q%C>FZGf2=u@yD76>(PWu+Qo9^zy{mv-N8KVm+IN@;h#+}1 zi!s~7q$8w$AVsnS339GquEH{x=qHd%km#(^LeY=P|3Jh{hY>sTdHzH|)dHld>69*i zg-@uOmPLmam$UdB@Hf^+&optZ(*kf+X#e|E$FuJ@a5%u!mxEKT1w4W&D-fB0 z`kc$&0vu`ysbkk7MZ7id|CX=oIO@1lb4o*)%>f1yR$)@CrnE)5^E6#JsBA>Ax$vC( z)%g+|29yx=No-VJFPNzyW@O?D)Fp@x46RT1+CkAESA&?=@<7ci6v_yr~ z0jZ50d-LF~w*Y`vkO;T~{W?hGllr{I&jmy`$6A;DJ;Tyv7~#|6r8&)jTN87+%FPuI zh!3l`0SO2wlf&17Zs-0IQ*!ipWlM})`a(juH0qgOAJn;xeACtIdG|`9p4r;MSW}(9 z`-pE~`~h`9D~wugATdA3MNsBF#?RO^U1u2~rrqVG5>!web`*63Bj*)!cFP`w2k#c% z=ck17%Kqfm_#$bR*STqCsOuX_dM>ASV^<*yHX!qSVf&@}`#=nUaPK9Z*2RVBF`kT# zW0#)A{;6vI%3{g6nT3cxAHAx$1ZZ<}SyR{Pl0e9afdThC1aMRmWIU_&#Ic`Wv1&~_ z_!HW3lUxbQcc#I10Y_8x`o@pgXaC$^%0==&&akD2&EnpUGc=bA`ss0#BqdbUDan( zkK$xgVPL&9fSd=n5io7&;5o{t&2C7=PYcGRvhLiN`hI$@eiPdwcjx4s57auK`C7Qk z9V|kbh7X$W+Q3bE^2rr3bKJULAb~0u(qRYb4h4cgDS*4d9PxK5kKFuIrT~BUpD#T2j&YKU(yCZ*U5w-s%ws=0orYoF%)cYGLqR20~C0vUk(x!DyqS6Wa3E4@~^@!7Vp;VDp(h^(ENbasdmlKS{@=J~Q; zT^fLff@B%LAAmR3J^>ofwGgfQ1K+h>0=K%tY_9*bBilVK+7+3W@BvREUk8zTRso_# z#t9Y8Oaps5RJ}#3S3R+>+Dn8}c;?o4fVgw;b09(Hxw5OQl|j%lFxP_DhShuT=xhS2 zT&NY8Rnr87)T+3jnaV{EsJqG9j;-W}j(&`}Y80NNYFUb?_0?Ch z7G<>lT)?B@a83{+#oWQ6#k>E#A4Z1Jpjtb8q6z7mqrbfc`063f0&N_U3Fqf<4{UZAP8N!>xGl0mo ziPKJ9J&emR2HFCPob2Xs>IIvLd=2r12Oz`1Ce0 z$O_-Mb(ZaAlol%{zS`h*FO<*KfwYIgf^(?w-I^7;3-IR^F;)g?GKNE08=oF4CrJ6# zyV*++Rh#aeKz3}j(B>WeW`9P(E*xSOHqSM*@5XB3av=f{26w+dUS>?MDwq&u8%mmAF>(cP#kiKKIDE&ml=+yG)f4M2>wwFSt`<)AxNC+HfM*^oet^s2vy z_aQ}MU45kTs)My{u^h>mhJB!Xd!l**FoJK@va+H<6sN(vOIqt74kye?dWnO>KR1D*iZqh>IdMiwH_)&QA!Q%3mW|%~y(NMf z%hl|h@j;ITuI-$l^JnR@Wp<`AA^+%nIEd-v0~+85t9Ff+)~)Zghgr`5EDe3Z_HYVd z#@+fqeM9=vgAz@TtqZ~t20e*n)EvT*4z(YIwlLvNHPh z+g8NXx5St$CwrV1Cn{8a*uz;{Kms}%COLw#iP?>5>jqALZ?27NtdSx6R(I=AA}$zv zL-+N31%hyl-QD7i>Pld`()vGKq&yG$)#;jFOv$DwnUW1b=jkoRURBJGGab^@v*d zu=5Pc*M_sZm?|-*F@bVdqOv2;`Xc+^7lNW2)scZAwwsdYf%;j+sFH~;*fW}0v#%au zf3U8R^v|Y&WEd*PiLj4au(>bmtT48Mm4*zI>j$8aFYOI`lIj%pvW(~S7jj`RD}~@S zS~#$hk8xwf8@*}1UHf1^qibR}&z=QdHP`biTaq^Ph&PCfs_5KqI!l6pw#2rMkPa>U ziUF+R?y(3`f%(A7;2F~KvX_}WrBW*{iA?zHb5myY4K2CpMW&0s@M7xCP6szAfP!$O+Qh5+W7W%S)}nQD$_@n)*%loC3#x~2m{1> z24ysFQ?Tv(;ZukXsTT+y*DWZr{C+M2isxr-y?A@|8 zghgCQ>t3aPbbPs(y*Rr8;N}GmKNf=z`-^61e*tKw6U8se1Enm4)o~sz2>p#H^Ir?~ zn5!}YPAhoA8AVN=v*xQGvnXr2W>Hbv3r)JFO?xL`88pjJGmJH?qPn4-3!fyynYU-7 z{FHWZc<|bIHzX5)s&ffBPOc5Z4iz^tH zA||eixKDyh);oo-k4LS&(%u924?do{5)kMEpf`ATphfojTlC{Y0aaJ;97#Rzr*U7f z&-J9z0l!E0i?8(F4BkC#Aifg-Hkph?_PUOR&y0g!U!KuCvMPdXqw>qaGB`-&b46Fj zFAiUvLT}{JW=^|`mRKR7o!g|~iQWz`N?5HB+bd7&cI4J*#pjKt!l+%rPOEuAdKX+* znW&hjTzs?u)D_J!He+p#-~LWJ|I|hew5bt2^^W_{mG;Q>$uoPG^uk59zLGMZn)x~4Yf2IyQA?0%T@|*tWNs_4zf0hvyMgg+cI%ekE$?DsQ zQiB^a$aO}>Rf&0jz}C|PlpO~B$NRC(SPrdl(kOLydxgMA^7GKOx#=b`n{+Q#dnkZk zR`2&()=IUE9Gc*oAT$O;7;?DVTJ|>h=#694!i1qra^D_SAFd0#ZI4SxLU$ULb{B z&;EJ1wnOMhTNj{90!Tr@D81pAYmx|$?6B}KU%?_#V^->SX9?)Wp?N#vxnxFO=IMrv z)neuPwk_3AuTu+v!{g6)&fPCq3mm0tY=YDt2 zv&Pq6YV3PrdLc1*(%(d~QmAJiCux-^{53Oz`hsv;0$^6Q;+_ zqh^416w0D+Vc*LP+ja7XaD^CnXVeq~OuXz7Eu$45z}IO&+klL?Gln6cr#N>LbZx>t zP5%eUT}$K}ZhF*`(H~!*r1d7|q`VpF0g=|_^;@UN<+ZVdvAF73L(icL<3NrBR&v5y za!g#=Zs1q3DB)f62;(zT^yf4@J~B}0aLvsTu)(ngRPwUXo3gtc{hoCuNt@vnBDNA_ zFm=goWX8awAaA+!oluB6l&9}hYS3Ag_TGsrm0&Z%lT|~Rxzj4`%(OKiWh}yh--!vg zkb31K#VE)W_eM~QmmtAN@1^tgS;5M7(pYN?w~0a@ zo_t)zE{UZF_=?z3Qr-^)f2YbqTgX$Lh;Sos-;>1lk zn;sK~TSw1ur2Vr?GH=D;8X9)1hElTABhReDb$!9A zIR>2^NPliw--xy!%5%P{(L2v&slJ`hcXFFpR!Zv{|&!Z&C zJI*OF>>sT2b$5+V+ESvJZ<+;_^a{_bS@Vw9>-E}yQ}Jp##@U$>@zA}~!iuV|;H~BJn`O8MK$@V@D2Z%yx{%4 z5j}g;Q|5N#NAE2aFU6-AGk)#Orv|T#c2BrI zN)1zEAJw`G0l@zxhx8s{-zY7jXhNBvYqPDr((buRT+6C|au*IHJu7+R@4{r`jP~5$ zbya=gxgJu-wYEplb}qD*jVq%i64L(tp4#ZOVxd&W_(>zV?9GZaZb@mt^-0=I0Wc?y zrBNRpwp8+whR#m#`_=wbM1^-(zHn*IO4OC}yoiLd*}!iuehY1ZkdyYmxoETZ^UTwCL$D*imGAOn)}4w*SachKZ?2$Spl`byZZQ9e4`aq}0IA>iZFvO3=tWNjb~qo{-{G1Cq(yY1 zX0F@2XFPuOQUmhS%V4Ko;s9kY5bMWh?LCs4cGH^|V@A7N9Zu4Z35Dv^NTR9EtR5aTGVe^M=0$r zvr4GPEXFGG1)`T82+(^S+j7Eru4eo;&kY)A_h@|8fJR%MUF%~ z@c!mQ-UH*K`F_exhso|YPJd~zeWT3MY&%YVUmU+nwaDDcqmOK61-W&C0%kn=6Z%bf zr9SA9kL1F)Eq-Zn(wT*eUT>m>85d-7GEHf(*~OP~YQDnmS?A5gz2aee!S72wYz~#F z)^bBe2$553NJjf88T3SSiPPl-VYfyK&~a;~#uKBbh%*%ZP!OgsgFCc1y(K+b#8A88 z$IIHxUrKvIg5xRrpXs8Z!4wJLgiR;HqAw99xCAXLxlN@+WQHuxu8&G0jMLK5$C35O z8G{SPzqV4K??WsHgDak}CZm~FhOb~=hMA(Z7O0nnndivoMyCoqBS_I^c=R98t)6fw zUT(Cqf@~@IlCL;gEBiYLa9?pe1Xtt-_^?-6T=QMVtU}0fQj#HLZFyUN#J;(s-n6I_>0n!3yB1kQP+wZ)q0q6{s-5Q?TE3$m3O|%~yO29` zt;je5uKs&*k@cjww z62OADiry&@UPoWg4a_gj`DiJ7cvyFTn%zVdR3{)c_Z1a6q}??P@?1+D6K&dhSTN); z@}-tc_8T-p-@bnoogWUQdKzpUw1S|HUnV1i?+k9KFmhRA>8sW1FP9qV($bujEF>|$ ze4-nsI4CNVmW7Xfk?S|sNbiCE=Grf1!5jSEBC2%xZtp0>DSM&Q#(7Ez^7!UITH|e3 z5I+WhgXr|NZh&jgm^wbZY58I(bUNTh*o5&nU5)!60=VBF|9NG-at~rd!MX|n+6*+m zIE&!d6#XPgP*cF07oiJtXaJ5Ub~(c~6e_)cR{qXbXpID-nGFn)fhwHgd{nvg_NWQvv9?_@L!Us zaoSxoDCp%65pEaHx%i1>F(Rv?uT_aTi-HtZBGw!{!z1)C`nvC0-%U}E!(H<(S=L+Y5)+u@Z zveW+81w8<=nodd38qPY^6-x@r_$O3PjSu#FlB6l3KkK@CV9|@Bd~dEWPfAw8`hl>) zeQTYT4_M$F`GaZgPX?V?w|!S2K|E9>hw1g?;a#5hN>;qWO8$v_`+X!sBy`b0))I{l z)MDn-Gj0wv&nIO_aOYP`gCWE_=P!;e3dJ`~$shF_Y8WXFO7@W_85LZ^-9tc9FBMpV z4qbjzHm^O*k4SJ26%E-_pgy~g#4nKDAJM_6e?IT2-8>&VArm_67K7AR7l`ja*P0sq zM(?!W`w{Tcv6QD#BKS)PCEk;ih2K12Quw7IoznfDV(T5}UakgT7nTDxe`_!?zRdVe z&WOxweYK)Y67#<7&>PpmKG&*x*}mjtjCBmQP3jQMeJ|V*gx0cFzICThK zd;rSV`S?xIqx0NlS~I2UcuPL6c36*F^t$ z{Pb1S~6+ot9#0K|WKan(;&5R%%$>Q0{GnmGd{>yX5$7 zZTv+W{2-AZwb!JS5A-%Zr#>>N)?*rbTaCso?V)A~ zJ{GA|1z6!l`a|a;)HTO5wcLI86HK;jH_CB|lMYv7Z0yE>#<~~p-AhR`ND{NS=wxmm z^4tKi67Y=Id|&O!?#A9bW8c}Am#(ho-!li2tlBnNCh+u7B2atEM+G3q|R9*Y&mFSG- zV;{~E{;$i*2pf#E?$l8 zkxX^E^Ojp?UDI($&C-Ezrgo)vDNiW#w}70E@6MsPKqJdb;Yl&VXkce$|4t_TfL{%=1sc0>DgF5)H=dX0vAA>5bV6lZ;6c3_iFmEz z`#Zdu+5e>&<9163s(b=KvOjhF$izeU5N*m2Qp! ztS*+a?A)W?Xh!WG{+LrW-9 z*EiXoPd@ePv-*;YuF}f{;MZd0tCj}-k)L}1+wbk2Unk3!1Dq};3I2Moc@om_#_VE) ztmb>BimEQG%oV<=-Q`BsgGpL z+pq9TYy5_bk%`-P-=uk(4QTw~?vw-9SswA*-yT$Q=YxpZgvS4A?=1hK?AmuPqJ$DE zN{5Ivf-rOpAX3sGB@M!WLt2}md{C9QxUlF}t1N(?Y`cMc8CNY`HD{p`=Zf6x90 z_KQ6);DvmgnQLaP>s;q~9N*(1nW@g`c!zWScx4o=!t|sA0V>?qh`=F89nVigk>Thu z!<~C`?N~}0x1SfvcrwMy#`NC+X+W`ZAfUu z^@v^txZdz2wM=z;rs=QUu9e|n{l=$X4F5b)J*t#q*np7K{b8n6JHcfk%9nSe#R#+0 z+wYRE#+SLx9scl8G?^r`P8Cr1(_T@&sM*?u_$3V`e#!Syz0RPK*mQ+Bi{b4@xtOy^ zx*Lh)6G%Jz_Z+~Tnm@sCd zF!hFXxtmRhPK8c}`Q;Ph%i+r0`7xuyi)n5h?z2DO{oCbOuJ{o#T_d97_GKxrj%FbV z4I;*npn?J3onYh1)zTIEC;}M{jcBQTgDMlXjDd5ZhAIL1^vC02PWY!0;{{c{75EOq zcfWd{vs&z%P*bxzFI-+!0(%K`a&980F1C?qLM)LHUW0Nmx#TXj6HQ>)T=n6$EMu&n z@n}usXIxFUWJ2rsa9ICW6IA~yo&u)4PyE4lLpBq~JH+cox$78;`{Z5n&)ltUFUP}F z+UFrf(0kHre8l*RAARC@DSt+{3KyDwCJUc*Ubko*bDqf2^Bkc>a;{M)>06|$nZ4<$ z5w@#@4HlNuggs(PFxePWEQb9F?GHs>a`RI(f^5l_(#yGTE52VJu@$=)scgSaDuLQ< zc>7hIQDsla;g)}<_9Rgl#K`B!rm0%woke~b!aZ_?`!IRw^OxckXHHEQN%<>xM-B6Q z+8C%ZT*P1yFHG0C`Yqna$}R9f@uFu5A~gn#Zw=Fwi3H@6h#_{4d1JN?28&Sy^dg$d zL{AL+5(pT}%@_MPvb5rcL>Fu<0=1v2 zc^3e0g}-m|ps*;9kYy>7566VuSf2aV-gZCtdH~tw;VOp9qJ?3XE;BWq*LCEP%64(; zB&H2pjzLv2(Luc=iXNc@T&;pbn+ny2<;%B%_S`B+7=6+tfUJKS%oAfFhtHCYtz$x% zqn}+mk@vM|8NabSA+I4 z9RWeP00t0TIOZvbQxvB+iE-J6_fzN&C&2{!$hay4vd6DNXC%g^`*~?yqHh%nf1RYB zpg-THt5?3i^9U$ndd~Jr{P)W9vhYfgV=x!>W!l#*GBr514H!il-Vt|jcq_9zPO`4_ z!+o-NdPvAkGPSOX0a?{^YhFB|AiYzFJ%76ZYz6r41qpb?amJHz>zAX%){-+4<|iy1 zUy8rX4w$`>{%eF^fiC2uA+s&TL^H#HU>Y;kuaArqG;Y`4quq#Zjg<$yKaD8MjAu(j zUkTarVVg5A(0Q!Ygt)lHzB!e9{*G)Pa;2fx|H`t+yW=;)q}C6g5f0capoh>E#A{({ zKYq8lXSFkv+8+E;-bnjOnsdjoF{dFf;#nhNns|}}S4xyPZbC+rat!@*q#f>+;Jf73q0Q(6iLSIIGhdsyNn#LLkIL0WCBtDsUgKo#u}>*~NJg}} zx1sbgZ2Fh(ce51R8_y2ty>NV8F=76-< zc=>kBh{wCPTF%|iuTrfT z1D9kBos&xINRfW0>6n~g8cU zYif=j__w$FesaA85wbB#0l{ zk90rT5OI3$m}yjPDnw^MuBB-Bx_roGGc6Q{)4{n5S2jrsdDjK5Uv?pFSa{cUR^|zJ z_ws#o_9V~fR=rce^5MHkalX+@Oqdpe+x#3q#lt(jPsBz+lU1~t58fM5RN?%*w$b3( zZY_K*sn`2m@Hixg^h@>o%km*-ku){%2I4k5ON^`1dkwka&#xi-POKdbhQyZmpJze<{P5GX(lfyR?!*HCnOB z!k>$3;@_A*GEihAy=^(Ey!SpqQPbnSO(1LK9tlJ8CO*Sag{RzU#OsCGi*rwD15SMy zABObQMb$#lhNB4aRk$y)OLs=Ox8_u-zJbcs(JJ#jqsCPzi)8!OE3(TW7ssPbKI1h& zD^Pwy5h{@4W@a>v<$JgP%Obg*__d(<^4A>i=?bLSno|qsOq{*uWxHQTl=_S{jc>N} z2Bh^TFcK1(HN~vM?87b4cx}47MYs_y=)hl>_gks!g-I{03$EX#`_l|Z7}ugCO7GVX z+mpnU<57Xd_X*>dzJy^M=}92v%H3x6U(|FS7n7rlpA%78rGoT+4VToQoeKu86L3!r z*Mh~3lAM1lYq|S`&frJyhvW?VtFOOiP3fck?l+L#>O%>25)6?JEq`p{T|3qt28Fnw z!4nO2UTfs+f)==MN`@wDB_0CJ9FmvucK|i5g&?ve^2t=WFj4my>DBZti}ojJIsI^O z%ltsC3yVz0wD}*cHW=4D#Dd$9V|I_6pv|U~T^4_HST9g%mlxhV_VnBzzv!MBqSArd zwMKq+FVv(os^oG$4eqjsm+KpfeJt!wH=6m>OsZsj-1g~PC&a-n%>)nt&yxj?l-94v zg2K7i{BeblajmS4$1d=%FFDn3=>b*|RUTv7Vn|Wh*#k=2dLA!9mpQ!cGz1FHp6&)n zh+Utndg+{&isar@oa|3d;q%m39IfTCN>Ch0rcMU}7sMefc=_1!ey!bz!}w+-!nQvP zd63V`OloLjzd6>~q)7qC98s~uZTBvadnSUR<_!^s_o0nbWzJ2%zI zEidEM3oXLp+bYF$n-iMjJ)$QnuZfm|Ot@>J9zL5{znt1B$1V){x%T);0e(pAb{f`= zjn&;_2^74a7>T=>yZ8mV9;}7W8X3i0Y^6L>#DjPgMrbM?tPghqjKVjl8gQj91&Wu( zJscbsckk2@PxKO=szqmPNL(V9+-?3DMNxd9cM<3lEz!0c-r^Zz=sUFG?kMrm!N@33 zz-+uWWr*KY=ja2$#Hb#nSYBLUS_oO=qm73Xp*avy>10D)8ffT2V3h&0oizj=(+iUi zcBhox@j(VuYH>ze)Zcq*TX*MOZ7QQs_A}GI+>wK?PbI7hX z(Dp7Gx-ktwebTB&doHK-s5v zQFiyCbt)nRR$fl~6DY`bKm$1}i{wQy8Pe4nZAw2N6}j*5ZGF?l%N-NQX9{VR8okCn ztTlZSyDP3_#Fu%=&wy{`1-U+JwEW{2ae<4R7Ar<$U(iQTc-JWA7s8~-;#Y9F_koj& zaRsd~50CwOo7LRP^pr;|{FyhC=XnfhMd6XRY2OP^W`C`rnFRhZpNBhu)a3%^;;Dbl z_BbdD5DaW#(;LcDi!4=AzS%2L(1~?Je+h-OqK(m*R&uOB36f4jYs!JiW9$=@$Pc(~ z58W)hRsf9yFtQvL^~}CI2B(f2yFSoLu%THITP24cnpb5Hy2L%s%f5;}$7WvC00t%c z`-QTt?Fyn*&qOd}+$?ZTE@WzRy8%naw0ki*d%jLULOmz$zW(9++d@@vwmh9u*r)i= zg;s#_Mz-FS0P-RNF&G_gqzJ z;0$afShSmamoIcx(0qI!bj?JJU;$uIf>xm0!{FdXgBEJzHc9UTOsKus~YS z`i)n7wBY3A5pVR9x(_+1W=lft4?<3mOUZVL+?mv4ibmmcbMjOsOT{${*A9C9&j$fE zwWIgGb(=}!=#lYJ@`{-5V2!Yzr~d#4?l^bYP|Bkhf?!SQT}n2=2ljQzzZfP4G|decbwRoxuH`{FcB zZJ8N&dBVqod5^;}Jg4f~nIR|~lA1go555(z08k`9O)QYIui`KNnI5k4S)UYL(qLXo z9LjiLlP+b`{o$IUtSQ#E-15nW-~HnQC?Yv&X_;vkyJx}(j8teyl@p)hEco?+uyJ%( zG_rfwCit!t>5oUSs-ZVH(H`HKl+Vkfp2rpZO0C|&vsRB!PQRLz6+R<*hpWMmlYn-M zM_J0YF91rUF7}CvX{+4~PrLecIOHeC>&~e;x zAYHvPh>UiriBDLe9`bQ94RO8>!Ot*MsWA7Jjz@`Q8WOLPU4z0jtzcm%P(VZ8>|0ssB`iuH4SfelSYqg^^Ah zPV+rWjO0?EGIJ#*?P9b}it0kzY$*R8{!+(y5y;2-KkKT%LQw`X>nst441#HvY8sNkd-l zn){#Kd|{mt~I|U{YnCTAPj3Wc|KF z8g+4OzpWLorQDKJQKh3p6d_NS4X1wKBvO^bl77w3GPxf3#s@r~#gqsNB&UlzP6#&L z{|yKsnZ8v5C0LqoDIo-;u9;;^nF(^V3h)-ijOz4gm+>zy$qbiaU{>KMoVnU_9BVTlqQh@^FQ-Yg6i{0yIY(-jJjs&+Iw!XEx8 zdohMOJz8cdQcj9xQB0h^LDGE^F37?V9*h`tGUX`m$GcJ+!=`s}v#=ZH;d|@y08mxi z@AKc?Q~~yx%S zyqw~YhGmwoep6u93kX?7teMCuMv~k(9Lv=#@TsXIH54yTD!*ERfwM7NMym}+0Vs2{ zWz9%*h1auCXMJ;i_VVvs^1w%FKw^DkS%{hOR zF1|UAV`Vv#j2cEs%(Oz=7<2}xAcrrDtw5t}Rfg*^)bVW!vi%=AP_kHUXn2##olPY>w0!T8T|Cw$A@kvf*f*bJI(IlQgA;0}y+U`lpT+-?PoY{g ztjKMw#%r!pb;q4&*Jt*U>%v@eV( z@nu%gP(VXS=~ncymMbS$|In@M5+EsvFD z9Wny}&)Q{V5=j>S3z3?5t&C-BQfcvfM7F=v7JyQtEt1i#RwZLN{R)4BRt@$8P z5Je~M=rFDn^{s4~fU^MjA(k*`AHSM(pNx8gI8hPD(no{2UAHUzdGu|)l&5K`3w@Yt zKKY&g{x*(HdyQvZAbhz$J{l;M$3Uk>+IJd*Lp^U$tT$yyjUJS+N+%45PH{}m-C93J zCI+LW2JZ}mxWjX z*9{A4KuKa%J;9d^w!tedP!E8EX8Kg=VgS+_wsV(#hq~hVs9y0f&YGHO9~AdRq;*;K zy4GkF{)DVYL%bK#p0`5enwHKHHT#-DjqsRzh-=rL0M&p9@1^+b=^crRr;gAq=)f#A z^mw{h>WD~Uk!xda`NLXYZa0>QDC0W~S#D1r{hMCG&x~Qk8Cn!dI>jd+#1J+P?L0wo zF9k{3<-}kvT;@=xYOrKT<*tHYP#ol-MdP#Lbeu1)~PjT$L^k^r=R^d zM}M^+AWSAIxg~s?e?mepA;u(;P=u zle)sB@0_3UgIJMq1Z+{Oo&hquY<7t27%!hiF~<&aP)78($4|=%3-}d zv?_lLj3*9-{p}1$a7`qJ^y@hIr5@3_$cuPymx!m2VVcEsuBhwW=%KwTW9N(WGhdi+ z`WMMOUgGkyA9pCPZC%OX*%g@r_MfyaP+UKLh!odWDnPE^7st`dP90>L37}>14EP^j zMlnNX-#_G*_Stt}9=!_X87br2J~9x;~sdK7MZQTpGnC~=#Sj&kx5bE z`#vO%O<<*Sd~FKuGI$>zGI5?Li^6!QX>=)$sPCYRqwYz)pLkX=T}Y8=PuNm(f0LSOAP<<^Ej})*vp&zjux;cNBe_e{Z zNm-P4!}H^|`O3=_cPnNGnHyY_o&)T~B;TGeML#yzCR~=XyTpbTMb{hM-__p*-|_SMt^i( z!DCYd{9EpcYz37}#d|h!tlF<^9(q_0vPBw?dKA>`Nfad>4p-@V(PcO0M;{rPJ^h}i zAQ>pTpT$5WCRG;jz+KedCYj_{R~kB9QGDOVY8=1)q7$<@5T2)gx5z1U0Hn8{6(wX)tKd6&e?}!5U5ijR9+WSIFGZ)0fq|ViN7ElnutmWEQ|f0QKF9~UT!ni0Eddk)gX6=aJ}`GLhHe)`3Xm@&q`HiL!sjO2tqYE-0v%AAPt16|rdY&5~%)K1B$X2vi8tp;9BwtLky%a!NTo_e> z;v5qrn@IvrAVE8s=W5E?4f@Ly3XFq^8c$Mp%Zcu}><}W=U#6pUg*mWkIu_p0r_jlU6d-fet+=XS~6K|L9*r_zJ;`1Dm z&~3_3V7m{DGj;Ab)Qcam7{@sV8d}>SXG47neo8oaGz>imU(r2-hgVw9Xk4F?iq>#% zH^C^)nB|#CjeOs0(YIa}yJ*bQ)?@+`3?(PSC#KYqNHwAw!==Cve7s2K27V#$0Lzhr ztHHH%Euhw4FC5BF%t}&yY*=E<(iWH?r&@d!V z@(lRNFo-DE>Z6s^UyK@~#U?%(Au7*}@|05sB%MuPT0GhhNozg;St?DBli4#l36)ts z{~l1G@J;XTxwbQFos{nDBKEFAY$2?*yo*nJ1$g7pW>gfJ7HCQ|5|GT$00|;I$$xX< z8MfCyV>v0gLO?xq9Y=z>5GQq`bZMNtWt4Mvab|Wg=Bmp;kDYYZI5@HtF&f&^qGvB3 zeX!fgbHu4*dQhTrb1%+aoTVXFXkI%ojEphtSjv~%;|T@}8rcPfeyi)%vS&EV&GShX zo^&VcxVqGvYjBZnH&H{hsJ~H1q`)5js5g=>oe_@l()iY2HGgb3dUyYA9eWC64(HnA z^v5ah84KIYgNA;f9-@AmcuormM|X0k1~kLoQypECh+b{BGJ>ZsZc22W8q&RXl~-gj z^*?i;ed~Z`PxojLd53+E9TbmQd$`a~lM5tNK53$G%PK#sJGARlwu~`0X%M(qkRXOX z6Z>Jm$h{fy-G;#W55kr_meN=*E{0$vx&3@#|81g4Rcm)rX^$QeihRR7docq0x{mb) zfV9JLPK#|mw8CLnzKmtV z*oju5z(j2XUwvqB=PisjFaP%BrTDjk|Cx9eUqgl0_?Y{D8RTe>XI^J07?d%ckfEJv z^(Nky*E(O5sK7=AP0Gl3tg`*`JyuLqBmC;7FXqyxP@=cy(zs=nVc4vutxBQgs(c{>Q6 zu9i{@t((p&byAUTn0^=jLwdJL5x>)ki0G*cesh_%aXfWpH%})ppLaQywj4vvD}cN6 zF#G`(=Y}!Mm&bk6Ih70w&XXLHP7Q3TFZ-Ja+8e+hBnaIyI$kueFB0mSsZYVd^q7** zKx&IFb)_<)26e;o0RR#gk-z@NBsc?LniSFouYK7gafl*+D{GN2f`0(I*C6;hBvSu8 zDnu%h-N~o*wFw}#*=+(OSW6xi={={$dJxs1xV*RhJ$4e7`Q2A8wZAZjMiv&8Iy#v9 zJ;8DJ*3)~AVvMvbf=iA$uNrx#$Ay=JZ+1jT=CHhh4O8%B(-+s;9KClIbO97OKPGb$ zxQ;9f-!rlrySeZXuNnrB_b}x-yXug9J|F63ZEYjhMD7su$Nb_jbB-aMIf#H^m2P#3 zrMk7O&2LgG!4Rs_;bQ-{ zJJTrb0Oi!jX?T13Hx)Rgc2$-r>`UlYNTwt3adz+t!G74|ojj&3%S`a)hnxeJ76uIo zk}yzDKV5FHZtDQPyQ*8XOlCXR?3aR_qMR`?4S0gi=Slm*jE^5pcR<6?Y-6Y%Q42FZ#BVpc&lr6AW#>^b!BkE^rH(ocpW^-Qk~y zmtXX^i@T7}OW3J+Wg(E_Bx_@LxAIT2oA5_37fTQM=MXMuSXKYIt3iFEO(+se?G_e6 zE5wz`m_xq9+B8Ps)l&O-=C}N~xtRAkjH$&-rEyG%+U**X&u&X&T(a=3Byl7!wt&6@Ii#0p@1!6Yf77)H_tSQcN%gR3>Ul`y>_3~ zWK6HZblyAgQO=#FYDDtRICMEo=F;T1vqfyyWT*RiX;WHiyg#>RLz4OvXsCGl*=KC* zY>@pJKDlHJ=@K<^)h;i6Wwy7mehqo||-QZ7)QJ zhT$CeIryXG`^f^x^L|q{Gmh*l@->ZdHWnvo$3jziF8Kf4=*aF#FG8F+@ceiwZFr6uOU+jp?OY{X++Py@S*1y{R=A`ID5ov<8@e zKD#n|ajRV-0uv})JRIr6=-+$b5dP=xmu6V7waByLLlVEX%CP+#Uh3kSX5|l%_b0PR zf1<}{BbcP2zkQ0Mv>ots`f)C~b(74&8{6ED!~-8BzagRp-)@s1d4QI#ZimV`1;JY# zf-i#|5KP}XzQoQZJpr1)TBCO=KtfYBG|F;FqIP|+G);dbw`0$=Q6pO_RWDs_`WGBa18+jZ()^boM{-at z^&ikXP;UKH5&haHi+*qF5?=AB>Y$_~2n(I8z4f+faxg&HQ2pb`AYHP`7614Z&IWgU za)DN5SiUF$_M3HD5wk8Khm`H5#Pw%&T5{E1y+S7SRS!f zdruISPuIMKOf`s8-!&6GfE-{82hus74%)K!j~F%7`0V9OFdz+jZ$6(VxO0D{!fwzv zJNw2J9$?--FuZg{xkfa|(F9~nZG!{=Oo`Z9tt^iBa@uo+RN1fXS32zNeZYB3uux#4 za_q}TRn>MNWP96z?F#_uXJbsn!&6f+cUL{m!^5klZ3mSafpPr|F&SW#M?ub1&EW3;(WvGg0t!k-qc+Qp14DNLZ;nMD^ z&epGC+upieyJ0t3PQx@L*!DSj&59y`_9SxLswkYA-ZDGn<_f!A`SH5rnOLisJFr|I zrz*KbK^^uq%rk9{qpi^PmykEb|KbSyRN zF07u*NH_sZsgoW19{{hk1qd5CJCek3#N*@N)(ldmWklUZMu%?0!P}>qpx!u1 z^V;oDpKoV{o8fd48>@3R4y%1eKIxaCp%~gCl@7ixszhHt>$JT2BZqWi&W(2$Qq?MxEU{g~f~9KmUi}p6SxemRH_)z1iiTC-cxGPdP+hsF3~LZ1V*wZ+m7!g3u<0B zXiRSZpO4vzH&67aev7z;d?UpKOJ0+hK2(L)--sv2pln)W6qoLJwV`7|msnRha(ZrT z{hT{(04YyCXEfW~?VZA+P8*x7QU=q(QSZM1{ocU)Elp4D;&C$cWjl@InDf&JpRVCX zRTd_0iD)lruhygM&`@>bN&V|n?}a5b-uFKF@mg8Wu&hkwd{9j7>=Bx3k8iK=vx;ut zxFUnO$`~lc%=U-(M+e><2Vz+^FY#PCYK7gjHTQN%+M0wJLf?mMj)J@t?i~LL`q%p( zmzf#5J)#V}fW2?&mX`qq5gUB#zQ5?q{fZz)0L*eoZ~aZ7l-1y(N>8^;GNf@Zg@~SI z`(m%$^ffG(HPa{o@orXU=7Cc8>~1yK|HoC?P!i&y_D1eVZ`~3{AId!fJ9V$m=Zo~Y ze$~BP&PJp?BXl9cw;i1d*liEmOnPhCT+T{qQciiq!wW$<4E+FCG`~|pR~u?BJ-~}L zX8&N)eg5r1eQ`|jA6b{v_)a8}{^*f+Ml;mzN7b0wKKB%*(jty!Gs^u-^PS@*411(7 z^`w@s?$ic?S=3DQ;?S6zs{ia0$+w;UhBpa(`{T%@VM5>`utJNYE*)s%npRmSsNWdF zO_4PjhTh&<=;IAUYp-4OGijnpphg7y+AmZ|iUCc@2T%;_RikpZKl#M0d^GN(jLz~w zoR7m|*suH^VdpDrXr}$=|G7;vcE&9hV(vK#6Ex{2{8#Iua1D4uEFr@JR zw1SR!Y?W_&IYtte98O)c8w_cTZSxSGmGoK>CHj-Z8tm+VXnj=IC-dody9c$e-DGY6 ztw?LM0wc>Ry7yvSM6*V;oV3(|L}cM$T4drcqSx;GbD0PNI4#6nndjlxye?j`2zj7~*b3Of`%dWU#d+h+BCrEi&J1E8Os zMOxkBCX|#*(+b>VYIi1O#02{`{ccM|4p;^H``_+W&JeV-9PfFK@R#d^8f1sl!2@HK z$RR}Idpq!Gcw7i^+}&OS4%&r~|pmPzky`VdDir`Q+o;SGaW0GKnqdBIaa zRBO{@x{(HS&C27ylcaUtHY~g({u50vhGc5`%+hND^Z$Z)G}JrQ*Vo@xYjxzboIwB; z;Uz(N;k*m*Hv^*4h)-!zbRsjO-X6s+X?nclictXw*x_zHh_{(ZE_VPG>O#zR+H4i_ z^71>M>I&kLtHEL0*Rz8=sgNw`i9S&YNw$q|RCq!*r(_1)S(=Dm@~QG& zFkYsvu^DW+A%cC7My!0U6Cy??ey2vbRLZHsPWmx0A85Xu8d9Dop?8@kf)%{U-Vtj= z+W5pUE=4cjv>q7;Z1uW^_?UP_!k4#_==SQp<W4!KBkX(KO4vH5QJX;mB2hyxwVTJ2yyM%YsSQ8 zB1}t3FLMFktInSW^}m~#tk?=|2VA>1cvJ?ON+UyGVxn?nG7v$El0x#15;i*ckL#n9 z397aB;WQ%tHb^W=Pap=2{OoW^nq zZ|x3fux{{KzxJsR{3IE>PtW2`w{}B615f(jHw|kExKsZ@7c}8x~#p#x;(v~=|OcOs~JCc z#ql&}Yw5{GsRQe9I$P#}UL{Ud8NN+8>M&6gPdxCp%yO+Yf*Z=c{h{OfF=Yp=ie`py z_h6IBao5PH_E$COmn0=npKcJMFYiEx#V)w)2?MN_KhWIn;&)}R%Cw8i(M4HUj}~)# z_&4{~w$EdUwvApjZ>wbyX==?Js#e{}h5xDRlG5alJ*U^_ti(I?a-TGx`~J1$tB0?; zTuli*7G!kJ^>&r2XGgd~`8nS-D2Y3jl16bC^OiM~R^4i+mT%0{5?Mho-LyVYKQ?M& zZ}0VL5z3r}pI#BOtN!Jf;7(CRa*&1#ZF&3lNYg6Jgz%_m`ZY2e=&6ElP2hiYq7T_hHyLg zguQ-^DUrOpFuc)!2VVVB>zsSyiBqBNHEwBAfTpCLy$n*D^B1YDecNdAPExOnmjUU= zi`g0~&Zqx!JpFwufob$;eC4B6lHqdzdDCv{d+P&Afa8zE>9ZoUKIP=7Cp`eb_xSM( z+8~7}@pTUA=JXbc!mmmn>*9eXS8OdOPM~DHWW~4S;GziuLMJXJ1{yXPiBX@CQ~~_?gWjOH=XsHKrpNaLtRberiH2#lLZ@;-O2Nf-Wvhkp6^4%5J*B= zLl@(&ui;@z=>jfuGPo$(I*>TpElns*Wiuvli|R`In&j=j#MQU==3Iafy$*|#=*6Y} zCP4SQY={DBYH+wZ_u=01+~=msoSJ@=e?z3T^LU>92{#*g`?=nGe{(G<{>ec7fr6g` zsR2r=E~oA<(v---&M@(lwU@p(y*|BPZ#H-HtldguSlG}Tmt>#VM?8ls_|-1O$MPz8 zM@oKA;D7nK?nqDxpJ5|qLWjVLq4TyX#ev&!*(OPk=EYPc5z2ottM|zYRL9MqZS&!R zhcCJ>I5O}Xa9n1-x{%JfVZKSD3wOlS1H|rb&*5z0%pA4l@;^8Vm=kEm6@#FW zbZ*KYewH|st99|8z2S{o~P3Ol>V06?0ZF_5eMHarz-xkHNLCIq< z=MSjM+B}7}W%D6)$M*doy=g^X!v{?9r$I^`WQXHHikPWSSK&l!Q6Id$+p`kQN9eqE z>^$BtWc;-T;U*0>f%=7FVkb;RFGM;&v(ewP@Z{+F9)e26ZKdWf2N@Hp&-E{sIG@Iy zUo;9}g6ICCi#;o?4xk&gEFK%nDST$<^k40Z46Cl0nkD4swiq!0(Cd|A|jl zdTY_S?VLBW0j|cY6?W}ZfT5C8$sgtYZz%Q9!A>M%wn<{-!TDAapq{eDZs$lJ-L2I4 z_tpJnmEPLNQaRU%@y)IP;IRajBA*!0tJRNHra%7o6Q8)B8;f`zw{GK*WdOq6b^7#O zz#rChW#<8tb+Z3@{`0$(KG=X04ILY^;L%Dd;eb)XKPa&NAvGv zX(zq@0M+odiB{O8A7DoNg-r9m+czw%Cucrs{J`3{n@Zz!zUe8X(m<91LEB&W;|4w# z`hU^U=d1q`tz*A(1kb(vBAd-t{QH`tN%pc)y+T*f4`Z3e#cAx*Ts39v-EeP{y#r@*8looZrg_ul~6Bk$K?% E0zXbu1ONa4 literal 0 HcmV?d00001 diff --git a/examples/demo_lightmonitor/docs/BoardsManager_WioTerminal.png b/examples/demo_lightmonitor/docs/BoardsManager_WioTerminal.png new file mode 100644 index 0000000000000000000000000000000000000000..48e2cd5d19343719cb734ec3f72bba333a630d6a GIT binary patch literal 91346 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%0Dl6bBL>ijwv$|iC&tmVQ{vhrN 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
}{DdNdZcV#v#(7{Lxq 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�)yA>&ipfrf}PZrT}Cv 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 literal 0 HcmV?d00001 diff --git a/examples/demo_lightmonitor/readme.md b/examples/demo_lightmonitor/readme.md new file mode 100644 index 0000000..fd61e36 --- /dev/null +++ b/examples/demo_lightmonitor/readme.md @@ -0,0 +1,1189 @@ +# Azure RTOS ThreadX for Arduino 102: Message Queues and Mutexes + +Microsoft's Azure RTOS ThreadX is [available to use](https://aka.ms/hackster/ThreadX/hardware-license)! We want to introduce you to thread communication and synchronization in ThreadX so you can use this industrial-grade RTOS in your Arduino projects. + +**Estimated Time:** 1 hour +- **Setup:** 5 min +- **Part 1:** 15 min +- **Part 2:** 15 min +- **Part 3:** 15 min +- **Part 4:** 15 min + +**Estimated Cost:** $ of a [Seeed Wio Terminal](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/) + +**_IMPORTANT_:** Please view the [full license disclosure](https://aka.ms/hackster/ThreadX/full-license). ThreadX is available to use only for non-commercial and evaluation purposes, with the exception of full use for the [licensed hardware](https://aka.ms/hackster/ThreadX/hardware-license). + +**Table of Contents:** +- [Azure RTOS ThreadX for Arduino 102: Message Queues and Mutexes](#azure-rtos-threadx-for-arduino-102-message-queues-and-mutexes) + - [Introduction](#introduction) + - [What is covered](#what-is-covered) + - [Prerequisites](#prerequisites) + - [Setup](#setup) + - [Part 1: Thread design and creation](#part-1-thread-design-and-creation) + - [Deep Dive](#deep-dive) + - [Part 2: General logic implementation](#part-2-general-logic-implementation) + - [Setup implementation](#setup-implementation) + - [Thread logic implementation](#thread-logic-implementation) + - [Part 3: Message queues](#part-3-message-queues) + - [Part 4: Mutexes](#part-4-mutexes) + - [Test the application without a mutex](#test-the-application-without-a-mutex) + - [Test the application with a mutex](#test-the-application-with-a-mutex) + - [Further Reading](#further-reading) + +## Introduction + +This tutorial is part of a series introducing you to multi-threading with Azure RTOS ThreadX for Arduino. The first tutorial [Azure RTOS ThreadX for Arduino 101: Threads](https://www.hackster.io/485734/azure-rtos-threadx-for-arduino-101-threads-963a8d) introduced thread creation and execution in an Arduino environment. This tutorial will demonstrate thread communication and synchronization via a [Wio Terminal](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/) light-monitoring app, complete with user interaction and LCD screen output. + +**_Azure RTOS_**: A Microsoft development suite for embedded IoT applications on microcontrollers (MCUs). [Azure RTOS](http://aka.ms/hackster/azurertos) **does not** require [Azure](https://azure.microsoft.com/resources/cloud-computing-dictionary/what-is-azure) to run. + +**_Azure RTOS ThreadX_**: One component of the Azure RTOS product offering. [ThreadX](https://aka.ms/hackster/ThreadX) is the real time operating system (RTOS) designed to run on MCUs. + +**_Azure RTOS ThreadX for Arduino_**: A port of Azure RTOS ThreadX to Arduino as a library. Please visit [AzureRTOS-ThreadX-For-Arduino](https://aka.ms/hackster/ThreadXForArduino) on GitHub for the [source code](https://aka.ms/hackster/ThreadXforArduino/src). + +### What is covered +By the end of this tutorial, you should understand the following: + +**Terms**: message queue, queue control block, mutex, mutex control block + +**Actions**: How to communicate between ThreadX threads using a message queue; How to synchronize ThreadX threads using a mutex + +**Final code**: View the full ThreadX multi-threaded light-monitoring example on [GitHub] (need to complete link). + +### Prerequisites +- Have the [Arduino IDE 2.0.x](https://www.arduino.cc/en/software) installed. + + > **NOTE**: Although this tutorial uses the new Arduino IDE 2.0.x, Arduino IDE 1.8.x may still work. + +- Have a [Seeed Wio Terminal](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/). +- Understand the **Terms** and **Actions** covered in [Azure RTOS ThreadX for Arduino 101: Threads](https://www.hackster.io/485734/azure-rtos-threadx-for-arduino-101-threads-963a8d). + +_The following was run on Windows 11, Arduino IDE 2.0.3, and the Seeed Studio Wio Terminal._ + +## Setup + +**Estimated Time:** 5 min + +1. Open the Arduino IDE. + +2. Install the Azure RTOS Arduino library. + + - Navigate to **Library Manager** in the left toolbar. + - Search for **'Azure RTOS'**. + - Install **'Azure RTOS ThreadX'**. _Be sure to install the latest version._ + + How to install the Azure RTOS Arduino library using the Arduino Library Manager + +3. Install the board package for the Wio Terminal. + + - Navigate to **File > Preferences** + - Add the following to **Additional boards manager URLs**: + + ``` + https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json + ``` + + How to add the board package URL for Wio Terminal + + - Navigate to **Boards Manager** in the left toolbar. + - Search for **'Wio Terminal'** + - Install **'Seeed SAMD Boards'**. _Be sure to install the latest version._ + + How to install the board package for the MKR WiFi 1010 using the Arduino Boards Manager + +## Part 1: Thread design and creation +This section describes the application design and task breakdown. We will then create a thread for each task. + +**Estimated Time:** 15 min + +The application will perform the following: + +- **Light sensor:** Read input. LCD updates. + - Upon light threshold: Sound buzzer. LCD updates. +- **5-way switch press:** Silence buzzer. LCD updates. +- **Button A press:** Increase light threshold. LCD updates. +- **Button B press:** Decrease light threshold. LCD updates. +- **Button C press:** Reset light threshold. LCD updates. + +The task breakdown can be designed in different ways. One approach is shown below and will be used to design the threading. + +- **Task 1:** Light sensor control. +- **Task 2:** 5-way switch press control. +- **Task 3:** Button A control. +- **Task 4:** Button B control. +- **Task 5:** Button C control. +- **Task 6:** LCD control. + +A separate thread will be created for each task. Threads for tasks 1-5 will communicate to the LCD thread via a **_message queue_**. Because threads for tasks 3-5 all write to the same resource (`light_threshold`), a **_mutex_** will be used to control thread access to the resource. + +> **NOTE:** This is a very simple application and could be implemented with no mutex, a single thread for all buttons, or even a bare metal single threaded loop. The primary purpose of this application and tutorial is to demonstrate communication and synchronization concepts. If your project requires more processing or the logic grows significantly, you may find an RTOS improves your application's responsiveness and code maintainability. Your design choice! + +**Create the six threads:** + +Use [Azure RTOS ThreadX for Arduino 101: Threads](https://www.hackster.io/485734/azure-rtos-threadx-for-arduino-101-threads-963a8d) for reference. + +1. Include the Azure RTOS ThreadX library header file `tx_api.h`. +2. Add thread stack memory and a thread control block for each thread. +3. Define a thread entry function for each thread. (You do not need to fully implement this yet.) +4. Add `tx_application_define()` and create each thread with `tx_thread_create()`. Use the priority levels shown in the code below. +5. Add `tx_kernel_enter()` to `setup()`. + +### Deep Dive + +
Code +

+ +``` +#include + +#define THREAD_STACK_SIZE 1024 + +TX_THREAD light_sensor_controller_thread; +TX_THREAD switch_press_controller_thread; +TX_THREAD button_a_controller_thread; +TX_THREAD button_b_controller_thread; +TX_THREAD button_c_controller_thread; +TX_THREAD lcd_controller_thread; + +UCHAR light_sensor_controller_stack[THREAD_STACK_SIZE]; +UCHAR switch_press_controller_stack[THREAD_STACK_SIZE]; +UCHAR button_a_controller_stack[THREAD_STACK_SIZE]; +UCHAR button_b_controller_stack[THREAD_STACK_SIZE]; +UCHAR button_c_controller_stack[THREAD_STACK_SIZE]; +UCHAR lcd_controller_stack[THREAD_STACK_SIZE]; + +void light_sensor_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + while(1) + { + + } +} + +void switch_press_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + while(1) + { + + } +} + +void button_a_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + UINT status; + + while(1) + { + + } +} + +void button_b_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + UINT status; + + while(1) + { + + } +} + +void button_c_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + UINT status; + + while(1) + { + + } +} + +void lcd_controller_entry(ULONG thread_input) +{ + (VOID)thread_input; + + while(1) + { + + } +} + +void tx_application_define(void *first_unused_memory) +{ + (VOID)first_unused_memory; + + tx_thread_create(&light_sensor_controller_thread, "Light Sensor Controller Thread", + light_sensor_controller_entry, 0, light_sensor_controller_stack, THREAD_STACK_SIZE, + 0, 0, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_thread_create(&switch_press_controller_thread, "Switch Press Controller Thread", + switch_press_controller_entry, 0, switch_press_controller_stack, THREAD_STACK_SIZE, + 8, 8, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_thread_create(&button_a_controller_thread, "Button A Controller Thread", + button_a_controller_entry, 0, button_a_controller_stack, THREAD_STACK_SIZE, + 8, 8, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_thread_create(&button_b_controller_thread, "Button B Controller Thread", + button_b_controller_entry, 0, button_b_controller_stack, THREAD_STACK_SIZE, + 8, 8, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_thread_create(&button_c_controller_thread, "Button C Controller Thread", + button_c_controller_entry, 0, button_c_controller_stack, THREAD_STACK_SIZE, + 6, 6, TX_NO_TIME_SLICE, TX_AUTO_START); + + tx_thread_create(&lcd_controller_thread, "LCD Controller Thread", + lcd_controller_entry, 0, lcd_controller_stack, THREAD_STACK_SIZE, + 4, 4, TX_NO_TIME_SLICE, TX_AUTO_START); +} + +void setup() +{ + tx_kernel_enter(); +} + +void loop() +{ +} +``` + +

+
+ +
What is going on? +

+ +The code above demonstrates how to create a threading structure for an Arduino application using Azure RTOS ThreadX. The priorities for each thread are described below. _Feel free to experiment with and customize the priority levels and priority thresholds on the finished application!_ + +- **light_sensor_controller_thread:** + + This thread is the highest priority **(0)**. This means the incoming sensor data and processing is more critical to perform when the thread is in a ready state than any other thread in the application. + +- **switch_press_controller_thread, button_a_controller_thread, button_b_controller_thread:** + + These threads are the lowest priority **(8)**. Reading a button press input is not unimportant. However, it has been chosen to be the least prioritized of the different threads when they are in a ready state. + +- **button_c_controller_thread:** + + This thread has a priority level just above the other buttons **(6)**. The reason for this is to demonstrate the effect of a mutex. The priority level could have been set to match the priority level of the other button threads (8). _Try changing this priority level on the finished application and see what happens!_ + +- **lcd_controller_thread:** + + This thread has the second highest priority **(4)**. It is not as critical to run when in a ready state as the environment sensor input and processing is. However, it is important to give timely feedback to the user. Dropping the priority of this thread to match or be below the button threads could result in an LCD update lag for user input. _Try changing this priority level on the finished application and see what happens!_ + +

+
+ +## Part 2: General logic implementation +In this section we will implement `setup()` and the basic application logic for the light sensor and button control threads. + +**Estimated Time:** 15 min + +### Setup implementation + +1. Include the LCD's required `TFT_eSPI.h` library and add an instance of its data type `TFT_eSPI`. + + ``` + #include + ... + TFT_eSPI tft; + ``` + +2. Setup the serial port, light sensor, 5-way switch button press, buttons A-B-C, buzzer, and LCD. For more information on these hardware features, please visit Seeed's [Wio Terminal documentation](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/). + + ``` + void setup() + { + /* Setup serial */ + Serial.begin(9600); + + /* Setup environment light sensor */ + pinMode(WIO_LIGHT, INPUT); + + /* Setup user controls */ + pinMode(WIO_5S_PRESS, INPUT_PULLUP); + pinMode(WIO_KEY_A, INPUT_PULLUP); + pinMode(WIO_KEY_B, INPUT_PULLUP); + pinMode(WIO_KEY_C, INPUT_PULLUP); + + /* Setup buzzer */ + pinMode(WIO_BUZZER, OUTPUT); + + /* Setup LCD */ + tft.begin(); + tft.setRotation(3); + + tx_kernel_enter(); + } + ``` + +### Thread logic implementation + +1. Add a global `light_threshold` variable and initialize it to a default value. + + ``` + #define DEFAULT_LIGHT_THRESHOLD 200 + ... + int32_t light_threshold = DEFAULT_LIGHT_THRESHOLD; + ``` + +2. Implement **light_sensor_controller_entry()**. + + ``` + while(1) + { + /* Read light sensor. */ + int32_t light = analogRead(WIO_LIGHT); + + /* Update LCD. */ + // To be implemented. + + /* Check light threshold. */ + if (light >= light_threshold) + { + Serial.println("light_sensor_controller: Threshold reached."); + + /* Turn on buzzer. */ + analogWrite(WIO_BUZZER, 128); + + /* Update LCD. */ + // To be implemented. + + Serial.println("light_sensor_controller: Buzzer turned on."); + } + + /* Self-suspend until next sensor read. */ + tx_thread_sleep(TX_TIMER_TICKS_PER_SECOND); + } + ``` + +3. Implement **switch_press_controller_entry()**. + + ``` + while(1) + { + /* Check if 5-way switch is pressed. */ + if (digitalRead(WIO_5S_PRESS) == LOW) + { + Serial.println("switch_press_controller: Switch pressed."); + + /* Turn off buzzer. */ + analogWrite(WIO_BUZZER, 0); + + /* Update LCD. */ + // To be implemented. + + Serial.println("switch_press_controller: Buzzer silenced."); + } + + /* Self-suspend until next button check. */ + tx_thread_sleep(15); + } + ``` + +4. Implement **button_a_controller_entry()**. + + ``` + while(1) + { + /* Check if Button A pressed. */ + if (digitalRead(WIO_KEY_A) == LOW) + { + Serial.println("button_a_controller: Button pressed."); + + /* Increase light threshold. */ + light_threshold = light_threshold + 5; + + /* Update LCD. */ + // To be implemented. + + Serial.print("button_a_controller: Light threshold increased to "); + Serial.println(light_threshold); + } + + /* Self-suspend until next button check. */ + tx_thread_sleep(15); + } + ``` + +5. Implement **button_b_controller_entry()**. + + ``` + while(1) + { + /* Check if Button B pressed. */ + if (digitalRead(WIO_KEY_B) == LOW) + { + Serial.println("button_b_controller: Button pressed."); + + /* Decrease light threshold. */ + light_threshold = light_threshold - 5; + + /* Update LCD. */ + // To be implemented. + + Serial.print("button_b_controller: Light threshold decreased to "); + Serial.println(light_threshold); + } + + /* Self-suspend until next button check. */ + tx_thread_sleep(15); + } + ``` + +6. Implement **button_c_controller_entry()**. + + ``` + while(1) + { + /* Check if Button C pressed. */ + if (digitalRead(WIO_KEY_C) == LOW) + { + Serial.println("button_c_controller: Button pressed."); + + /* Reset light threshold. */ + light_threshold = DEFAULT_LIGHT_THRESHOLD; + + /* Update LCD. */ + // To be implemented. + + Serial.print("button_c_controller: Light threshold reset to "); + Serial.println(light_threshold); + } + + /* Self-suspend until next button check. */ + tx_thread_sleep(15); + } + ``` + +7. Wait to implement **lcd_controller_entry()**. + + This thread will be implemented in the next section. + +## Part 3: Message queues +In this section we will implement a **_message queue_** and send messages from the first five threads to the LCD thread. + +**Estimated Time:** 15 min + +1. Add queue stack memory and a queue control block. + + ``` + #define QUEUE_STACK_SIZE 240 + ... + TX_QUEUE lcd_queue; + ... + UCHAR lcd_queue_stack[QUEUE_STACK_SIZE]; + ``` + +
What is going on? +

+ + Sometimes one thread needs to pass information to another thread. + + A **_message queue_** is the primary way threads communicate with one another in ThreadX. A message queue requires stack memory to store the messages sent until they can be read be the receiving thread. We define the stack size to be `QUEUE_STACK_SIZE` bytes and use the array `lcd_queue_stack` to allocate the memory. Please see [Microsoft Learn's ThreadX Chapter 3: Functional Components of ThreadX](https://learn.microsoft.com/azure/rtos/threadx/chapter3) for more information on [message queues memory area](https://learn.microsoft.com/azure/rtos/threadx/chapter3#queue-memory-area). + + A **_queue control block_** contains specific data for the queue. `TX_QUEUE` is the ThreadX data type for a queue control block. Please see [Microsoft Learn's ThreadX Chapter 3: Functional Components of ThreadX](https://learn.microsoft.com/azure/rtos/threadx/chapter3) for more information on [`TX_QUEUE`](https://learn.microsoft.com/azure/rtos/threadx/chapter3#queue-control-block-tx_queue). + +

+
+ +2. Define the struct `lcd_message` and the enum `lcd_message_type`, which is used in the struct. + + ``` + enum lcd_message_type + { + lcd_message_undefined, + lcd_message_light_value, + lcd_message_light_threshold_reset, + lcd_message_light_threshold_increased, + lcd_message_light_threshold_decreased, + lcd_message_light_threshold_reached, + lcd_message_buzzer_silenced, + }; + + struct lcd_message + { + lcd_message_type type; + int32_t value; + }; + ``` + +
What is going on? +

+ + The struct `lcd_message` holds all the message information that our application threads need to communicate to the LCD thread. + + The size of `lcd_message` will determine how many messages can fit within the message queue stack memory. Without going into detail, the size of an `enum` is typically 4 bytes. Adding to the size of an `int32_t`, the size of the `lcd_message` struct (tested on the Wio Terminal) is 8 bytes. Because the `QUEUE_STACK_SIZE` is defined to be 240, the message queue can hold up to 30 messages. + +

+
+ +3. Create the queue with `tx_queue_create()`. Add this function call to `tx_application_define()`. + + ``` + void tx_application_define(void *first_unused_memory) + { + ... + tx_queue_create(&lcd_queue, "LCD Queue", sizeof(lcd_message) / 4, lcd_queue_stack, QUEUE_STACK_SIZE); + } + ``` + +
What is going on? +

+ + [`tx_queue_create()`](https://learn.microsoft.com/azure/rtos/threadx/chapter4#tx_queue_create) creates a queue with specified arguments. The arguments used in this example reflect the following: + + - `&lcd_queue` : Pointer to the defined message queue control block. + - `"LCD Queue"` : The message queue name (i.e., pointer to the name). + - `sizeof(lcd_message) / 4` : The size of each message in the queue. Message sizes can range from **1** 32-bit word to **16** 32-bit words. Because the size of `lcd_message` is 8 bytes, `sizeof(lcd_message) / 4` represents **2** 32-bit words. + - `lcd_queue_stack` : Pointer to the start of the message queue's stack. + - `QUEUE_STACK_SIZE` : Size of the message queue's stack in bytes. + +

+
+ +4. Add `tx_queue_send()` to the five threads that will send a message. + + ``` + void light_sensor_controller_entry(ULONG thread_input) + { + ... + /* Update LCD. */ + lcd_message message = {lcd_message_light_value, light}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + ... + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_reached, 0}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + ... + } + ``` + ``` + void switch_press_controller_entry(ULONG thread_input) + { + ... + /* Update LCD. */ + lcd_message message = {lcd_message_buzzer_silenced, 0}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + ... + } + ``` + ``` + void button_a_controller_entry(ULONG thread_input) + { + ... + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_increased, light_threshold}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + ... + } + ``` + ``` + void button_b_controller_entry(ULONG thread_input) + { + ... + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_decreased, light_threshold}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + ... + } + ``` + ``` + void button_c_controller_entry(ULONG thread_input) + { + ... + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_reset, light_threshold}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + ... + } + ``` + +
What is going on? +

+ + [`tx_queue_send()`](https://learn.microsoft.com/azure/rtos/threadx/chapter4#tx_queue_send) sends a message to the message queue. The arguments used in this example reflect the following: + + - `&lcd_queue` : Pointer to the defined message queue control block. + - `&message` : Pointer to the message being sent. + - `TX_WAIT_FOREVER` : This wait option causes the calling thread to suspend if there is no more room in the queue. Once a message in the full queue is read by the receiving thread (freeing up space), the calling thread can complete its send operation and continue. + +

+
+ +5. Add `tx_queue_receive()` to the LCD thread, which will receive the messages. + + ``` + void lcd_controller_entry(ULONG thread_input) + { + (VOID)thread_input; + + lcd_message message = {lcd_message_undefined, 0}; + + while(1) + { + tx_queue_receive(&lcd_queue, &message, TX_WAIT_FOREVER); + } + } + ``` + +
What is going on? +

+ + [`tx_queue_receive()`](https://learn.microsoft.com/azure/rtos/threadx/chapter4#tx_queue_receive) gets a message from the message queue. The arguments used in this example reflect the following: + + - `&lcd_queue` : Pointer to the defined message queue control block. + - `&message` : Pointer to the location of where to copy the message. + - `TX_WAIT_FOREVER` : This wait option causes the thread to suspend if there is no message available to be read from the queue. Once a message is added to the queue, the thread can complete its receive operation and continue. + +

+
+ +6. Implement logic to display data to the LCD. The defined functions will be called by the LCD thread. + + ``` + #define LIGHT_VALUE_STRING_SIZE 20 + + TFT_eSPI tft; + TFT_eSprite img = TFT_eSprite(&tft); + ... + char light_value_string[LIGHT_VALUE_STRING_SIZE]; + ``` + ``` + void setup() + { + ... + /* Setup LCD */ + tft.begin(); + tft.setRotation(3); + lcd_draw_background(); + lcd_draw_light_value(""); + lcd_draw_alarm(lcd_message_undefined); + itoa(DEFAULT_LIGHT_THRESHOLD, light_value_string, 10); + lcd_draw_light_threshold_value(light_value_string); + ... + } + + void lcd_draw_background() + { + tft.fillScreen(TFT_NAVY); + + img.setColorDepth(8); + img.createSprite(300, 220); + img.fillSprite(TFT_BLACK); + + img.fillRoundRect(0, 0, 300, 220, 15, TFT_WHITE); + + img.setTextColor(TFT_NAVY); + img.setTextSize(2); + img.drawString("Light: ", 20, 20); + img.drawString("Light Threshold: ", 20, 140); + + img.pushSprite(10, 10, TFT_BLACK); + + img.deleteSprite(); + } + + void lcd_draw_light_value(char* value) + { + img.setColorDepth(8); + img.createSprite(80, 60); + img.fillSprite(TFT_WHITE); + + img.setTextColor(TFT_NAVY); + img.setTextSize(3); + img.drawString(String(value), 0, 0); + + img.pushSprite(55, 70); + + img.deleteSprite(); + } + + void lcd_draw_alarm(lcd_message_type message_type) + { + img.setColorDepth(8); + img.createSprite(140, 95); + + img.setTextSize(3); + + if (message_type == lcd_message_undefined) + { + img.fillSprite(TFT_WHITE); + img.drawString("", 0, 0); + } + else if (message_type == lcd_message_light_threshold_reached) + { + img.fillSprite(TFT_WHITE); + img.fillRoundRect(0, 0, 140, 95, 20, TFT_YELLOW); + img.setTextColor(TFT_ORANGE); + img.drawString("Good", 32, 10); + img.drawString("Morning", 7, 35); + img.drawString("Sun!", 37, 60); + } + else if (message_type == lcd_message_buzzer_silenced) + { + img.fillSprite(TFT_WHITE); + img.fillRoundRect(0, 0, 140, 95, 20, TFT_NAVY); + img.setTextColor(TFT_WHITE); + img.drawString("Shhhh!", 20, 40); + } + else + { + img.drawString("", 0, 0); + Serial.println("Not a valid message type for alarm."); + } + + img.pushSprite(150, 25); + + img.deleteSprite(); + } + + void lcd_draw_light_threshold_value(char* value) + { + img.setColorDepth(8); + img.createSprite(80, 40); + img.fillSprite(TFT_WHITE); + + img.setTextColor(TFT_NAVY); + img.setTextSize(3); + img.drawString(String(value), 0, 0); + + img.pushSprite(120, 185); + + img.deleteSprite(); + } + ``` + +
What is going on? +

+ + This code utilizes the [TFT_eSPI Arduino library](https://www.arduino.cc/reference/en/libraries/tft_espi/). Please see the [`TFT_eSprite` documentation](https://github.com/Bodmer/TFT_eSPI/blob/master/Extensions/Sprite.h) for more information on how to customize the sprite for the LCD screen. + +

+
+ +7. Implement the LCD thread's remaining logic in its `while(1)` loop. + + ``` + while(1) + { + tx_queue_receive(&lcd_queue, &message, TX_WAIT_FOREVER); + + switch(message.type) + { + case lcd_message_light_value: + itoa(message.value, light_value_string, 10); + Serial.print("LCD: light value: "); + Serial.println(message.value); + + lcd_draw_light_value(light_value_string); + break; + + case lcd_message_light_threshold_reset: + itoa(message.value, light_value_string, 10); + Serial.print("LCD: light threshold reset to "); + Serial.println(message.value); + + lcd_draw_light_threshold_value(light_value_string); + break; + + case lcd_message_light_threshold_increased: + itoa(message.value, light_value_string, 10); + Serial.print("LCD: light threshold increased to "); + Serial.println(message.value); + + lcd_draw_light_threshold_value(light_value_string); + break; + + case lcd_message_light_threshold_decreased: + itoa(message.value, light_value_string, 10); + Serial.print("LCD: light threshold decreased to "); + Serial.println(message.value); + + lcd_draw_light_threshold_value(light_value_string); + break; + + case lcd_message_light_threshold_reached: + Serial.print("LCD: light threshold reached"); + lcd_draw_alarm(lcd_message_light_threshold_reached); + break; + + case lcd_message_buzzer_silenced: + Serial.println("LCD: shhhh!!! buzzer silenced"); + lcd_draw_alarm(lcd_message_buzzer_silenced); + break; + + default: + Serial.println("UNDEFINED"); + } + } + ``` + +
What is going on? +

+ + This code completes the application logic for each type of message received by the LCD thread. The code calls the application's previously defined sprite generation functions to update the LCD screen. + +

+
+ +8. Upload the code to your device! The light-monitoring application will now run on your Wio Terminal. + +
What is going on? +

+ + The code generated thus far demonstrates an Azure RTOS ThreadX implementation of a light-monitoring application for the Wio Terminal. The application takes a multi-threaded approach to read sensor and user control input, and updates the LCD screen for user feedback. The code also utilizes a message queue to communicate between threads to display information to the LCD screen. + + Although no mutex has been yet incorporated into the application, it will still run and perform the basic functionality required. + +

+
+ +## Part 4: Mutexes +While thread synchronization is not required for this app, you may need to use it in a future project. This section will cover **_mutex_** implementation and review its effects. + +**Estimated Time:** 15 min + +### Test the application without a mutex + +1. Comment out logging for `lcd_message_light_value` in the LCD thread. + + ``` + void lcd_controller_entry(ULONG thread_input) + { + ... + case lcd_message_light_value: + itoa(message.value, light_value_string, 10); + //Serial.print("LCD: light value: "); + //Serial.println(message.value); + + lcd_draw_light_value(light_value_string); + break; + ``` + +2. Add a 3 second self-suspension `TX_TIMER_TICKS_PER_SECOND * 3` for Button A in the middle of its `while(1)` loop. + + ``` + void button_a_controller_entry(ULONG thread_input) + { + ... + /* Increase light threshold. */ + light_threshold = light_threshold + 5; + + /* Used to demonstrate effectiveness of mutex. */ + tx_thread_sleep(TX_TIMER_TICKS_PER_SECOND * 3); + + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_increased, light_threshold}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + } + ``` + +3. Upload the code to your device and open the serial monitor. + +4. Observe the desired behavior. + + - Press Button A and allow the LCD to update. + - Wait 3 seconds. + - Press Button C. + + You should see the following output: + + ``` + button_a_controller: Button pressed. + lcd_controller: Light threshold increased to 205 + button_a_controller: Light threshold increased to 205 + button_c_controller: Button pressed. + lcd_controller: Light threshold reset to 200 + button_c_controller: Light threshold reset to 200 + ``` + +5. Observe incorrect behavior. + + - Press Button A **_followed quickly_** by Button C. + + You should see the following output: + + ``` + button_a_controller: Button pressed. + button_c_controller: Button pressed. + lcd_controller: Light threshold reset to 200 + button_c_controller: Light threshold reset to 200 + lcd_controller: Light threshold increased to 200 + button_a_controller: Light threshold increased to 200 + ``` + +
What is going on? +

+ + Threads for Button A (`button_a_controller`) and Button C (`button_c_controller`) both attempt to write to the same variable `light_threshold`. + + In the first scenario (Step 4), the threads do not compete. The `button_a_controller` execution completes its write and read of `light_threshold` before `button_c_controller` begins its write. + + In the second scenario (Step 5), when Button C is pressed immediately after Button A, we can observe `button_c_controller` preempt `button_a_controller`. This is because `button_c_controller` has a higher priority than `button_a_controller`. The breakdown can be viewed as follows: + + - Button A is pressed and `button_a_controller` writes 205 to `light_threshold`. + - Button C is pressed and `button_c_controller` writes 200 to `light_threshold`. + - `button_c_controller` self-suspends (15 ticks). + - Execution returns to `button_a_controller`, but `light_threshold` has already been changed to 200. + - `button_a_controller` self-suspends (15 ticks). + +
+ The added 3 second suspension helps us see this competition. + +

+
+ +### Test the application with a mutex + +1. Add a **_mutex control block_**. + + ``` + TX_MUTEX light_threshold_mutex; + ``` + +
What is going on? +

+ + A **_mutex_** is a mutual exclusion object that controls thread access to application resources. It does not require stack memory like a thread or a message queue. Please see [Microsoft Learn's ThreadX Chapter 3: Functional Components of ThreadX](https://learn.microsoft.com/azure/rtos/threadx/chapter3) for more information on [mutexes](https://learn.microsoft.com/azure/rtos/threadx/chapter3#mutexes). + + A **_mutex control block_** contains specific information about the mutex, such as which thread owns it at a given time. `TX_MUTEX` is the ThreadX data type for a mutex control block. Please see [Microsoft Learn's ThreadX Chapter 3: Functional Components of ThreadX](https://learn.microsoft.com/azure/rtos/threadx/chapter3) for more information on [`TX_MUTEX`](https://learn.microsoft.com/azure/rtos/threadx/chapter3#mutex-control-block-tx_mutex)). + +

+
+ +2. Create the **_mutex_** with `tx_mutex_create()`. Add this function call to `tx_application_define()`. + + ``` + void tx_application_define(void *first_unused_memory) + { + ... + tx_mutex_create(&light_threshold_mutex, "Light Threshold Mutex", TX_NO_INHERIT); + } + ``` + +
What is going on? +

+ + [`tx_mutex_create()`](https://learn.microsoft.com/azure/rtos/threadx/chapter4#tx_mutex_create) creates a mutex with specified arguments. The arguments used in this example reflect the following: + + - `&light_threshold_mutex` : Pointer to the defined mutex control block. + - `"Light Threshold Mutex"` : The mutex name (i.e., pointer to the name.) + - `TX_NO_INHERIT` : Priority inheritance is not supported. + +

+
+ +3. Add `tx_mutex_get()` and `tx_mutex_put()` to the three Button A-B-C thread `while(1)` loops. + + ``` + void button_a_controller_entry(ULONG thread_input) + { + ... + Serial.println("button_a_controller: Button pressed."); + + Serial.println("button_a_controller: About to get mutex"); + tx_mutex_get(&light_threshold_mutex, TX_WAIT_FOREVER); + Serial.println("button_a_controller: Got mutex"); + + /* Increase light threshold. */ + light_threshold = light_threshold + 5; + + /* Used to demonstrate effectiveness of mutex. */ + tx_thread_sleep(TX_TIMER_TICKS_PER_SECOND * 3); + + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_increased, light_threshold}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + + Serial.print("button_a_controller: Light threshold increased to "); + Serial.println(light_threshold); + + Serial.println("button_a_controller: About to put mutex"); + tx_mutex_put(&light_threshold_mutex); + Serial.println("button_a_controller: Put mutex"); + ... + } + ``` + ``` + void button_b_controller_entry(ULONG thread_input) + { + ... + Serial.println("button_b_controller: Button pressed."); + + Serial.println("button_b_controller: About to get mutex"); + tx_mutex_get(&light_threshold_mutex, TX_WAIT_FOREVER); + Serial.println("button_b_controller: Got mutex"); + + /* Decrease light threshold. */ + light_threshold = light_threshold - 5; + + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_decreased, light_threshold}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + + Serial.print("button_b_controller: Light threshold decreased to "); + Serial.println(light_threshold); + + Serial.println("button_b_controller: About to put mutex"); + tx_mutex_put(&light_threshold_mutex); + Serial.println("button_b_controller: Put mutex"); + ... + } + ``` + ``` + void button_c_controller_entry(ULONG thread_input) + { + ... + Serial.println("button_c_controller: Button pressed."); + + Serial.println("Button C: About to get mutex"); + tx_mutex_get(&light_threshold_mutex, TX_WAIT_FOREVER); + Serial.println("Button C: Got mutex"); + + /* Reset light threshold. */ + light_threshold = DEFAULT_LIGHT_THRESHOLD; + + /* Update LCD. */ + lcd_message message = {lcd_message_light_threshold_reset, light_threshold}; + tx_queue_send(&lcd_queue, &message, TX_WAIT_FOREVER); + + Serial.print("button_c_controller: Light threshold reset to "); + Serial.println(light_threshold); + + Serial.println("Button C: About to put mutex"); + tx_mutex_put(&light_threshold_mutex); + Serial.println("Button C: Put mutex"); + ... + } + + ``` + +
What is going on? +

+ + [`tx_mutex_get()`](https://learn.microsoft.com/azure/rtos/threadx/chapter4#tx_mutex_get) "gets" ownership of the mutex for the calling thread. The arguments used in this example reflect the following: + + - `&light_threshold_mutex` : Pointer to the defined mutex control block. + - `TX_WAIT_FOREVER` : This wait option causes the calling thread to suspend until the mutex is available. + +
+ + [`tx_mutex_put()`](https://learn.microsoft.com/azure/rtos/threadx/chapter4#tx_mutex_put) "puts" back ownership of the mutex. In other words, it releases the mutex so another thread can obtain ownership. The arguments used in this example reflect the following: + + - `&light_threshold_mutex` : Pointer to the defined mutex control block. + +

+
+ +4. Upload the code to your device and open the serial monitor. + +5. Observe the desired behavior. + + - Press Button A and allow the LCD to update. + - Wait 3 seconds. + - Press Button C. + + You should see the following output: + + ``` + button_a_controller: Button pressed. + button_a_controller: About to get mutex + button_a_controller: Got mutex + lcd_controller: Light threshold increased to 205 + button_a_controller: Light threshold increased to 205 + button_a_controller: About to put mutex + button_a_controller: Put mutex + button_c_controller: Button pressed. + button_c_controller: About to get mutex + button_c_controller: Got mutex + lcd_controller: Light threshold reset to 200 + button_c_controller: Light threshold reset to 200 + button_c_controller: About to put mutex + button_c_controller: Put mutex + ``` + +6. Continue to observe the desired behavior. + + - Press Button A **_followed quickly_** by Button C. + + You should see the following output: + + ``` + button_a_controller: Button pressed. + button_a_controller: About to get mutex + button_a_controller: Got mutex + button_c_controller: Button pressed. + button_c_controller: About to get mutex + lcd_controller: Light threshold increased to 205 + button_a_controller: Light threshold increased to 205 + button_a_controller: About to put mutex + button_c_controller: Got mutex + lcd_controller: Light threshold reset to 200 + button_c_controller: Light threshold reset to 200 + button_c_controller: About to put mutex + button_c_controller: Put mutex + button_a_controller: Put mutex + ``` + +
What is going on? +

+ + Threads for Button A (`button_a_controller`) and Button C (`button_c_controller`) both attempt to write to the same variable `light_threshold` as before. + + In the first scenario (Step 5), the threads do not compete. The `button_a_controller` execution completes its write and read of `light_threshold` before `button_c_controller` begins its write. + + In the second scenario (Step 6), when Button C is pressed immediately after Button A, we can observe `button_c_controller` preempt `button_a_controller`. This is because `button_c_controller` has a higher priority than `button_a_controller`. However, because `button_a_controller` has already obtained ownership of the mutex, `button_c_controller` suspends until `button_a_controller` releases ownership. The breakdown can be viewed as follows: + + - Button A is pressed and `button_a_controller` gets ownership of the mutex. + - `button_a_controller` writes 205 to `light_threshold`. + - Button C is pressed and `button_c_controller` attempts to get ownership of the mutex. It cannot. + - `button_c_controller` suspends. + - Execution returns to `button_a_controller` and `light_threshold` remains 205. + - `button_a_controller` puts back ownership of the mutex. + - `button_c_controller` immediately gets ownership of the mutex, preempting `button_a_controller`. + - `button_c_controller` writes 200 to `light_threshold`. + - `button_c_controller` puts back ownership of the mutex and self-suspends (15 ticks). + - Execution returns to `button_a_controller` and it self-suspends (15 ticks). + +
+ + With the added mutex, the `light_threshold` is not prematurely overwritten for `button_a_controller`. + +

+
+ +7. Return the application to normal behavior. Comment out or remove the 3 second self-suspension from the Button A thread. + + ``` + void button_a_controller_entry(ULONG thread_input) + { + ... + /* Used to demonstrate effectiveness of mutex. */ + //tx_thread_sleep(TX_TIMER_TICKS_PER_SECOND * 3); + ... + } + ``` + +
What is going on? +

+ + The updated code demonstrates an Azure RTOS ThreadX mutex implemention as part of the light-monitoring application for the Wio Terminal. For this application, there are other solutions that can avoid synchronization, such as creating all the button threads at the same priority level. However, a future project may need the use of a mutex. We hope this demonstration assists your understanding of the concept. + + There are other ways to synchronize threads in ThreadX, such as [sempahores](https://learn.microsoft.com/azure/rtos/threadx/chapter3#counting-semaphores) and [event flags](https://learn.microsoft.com/azure/rtos/threadx/chapter3#event-flags). We encourage you to continue learning about ThreadX and exploring the different ways it could benefit your Arduino projects! + +

+
+ +## Further Reading + +Please visit [What is Azure RTOS ThreadX? | Microsoft Learn](https://aka.ms/hackster/ThreadX/documentation) to learn more. \ No newline at end of file