From 9d1e3b8ef340bab523be6f7de0dfaf894e677e26 Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 14:08:49 +0800 Subject: [PATCH 01/26] Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/ hs300x 1.Kconfig is ok. 2.gcc is ok. --- .../app_match_rt-thread/Kconfig | 2 ++ .../app_match_rt-thread/hs300x/Kconfig | 23 +++++++++++++++++++ .../app_match_rt-thread/hs300x/SConscript | 7 ++++++ .../hs300x/hs300x_source/SConscript | 14 +++++++++++ 4 files changed, 46 insertions(+) create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/Kconfig create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/SConscript create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/SConscript diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/Kconfig b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/Kconfig index 14ddb6557..4bae294f6 100644 --- a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/Kconfig +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/Kconfig @@ -2,4 +2,6 @@ menu "More Drivers" source "$RT_Thread_DIR/app_match_rt-thread/rw007/Kconfig" source "$RT_Thread_DIR/app_match_rt-thread/ov2640/Kconfig" +source "$RT_Thread_DIR/app_match_rt-thread/hs300x/Kconfig" +source "$RT_Thread_DIR/app_match_rt-thread/sx1278/Kconfig" endmenu diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/Kconfig b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/Kconfig new file mode 100644 index 000000000..1edfc9f8b --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/Kconfig @@ -0,0 +1,23 @@ + +menuconfig DRV_USING_HS300X + bool "hs300x driver" + default n + help + note: + hs300x can read Temperature and Humidity + +if DRV_USING_HS300X + config SENSOR_DEVICE_HS300X + string "HS300x sensor name" + default "HS300x" + config HS300X_DEV_ADDRESS + hex "hs300x device i2c address" + default 0x22 + config HS300X_TEMP_RANGE_MAX + int "max temperature" + default 80 + config HS300X_TEMP_RANGE_MIN + int "min temperature" + default -10 +endif + diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/SConscript b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/SConscript new file mode 100644 index 000000000..1e9cdf022 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/SConscript @@ -0,0 +1,7 @@ +Import('RTT_ROOT') +from building import * + +cwd = GetCurrentDir() +objs = SConscript(os.path.join(cwd, 'hs300x_source', 'SConscript')) + +Return('objs') diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/SConscript b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/SConscript new file mode 100644 index 000000000..42837cf00 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/SConscript @@ -0,0 +1,14 @@ +import os +from building import * +Import('RTT_ROOT') +Import('rtconfig') +cwd = GetCurrentDir() +DEPENDS = ["DRV_USING_HS300X"] + +SOURCES = [] +if GetDepend(['DRV_USING_HS300X']): + SOURCES += ['drv_hs300x.c'] +path = [cwd] +objs = DefineGroup('hs300x', src = SOURCES, depend = DEPENDS,CPPPATH = path) + +Return("objs") \ No newline at end of file From d5e16cd9acc8efb3b331c4349d90b54fa75385fe Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 14:10:18 +0800 Subject: [PATCH 02/26] Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x driver 1.hs300x driver test is ok. --- .../hs300x/hs300x_source/drv_hs300x.c | 223 ++++++++++++++++++ .../hs300x/hs300x_source/drv_hs300x.h | 29 +++ 2 files changed, 252 insertions(+) create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/drv_hs300x.c create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/drv_hs300x.h diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/drv_hs300x.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/drv_hs300x.c new file mode 100644 index 000000000..06b22fb3d --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/drv_hs300x.c @@ -0,0 +1,223 @@ +#include "board.h" +#include +#include +#include +#include +#ifdef RT_USING_POSIX +#include +#include +#endif +#ifdef DRV_USING_HS300X +static rt_bool_t init_flag = RT_FALSE; +struct temp_humi_device +{ + struct rt_device parent; +}; +struct temp_humi_device hs300x_device; +static struct rt_i2c_bus_device *i2c_bus = RT_NULL; + + +static rt_err_t rt_hs300x_open(rt_device_t dev,rt_uint16_t oflag) +{ + RT_ASSERT(dev !=RT_NULL); + return RT_EOK; +} + +static rt_err_t rt_hs300x_close(rt_device_t dev) +{ + RT_ASSERT(dev !=RT_NULL); + return RT_EOK; +} + +static rt_err_t hs300x_i2c_write(struct rt_i2c_bus_device *bus,rt_uint8_t len,rt_uint8_t *buf) +{ + struct rt_i2c_msg msgs; + + msgs.addr = HS300X_DEV_ADDRESS; + msgs.flags = RT_I2C_WR; + msgs.buf = buf; + msgs.len = len; + + if(rt_i2c_transfer(bus,&msgs,1)==1) + { + + return RT_EOK; + } + else + { + + return -RT_ERROR; + } + +} +static rt_err_t hs300x_i2c_read(struct rt_i2c_bus_device *bus,rt_uint8_t len,rt_uint8_t *buf) +{ + + struct rt_i2c_msg msg[2]; + msg[0].addr = HS300X_DEV_ADDRESS; + msg[0].flags = RT_I2C_WR; + msg[0].buf = RT_NULL; + msg[0].len = 0; + + msg[1].addr = HS300X_DEV_ADDRESS; + msg[1].flags = RT_I2C_RD; + msg[1].buf = buf; + msg[1].len = len; + + if(rt_i2c_transfer(bus,&msg,2)==2) + { + return RT_EOK; + + } + else{ + return -RT_ERROR; + } +} + +static rt_size_t rt_hs300x_read(rt_device_t dev,rt_off_t pos,void *buffer,rt_size_t size) +{ + RT_ASSERT(dev!=RT_NULL); + return RT_EOK; + +} + +static rt_size_t rt_hs300x_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size) +{ + RT_ASSERT(dev !=RT_NULL); + return RT_EOK; +} + +static rt_err_t rt_hs300x_init (rt_device_t dev) +{ + RT_ASSERT(dev!=RT_NULL); + return RT_EOK; +} + +static void read_temp_humi(float *cur_temp,float *cur_humi) +{ + rt_uint8_t temperature[4]; + + hs300x_i2c_read(i2c_bus,4,temperature); + *cur_temp = ((temperature[2]<<8|temperature[3])>>2)*165.0 /((1<<14)-1)-40; + *cur_humi = ((temperature[0]<<8|temperature[1])& 0x3fff)*100.0 /((1<<14)-1); +} + +static void hs300x_i2c_sample(void) +{ + float hs300x_temp = 0.0; + float hs300x_humi = 0.0; + i2c_bus = (struct rt_i2c_bus_device *)rt_device_find(I2C_NAME); + if(i2c_bus ==RT_NULL) + { + rt_kprintf("device find err\n"); + return -RT_ERROR; + } + for(int i=0;i<100;i++) + { + read_temp_humi(&hs300x_temp,&hs300x_humi); + rt_kprintf("humidity: %d.%d %%\n",(int)hs300x_humi,(int)(hs300x_humi*10)%10); + if(hs300x_temp>0) + { + rt_kprintf("temperature:%d.%d C\n",(int)hs300x_temp,(int)(hs300x_temp*10)%10); + } + else + { + rt_kprintf("temperature:%d.%d C\n",(int)hs300x_temp,(int)(-hs300x_temp*10)%10); + } + rt_thread_mdelay(5000); + } +} + +static int hs300x_fops_open(struct dfs_fd *fd) +{ + rt_err_t ret; + rt_device_t dev; + dev = (rt_device_t)fd->data; + RT_ASSERT(dev !=RT_NULL); + ret = rt_device_open(dev,RT_DEVICE_FLAG_RDONLY); + if(ret == RT_EOK) + { + return RT_EOK; + } + return RT_ERROR; +} +static int hs300x_fops_close(struct dfs_fd *fd) +{ + rt_device_t dev; + dev = (rt_device_t)fd->data; + rt_device_set_rx_indicate(dev,RT_NULL); + rt_device_close(dev); + return RT_EOK; +} +static int hs300x_fops_read(struct dfs_fd *fd,void *buf,size_t count) +{ + rt_device_t dev; + dev = (rt_device_t)fd->data; + RT_ASSERT(dev!=RT_NULL); + rt_err_t ret; + if(count !=4 ) + { + rt_kprintf("can only read 4bytes!\n"); + } + i2c_bus = (struct rt_i2c_bus_device *)rt_device_find(I2C_NAME); + ret = hs300x_i2c_read(i2c_bus,count,buf); + if (ret ==RT_EOK) + { + return RT_EOK; + } + return RT_ERROR; +} +static int hs300x_fops_write(struct dfs_fd *fd,const void *buf,size_t count) +{ + rt_device_t dev; + dev = (rt_device_t)fd->data; + RT_ASSERT(dev !=RT_NULL); + rt_err_t ret; + i2c_bus = (struct rt_i2c_bus_device *)rt_device_find(I2C_NAME); + ret = hs300x_i2c_write(i2c_bus,0,RT_NULL); + if(ret ==RT_EOK) + { + return RT_EOK; + } + return RT_ERROR; +} + +const static struct dfs_file_ops hs300x_fops = +{ + hs300x_fops_open, + hs300x_fops_close, + RT_NULL, + hs300x_fops_read, + hs300x_fops_write, + RT_NULL, + RT_NULL, + RT_NULL, + RT_NULL, +}; + + + +int sensor_hs300x_init() +{ + rt_err_t ret = RT_EOK; + hs300x_device.parent.open = rt_hs300x_open; + hs300x_device.parent.close = rt_hs300x_close; + hs300x_device.parent.read = rt_hs300x_read; + hs300x_device.parent.write = rt_hs300x_write; + hs300x_device.parent.init = rt_hs300x_init; + ret = rt_device_register(&hs300x_device.parent,"hs300x",RT_DEVICE_FLAG_RDONLY); + #ifdef RT_USING_POSIX + hs300x_device.parent.fops = &hs300x_fops; + #endif + if(ret !=RT_EOK) + { + rt_kprintf("hs300x register failed!\n\r"); + return -RT_ERROR; + } + rt_kprintf("hs300x register success!\n\r"); + return RT_EOK; +} +INIT_APP_EXPORT(sensor_hs300x_init); +MSH_CMD_EXPORT(hs300x_i2c_sample, a read temp sample); + +#endif \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/drv_hs300x.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/drv_hs300x.h new file mode 100644 index 000000000..1dbf333f1 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/hs300x/hs300x_source/drv_hs300x.h @@ -0,0 +1,29 @@ +#ifndef __HS300X_H__ +#define __HS300X_H__ + +#include +#include + +#include + +#ifdef __cplusplus +extern "C"{ +#endif +#ifndef HS300X_I2C_FREQUENCY +#define HS300X_I2C_FREQUENCY 40000 +#endif + +#define I2C_NAME "i2c1" +#define buflen 4 +#define HS300X_TEMP_RANGE_MAX (80) +#define HS300X_TEMP_RANGE_MIN (-10) + + + + + + +#ifdef __cplusplus +} +#endif +#endif \ No newline at end of file From 1d023c95041843ea3e6cb42c7e36c234015a2557 Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 14:11:47 +0800 Subject: [PATCH 03/26] Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/applications 1.delete useless uart_test.c --- .../aiit-arm32-board/applications/uart_test.c | 43 ------------------- 1 file changed, 43 deletions(-) delete mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/applications/uart_test.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/applications/uart_test.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/applications/uart_test.c deleted file mode 100644 index aeb9e8859..000000000 --- a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/applications/uart_test.c +++ /dev/null @@ -1,43 +0,0 @@ -/* - * @Author: yongliang - * @Date: 2022-03-31 16:00:00 - * @Description: uart_test code - * @FilePath: \xiuos\Ubiquitous\RT_Thread\aiit_board\stm32f407_mini_board\applications\uart_test.c - */ - -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - */ - -#include -#include -#include -#include - -int main (void) -{ - /*1.设置系统中断优先组*/ - - /*2.串口初始化*/ - while(1) - { - if(USART_RX_STA&0X8000) - { - len =USART_RX_STA&0X3fff; - printf("发送的消息为:\r\n"); - for(t=0;t Date: Thu, 23 Jun 2022 14:14:30 +0800 Subject: [PATCH 04/26] aiit-arm32-board/test/ test jpg 1.humi.jpg and temp.jpg --- .../aiit_board/aiit-arm32-board/test/humi.jpg | Bin 0 -> 53982 bytes .../aiit_board/aiit-arm32-board/test/temp.jpg | Bin 0 -> 195211 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/humi.jpg create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/temp.jpg diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/humi.jpg b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/humi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f58a182a80ee2049a496ebb29aeb085354d5a46 GIT binary patch literal 53982 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 HzsLU{@j1Py literal 0 HcmV?d00001 diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/temp.jpg b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/temp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb49a0e26b9cdcae87ae14e8ffc6675c7fe6b83f GIT binary patch literal 195211 zcmeFYXH-++-z^xr^bP_lND-xqQWOvrMVc5z=_M*sV~F$?h|)U(0s;a8(wo#sOQZ{k zNJ}IELPC?CPy>W;`QJP9&RR2H=DiedU~p`FViJw{JB1|>=NA^2mjA7+lDBtu z_x2Ache!XxMF(K`U$FiQ+5Zg}?-?$7Mn(okmjB?QqxU~M7}9oUpZC zSwMY)F2>NL*IGA{;%}_9_O)Yu8~JC47-bw&$9RU$gWvTB4gS5$Vg?+=HwIPvkF`zDxbRYAr~ZXw37b#w?#1 zDd0rAX_>XHy$O4IYwjlhZ(p&Y2VbN(aA~6lTpc<>lp*7G49q^5$PVR)-JhtE{PSkB z@#MA-j#F;5WO}ThG0k{=&~EU!*o$T?7rA_ABKuLcc%&35KWxul`5{_Cp}WlXzbl5%_-|%glB3NsuTW`tmd@@RL(s}d#!6VP_=lkm^E_3i6T~6w`$xv}y zs`1!*)9uUG-9jbDs2Ymx&2rl}f7z%b;VM6!&7A@UUtcmTMXm2tu8DK1Zn3Y6YIOfs!a2ac2-sbY}nU=}zp_bQg1GT~|J7#CMmTIA@wX68l??^FU z%=Xy+3Ow84P45`oSso-rfj+MzUwJRvee!g$x~71jdw$lvrm|CkbEZ|Y`JR0>d%}hA zyifRs{2xGeFpX)FB}UwW%t^~7Dmoh58}FFsT`P&g(p+CDeN*+^{2QNI)}l@9aMys5M*e}HS*q&SZoE;Jd%HO#7knpIb9egF0ZT3c#N#yp_bd_B+-wpctm95x3x>G=8 z{8u*%T_|njn5&_5mFAMRv~{fb%lj~3TBU6W*Y?@v)*boZFqLD?H3z1b{)DabQ{5H) zC3bG3CS|TsMDE$u8?!gH^$6@7#*WyFKrsY&n|0;-5n|h}RhPIol0hGRd48_gKUhn)L*}Mc)&3%FSL>phdQ?l zj0wF#&g_8-)ik61Z8CDdx@Cwqx6R=a)zOxS;Fc@T$Ca*_6mTgC`kP!;=pAhS13*-d zg`i|8v&WTgzJG)C?N0$VwI|J|0Q50Un4&y~5(scUc-lsR6G7*Ie27d)6?j7-N!`O* zuo_yLP(E_d&~HqJGQbo^VPeP16n`RDT^X3BO*V+DYILfvL#sK0!AvJR`U0-`PF7a> zOLo^Fi+|CJR$An)zeu{$rTNA9UX>5ri<}?qA%hNq)AbAVx=EcI~Mcv;llc3f*ML zR8!;@S}AZ8v0a!|eIcxUfoRl-Z1c|VqY8=La=n*^e{s?*0P|og6?GV!0 zm;D~oJqGVm2@Ym1ufnQWIiWSw5q9sZ!}<@w=9GKjKB>Vqffa`?j8rq-Z@ z%HxtSu<0u;&$npr`!`H4gxwev<2*l?@;Q51hn@Dj8N>v0n!gA#oy=Z-gf6TP>oz*R z(U)!aL~2X_ZU3(wnUn?TclX|SzjMFbw!GrkzH6kMc2K*`N|jFw(XsG{E;Vj99c7{j zS)mtC0e>WqPXR3crvPeb`I>k`ZTE((No#w2w+*sbnm5x{>yA5VScM_N^nk4`8JP8M zPqI}vOg&Vijsh*!C-XlQEsgtyQTFs)=w{u{Cf=vNasT++5NqP&v4{5#bGF1l!tD&6 z6cT>iSe8g1^Sfr7{fi_Y5Xx;s zf%j=f$H0V%DArku`9{%%D#XMx8{7x}fO6su$=G*YxY5A)L|p6pt(s@RCX!Oxd~FOS zRGE|+*Dg;u1#th4@iTYMQQ;e`Gcz_@Iixb31o(<{!MyE=VbB zo?YG)+@+_OnB)03oh9{21-KL5m!(62CIB0Ei2Opx2 z2{xwK1h1R|ij}*t{xd;`3K$(`QfWe{#Hx-mNh48JncG#+bx76m$`P>7U#mTIEKnrXhAm&%>Sl%FhRoZ)|# zqMLJQ+3?OwpGOu?0bgs;w6-H^$GjN+onvQE;=wy#d;b1V3G4NBMV}MpzJ}?tmbR88 z?DX)Wy^0}q;CbCze>g!ro#FDdcw%bbp9-)@mjd z4L%fuDKZv^4fbL@dKLUE8^E9jU^KK{wsJ+tW+bk9Q&~Iq3vz-AEO%e}O=L|C4kRXR z6U{A*93S3dcq?YqS*CzwrIZemGwOopD_@fjVj&QpKFn_JdEC91P7Jr7H#ese&FVvs z{B|xG9M0IfJwNACw1^*pD)(D17EZWhy#qtt4-Or0t8arY<&fliXqU+1F^$2Tmd{DQ z<1Rm~wgC&*+pO{%#&xlqDQTEWDD%BgV*gpj`l8b-RFGoOC0g2r;tiEMM?t4P6rDRJq#1|_8u; z^wUQ0tW;gHY-ejp0TIQPC}rJ%QR7rwZ`=re8bCC3d9ANBp1Uak_;tPby#!s{?g+&h z6b;`!hdc#z&YYf&SG*F$NMp02@{Rc(i(RyRKACAgx#_ESlvm*EH_B>P-^bZAmU{P= z%g-C)SuK?)#y3=`BMJXFo_M8D4JepZ<3OArh~i&V>xp7~9ewaJgI_fFYeM*r#;hVt zWy=+h9y|pk_Es-YXF8NNC{~N@M#r)ge!EeRsy8`yq`iqjdUqR-I<4uuUR+NekM#l1 zAErdHZiPFjkivf;>CbrCk9;0VC6TGGp;{@t1}qB8{+M|Ha{C^Kf08lFv|XJg`1M6y z*|~6U-hQ>c{#b3(B8rxNE86$OqW}JwqQITLf^xg!j&?aiKzov2*#JY@L>yU}8^%v^ z>4i>VdT87YsmtroVwUViK)_Hr=cgDfa$24#L^ zH*TV@y9DyhJq6s4m{iu`rnq#6N=;CWNXLD%7m*b}d=v<-5JI-^9yI;CIp=SS>9XxyqXRO|;e}c}^{Ny3?$xx}fB~75HMnjKw=sz#qK!Z zpN~SDwB*5Uwo%#IfqV|Xev${El4(oVU;KQ?^*rcd)3GYW@3<=nnc`GMshB11{LE(G z0QMYZ)V$f0$dX0mUENZWF@K$*>iABBuJN-dh5{vZKO>FAY2PE_1;EXDl4R#5rlyYw z8^6y-Az#&-X)oihehFN9;cqJ6pqgNXdhvxVvGt6}xk0s7sf{ulhaszHm0{LN`TsEq zifAI41pEoTGK%C6KLzx!O_Y_3ETTxiP+X^gf4m{5fbcWcMAJ2(-c;^J9WjF7bDRH} zJ;|8zr*|*eo&q?ANL#e`!gz`n>J%`)3-7)`)j9=y(LbPZZJh!rCqd}~bpQYJ{=f46 z_Oi-pzjXkJ@8-$INON5NAt&h4GA+ll9&>GeWlzgq_*srVB5B7usn4<=@rfYwS^oTJ z(&Ah*-Gc9`<{y?^c(--{Kka=co^re6>~oo%fvJ*o;^(aP*zJWTHwr)XOGnwpy7=i{ z7uQZ0exJnr_QvDeY74qt$n(^Dl;C+q-DhoNAXR!l=pair?(%oSi&oycq+pLv_nNO7 z0$>G?ry)GYvyo@TT^O`!K*he(-r7I=gj1QoXML_3@I>)@t@MO1`-TRMb)K}cdt!VF zF#4WjLMpDbck@rh+9`O=SoKPN9lg=&Vc;ZVbwQ<8pQ1|~*6KV3H2lsAthiTcXJZmv zW}80h6Ws9_*0eFAV_Ic4ki6ILaK(Dp1`d zpoljxlL~hvS3PM$b8;Kp+H+L&598ny+c<5f^{Z0BaHQTqB2c>Q$>U&dR*IUoFTvi? z0@GLQ=uI4uYIUkZeIKvcc=IRRjeeM+U*Uo5@6{@uz>*7L`i}pGNe|Zu_A~hrO(>>+ zcy1bA)IlS1a~-m~ob&4;I8ao1X30+O2I*II(%vZ8L7noHEY+=n^{cH7(CF2(-Z_sI*KY8{P?W1+R<2(!oL5QeS7YezNaQS zv4VP$0$1G36r)}vSte<_l;Dg?SMu!3NzIwkuVg<0I4s7d4O6230%B`!rp|Q)yS%6J zlf>*v1~Cfl7r(%6Pr$@Iui87~?>BtQ1ZEgMo>Q`rQON*y>}+=glm^i0FuKtg(N{=% zRIO%`)54ld`2d0ZBHL%@wpGTpU!XP@N69Z13tJ2q-W%C#ZIP&BZc~SMG8fCn56n&h z!UI^01K58B725y9fnltj0pbh!x@t39z}ad22^_SyRJGDaXQWh|GWl4O8JF_ew?=vY z^(i1lqZhQVNl88hJVvMn7?@H_UFMVpl)E~hU3n~Hg!HuM=ytZ&*I-B07eY7k$8?U67C}ikD)6d)khi&<6TeSWjm`m1Kgmo~g&AWU*^O z;#8--=*w?aEEx?T#&^J^@ojboHdgTP;WcFx=-0n9&X&vvriqarr_w|xQQ!9DPXWAc zqA!uhs{Txuzjwr4dz(uC^`jqPUmFui)ug18{d?g<6A6#YE@`I&(3rDvBT9xgY)bP z>(=H`7YC#i+ym`=GX3EO0;$^#2eGJ|?G72Bpmf|}HMdwRWxgiBa&9Y$nhWlE7BHfR zexnK=X!mq0*&4IiHu2%l7#~$!jFrm&ePQ{XIMlcWLKKfd(^M%%bM_2G``Xw&ds)NL zE8|dYea?@3Hq&;~_VE$v)sRVTbe#0|f!=d|k*jlca6{5!ZFizA0Upz+93||)(EJBN zJ+}Si(`IYiab@gPOS%%|i_iVe!$0+W+|s@^Qggyx;?bI0(bT8jT$N|+j;NDXS>2rF zTS@^MHpO@E|G|k|((-Av_7G4%j+KUNt0>I9`$A{#0WO^iHG;L_s}Dv6zdDw}Cw24U z(3-koc{jh4nZxHH!p|pR=4AoVcU#n36D}!+o0{Y}2m7WAf*vO-E6_N#xylZMci`;V0)8&zT)l(BDzvG|jWu+bte(3g8i4!uNJRA;AugFfmmy;|#@$ zEN4rUAMW2`UfvoN?!LS_<%pHR*IY`!Avb`P7} zZL}^-QP6&(x>oSkJi~C&yt(E3)4EA354p~dJhz6e$V~^)NU?v&tCaA-qP_!7k2J;J zy~XrK=Y1l2<`U@YZCsnU&ZILN`=zWa1)*EnC(u(sGj2O5@MKlD<7t9FGS7ef2)FG3%s=Sp>q*O(E7U%yIXD3CL*uTRN4C$TNhPCQ6_qjQOR8@)GU z^1NlVx|(Q(-X5HB$(2b#UyXSBP44%Yrd*VmSGT`N4SYXflt4mtQyRr|8NsuxF@jTm%Y=dm;=T_4uqG8)AxCn+@<^anOqU}W~GZL*BOk@w1@8B}=7yh&Qv&^?<7<&+|1wB?(kCo{yR!IA(;(kS3jZT8`EUU^5oC@x^g?1 z>mw#8Xq8Xe%=E45_`b6tLbdYGd^GV3SvjEzA5PPy^m{taLn+34IEZjpwkt+0Mp1iM zb;ezzPDIIUN;3Yy==Mh^{>7;_DTNTe{yscYyYSpb@Dn6SDV+3gYNgy!DU--4H?A*i z@l51(*p$piX+G&*>6bhoHeNlb6pJ=rL$czje3aO^Lkyv*G^}PfKIfdoglY$y{FUt& zp3<=pUxC}~;nMgvj~in_*-h}E!F|LGZg77FT$|cTaU4841!Ti@m2yM0S^6EM$)K)N zfGF%m<~>T(*_k+n-7RLTlBNo4>tQt%RxP+}_8I|^bT#L|TZ2vtlGMJ;4Y~`)Mkng9 zQN-;gOVP?Y*Bk~y_@}UVx3RAM(Hj-*FWfAI`C6m61|M;nsM`ghbr#7II7>{Vu{yL-oyih1G{I z9@SR6I8f9jHOhDag~f6lDMA4nk&ygy z4>|xcQy-I(dw=fb-h7-2j;$JfHPILXHg5UW8h6{gSp?!ym~>C<9pzPyE%?P}(Z!7o zns|V+0a-WN=M)f)4XF)N6{&V=Z8$3<(TNjYpoXdf$8SyVr)E|5-ApP{*~{l&N;*3+VRpY@j)L0P7j8^KGor~^qZD%5}^r=vQK(b$fuXw_q{CTBXZIy}{ zdp(y{KaDg!2zAAe^Y?0HF6H50+hi{is29jg!9B#Z`_JWbt{%vP-$ibuw_ak8Dc9E3MXo zURSML+|2dLgjp_i)Zoxjyi*3g)^g{<@c>PGv%1PGu4VHsuOF{5lcEQ)s`+dy{ZG()CW@Cj?Hx5N z4_F!ReTp=nUf@W*%g~}WNb&E>=O`IfvuafI@A7gbuH*)~L(uGD+iJf$x&EZ) zt0W|LQ~PDJqZ^ACp}o2TqOzot)>4YvVZ(ArFcH`XKSxz2hwL`2Wxrz2=dKB_4d~+J zT3X3ldz!@F=;|}@NSP&roGvXzBmaO!zQnA-d0`~7SYyW4_0 z&JVR-aiuwW;?hIs#?!}<=*c6msZh=7bQhsad*mK`U}Y(QNSn}6n`pmT)qW;^`zi_@ z9H^r+Z9F20ruV+MfxwSRz(Q=pS7Y{#gcfPJ4+RKL;NPSJV`wx|e!MZIMy(?`UJZ%| zAB8Md_q1)=AGEY2icBwLUNn#85Fk7B6X3B9Lgf8$|Ed6!o^0K?-Q!n34>Xku1gGy! z`U@zFUFQtDwKg1>*$qq>aUneh#)e)cCB@Fwa;^G(16yRwicfrL3%&@1-6Z1vR&!^nKQe3F&j$k)yG)`?PXVfLzFuPyrg2aopeQ*6v0R|}=tiTW z@rXHUOzF+~R`x!xO!cpf^#OT(UMEM9m!Br)c1t0cUz(ubcrDPjfxrIifbiaI%gC=| zY0q1a<=r#OOKn0o{u;eq{S{*zj<_tA@#8nM*Inhz9_$;PE6t?i>3PeR#*8C*sAAHK z#CZd+zu4OXybN-5b_fF>HWUQ^h7n`~&O4mV6EvkOWO^Wbg3rMk@Zh&aG{2EwQe@iI zLfv{k+rVS$dqj2v=BK^#2^2bV{w~C$~ zY8T;ZCTtH-;brEk!R|KVl-|T zx7;%G)DGCC8y}?6m(Mm#yvWQ>QT?~I`9}EoA^vCT!>IcrAFddk`#atC%}`3hrv{r3 zy%S3Ir!}+5-|Wd0?X8LTReJB}SiZXY1&3X=taX7(y?(7dAW#)9a+?<+!Qq|K4?9n( z^d#T>p%E&9_Gtrg&RDJ5MCAlRxxRR8%!5s`B>b(jug2=VQcR717g!X0$n|^R!0&MD z=u)h{myL2So}QA{y#vMq6ScJ}T;ER1d~MCmsANQs{$4LjQLR|K-=KNb%**8Js=h5L zxd+NhIoV?*q2g4beCqkiDFLky3phuc)ACb+ib;KQq`%stj6TmTb?3J(tbjP%rOGJD zHmQcY$1-L^Y{D6q&a4-nmL31z9E|IjdRGOHh6_SqA!T6AM@LsG2_W8oG?UqXLHMcR zU!IT7cV7nw7RSzqqyo%;b9j_8^6H@p&843D0#E4v&%+8kLJd(q4nNGEs)D%CbTUsm zsl$LLl}Ex*!O! zE3K`lVtxa%-HKP&tTpj9obu_;kJ$V-bsHJl*9O1S1G9jV9qjvoe#vu+IYoj_na?kO zoD1K_C4mR2GG|#1g2uWFAz$1zD3?|{&l%L+z2WUoJh6R>K5IN%stZz|3LrodrvO90 zDgKA7?0JCl#pTwGL8O-lKE?CENkn3{7yJ;fG|O3qpzG0@7ox#q3GP~_C;md&Xlq8eZ zwue;`NB4QUEV#rA(>vW)g7SNF#e1;T)xWd$wQw?4}^^*a_m zYDq=gDfn%2Gm5UU)+7#*7QiH2$80&T)9*u6D{}caio4rXWC5u|5ub-9V3qss7~}Qe zfN4s;!B}IihW>;SL^L?fNwvZ7fSJLQKGxzM{lY*5DEF-&TB(U7-W#e-;!b>6K-dyp z6{U43M?-2hv^{mBwd3P$@91Aid1bHh#>ql9=gJe23AuM~nSymY??8zxz0mMdYchB2 zZthL9$;rrEOq9>V=3qc-t4i-=@1SwN^F2BG<#hMCMttI|3aKW%9EWo^nO{I_TY?F- zjFe=DIQiG8z!x*x4LMdtMwcV!zhlXLd9KN>vXXlG#{-I?VnH*uTTuJVSDS~>okQvT z8P}r~|MGQ^psKyM0R>95))D&`WJ{?h-uiWYfWxpMeM&@E<++=Xprp!W))pxay`^^9 zE))w*5^UqrpQ~ZlL}t)PZol=x4O<)MGN%1+lc@^bCl)at*H^pK_oMK}M}`|hVg@KT z9bWR|7DC4}12V0nbhYqbS=?IJb&xAx;alS^+bJiDX`OB37RE5m zD-SenAAs-&UP#qHR2TC7eUJR^`5!i@XqbL6GELRSqcX6xZsM$N&l1og60IrB1O~aR zN3d@{8Kk|$d1wLw2SjuZ*#ctlBmO0n2(D!hi8nwY8}p1H5M>LKrtj=h4@8~?UcET^ zp3Ztevg3GOxF^0gk|x+Vso(>o7%F@0*>cK>i8sZ+81eP`ATPr9jqXuS@`d*frUX28 z-WsiH`gj`@g@FV@i{Y-eR&E*_aK-MDFZ(y?%K=WY(!lGQl`Szh&!@k;@0G8eYe2=E z0uZTY@Gwg%2eBhNLDOKG`F6Ta(+HuJ-^X^ipI5yyp3ukZPuU_~p769qY)05_=uX;VGa_z^@8$4e3)b11DJ(abwp-dA^v9C$p=d-QM&N7v;O*wBW z=F=@?w zl>7N}YO1X&R9GUU&*9dl8@_=tQ;I-qaPur%wJBVoUBjpz2R4BZYik&JR&Vz6sg7&? zJbr3^&si4WZT@qjlm)j3TIvW|k84YC)EU_^r6rHiT<(xuy3R6t(63Zev?>Uo8`W6Z zY*NcX)eJtig0&PjcfWg)Y72hqdG(3l#dN=|TM9pd^09l|yfDRMgBYst(yBl9@rJ>f zmEnqL#wn`|c3&NEJy1C}^O&v%y#I-kUk!Y|QXm zxwFn=q)<`+(74ce_yDuH?fG2SB|k3vpr@B?v+8f79Mf2>bfgt>vzI2?oQg9=JGz=L zTrV0{hm~GY_emd(k>D}^s7$=3gm%b4Ec+sJTVq4F(rdP;XKjF@FQ(wxz9)&Rcn)_8 z5SvM6Lv`a>S2LTpU6EXY)%bO~%k0{PT5i%|yz<*pu|E$rF5LW}3B=0lf5RZzDD}9f zh~S?>!zH#>b5Y)&ay+9wl6fM9UYmk?0|N0GEN&8(MQE2;Un3t~?p4hQUYvNSTGQtsLFi_{wr@JmaBVI#!f$STL9Ppzv8l&a0lf>X1s(8sS$S9mGAjRsigv zIN=Na*z$cst+Bz#D@EEkuDO}?P(Y4*?zhoEtpo|RkyWzhz)40|%4Eb=fhf+aU4ysU zg^AMWH@+gZ)@JBiH3`?>^;!NUq%Cx6$9=(H&^DhFkICovRTgtC5oz3D=^p(X0DXwg zri}%+wc-9rZof{w>era`(!e>^aC>J*F3is#jww#vX==1NS#q=Y#)Fmn@Hx=B-IBUf zfJ6@d=uFQ!Vy*o^l`prUI-W$pE)($4m{$Kps%hcM?D^mgVS`CU(IsZY_r`3)uXwpC zvo~RO3JEP&4Qz1e&^rM*LVl8t%$m+M()aJ*$99uB^r3`AsUGIl(S`PjnvH~SCaTvX zy+rTe<{y0u%fK>V8qd;2d}=4$XXzl|C5lc6vzBdR)R-=(8YbpzTjZ!=+F)}NUnR5i zLy%(FM`^8VoKG^9Z=$SD$o>u}zCW1fV8POsVB^_?VRadsK(c30bGaFi!QZ)*A9eRL({^D3{!GVGm!#QmM86f3he4WwnKU{Rf7Gu=l`D8#q1Ccu%Yl4c)j*2e)8xU`rdQx3g z>rt3(G@m_{Jv(!GM|l0$Xy}GU=D8larRUV^>*=R}L)pXTqmUl#_7WaU;{_Fhv_8^= zR>k?X8ID!$SN1{dz7NRgc=nR~ukP7N*^;OX>zQzc6#LeQgj>#hs;@ULdw)iAV!BWQ zYcz)OCWuDo(PDIx4@l5Dpn|3=?69(;9J>@NauGJ96(2*SSI4o{nJ4t}{CHy1w#7^v z&xR(qb5>HuAB=izYO5^kJAN6KI$zV&hCXySKj+JQy@8i&NjFeNTCQZNh?Gx6#QKax z&?F~e-u}WdR8uFSy@5e<^Y{xZrime+QCsX?WR~1}ysWFza+HKg21IcTxcTu-W{!tq zO)KaNvTGd&3i3y#8dYvK?P$%26Z6vv)j$U_B6>?l*exiuTd_Z0?c(iMopY!xsIRK~ zmvpAn|0Qda6+`m;rCyB6gwo_7*C?KaZ2uHy@Yo7F76X$ggf~8sGs(32&y#`YX-=~&cFUV22JH%&HYgGZM zk$x{`#-rVIyR&u6m-5B6xkJbdUD=m%97_!<0(E3Yw>BY5u3aa2?Ejq7W4!3FF~dnl zeE``w5{Qd767)N{c!WDf=aM}b`#M|ym%pe(N;%GE#>5A^i>TA~3M9XmcqY)95O?Fc z?QOxm%vfz*FtJ)_&A21uh}|}wZQBj8^LH9>PFI?wX&9YU@nc@9Ky3%rEgp}?GoQtQ zfx?uw9&A*3wN-$BkIm#~VEHQ0+lyRMsn*e`=e zek3ls;4^f+y@6Y%x{@_@bK-GlRQd9Jh%6{IxU~KXD{KS^Ri|kpqYGs-F zE0}|l+fsV0ht{y}fxZWR)nqMVW*>YbIr1oCO(~x6X;WLntuMr9$G7J1r#R)kcWd}U0xzMyTiU4;k^ftpT8OnCHG^zTPU zsqP4D%?QK@Z^9@c-L(`rndLF%UKu!#YeGlpFIBgpt`UKTtRuyzhAaD3E%^q79I(F! zq>aM$cQ%q90K%7eJw#K@LusQO{xMV8J_p%VQBlrSnuw~=qm zBuZ1k=HM?^O-2_Jhf?;B9KVyLlN?sar&$x9?b;}QH$$T5{=Ev37qHV8G!`4$PICjo6Fytk4}6TyvNA%_Fk=fVZ_FPExC=V=dj%{yK*w> z2@0ojE1!IA*Ci$f6YMAQSjRIh$WfWWP8BN_K+U_d+3cSdt}WeWYx|(N@EJC9WcfLC zFrS`kPJ;G^%8u`Sw*hgvSy=2}x;RnXZoSxUU7WGG_xE-Et3bV%M-hyCD#^wFip4z< zmr%LYzRQq1Ov<5h%BBA{k;@f(F03R2qW(c|ZPbx}oZ3YI#d&EP{HZU0zs`?d-&5L1 za{1Empm69XqOH8f6WKU=8%yRoJI2Ab=?!KEic550OJLP^+@ zJjd41)`3-z%nC#6LNUgjb65<+49VoXIs6TLwwsQAf?3M9n!X z!N^Ni^K4bTMOS}lXALHfT%=wjZ}pzJ<#C#06c!rq&%F++PzWFiJNzZ|L z!zby~TT}Db&dbcOwK^e>N-?U>aL_gAwhd&lvUN&roW=&v-lHm#w|Z(Lbkr#wzGUSm zIRwPMT4}6eyDU^FtK8wQi5k}0y?)qFN$9qNgoTi}(g8=#U77m$UEv;7WG!)oWmOay z1yzK}lsT9(*1HR>1k%A3*XMRj0ig|S|U{G1e{m+bBYfX-$r*C!4Lf+uMd;z~2tv0Aadb_=2urOl8}VZi}YPz zf&30(mS$93!!bJVy%2G;9mSk|oZYgW+?_v#=%$AL(wAMFw#rJ> z(u)%v+r)3g-cpH4Wyn%*lt0geFl0tVgfdf~ASo}2c+Ryv8PaBEV0l3E*0X8tI||K+ z4B*=_RWH5Ps4XSO#`T@&6;9%zMztkZDa9| zzD|}n$!X`GhtmIZPzdkCXxa}CZ^f!{>S2y=^j4b}W;nyIhkNTVEPIt-{&2DS`;NVA zr+BO|UI;0+GJAExhk=ljGf?9w3di>TWfkm6k&c(Eh_)7FeD^-#R;N_j%&3v;$6#sX z;>&{&96V$OC2miTd@+Hfr*!v#>QOx)dIh(ylyECdQ;6Q!ZI{^80O`rst%)MdgK-V| zk(blINp~wh1p!BmaVPjVc!9A6A`Q4{8d}ivk9Lt4o7)=6 zJ+uqkN{Vmx1hVyGeP-&?t@7Sv-F10VLH9%OjCb)Onb&C7DLGX$t{S`nmcSMgI=}RO zrM}F>T_dLH?el(rXR&qwDc?Ss=ga3k^n>>VW~+6EQAll6CQ%+~d1;?23O{z&u|b|> zQhkdl8kP)wPXih(qSj0&eQ;v&)o%=>_buz}&t=u_1y4SeO<&wJ*JGzQVi5d?Vy9{m zFM^5q_)sY@?NS>lA}A{TWueu-)`c95<&JkKo)2hB|f;S+VBi7lq|U z)py{6&NQ%IkQ#p1ALMPxcD3;9%l}<%ZaKeUFp9$N%+APc|3v7`9K2-OyEo8a{VW-- z+rKpx|Ckb3&7LT1FuHppdS=~aa|A^IL-w7MTx(v^#>eIo%E1A+bFy~otRjp@i1p)B zfHWJ1*6N;rWb5g0c|Lg^Pw}gLcjmf>4xJ>QWD<0nPuieU)Z}KXz&z)zOy}uk|MS1y z3^tC&k8$bwKS%AiWoBs6Ee0g@WrI3Qt)lkRN-#|YBN6?mm8=^h8)Jw2%gP$CF@`-) zh^ZKmSNe(ZPFL!8?YD)yIfax?Q>40&7MCNH*WW<0Z#P<9c6$RE5{!|>Ud|Bzq_@_T zlJv)rA>2Wj6mLZmj-*|q4B1j%VeM->*K|4iJu85OM$kHNmak%vvcMCuTs}EBY$VP zC}nxrwHL^m82*vY`E>iE?qCmnlWyc$K`k0NdSjMtoG0`2$do+9;7ubBT{Y`Xz3x=c0eQ zDO$C?G-G&6^#E!BBNz_BNOkZZf8IWeUPIhp5gUT?z%EeW zHLImPng=~I#)63(bC`m=bIj~@mL}ubdOEL+c#Nn0M5MU)4ckM21k=qTg^a%CCudGW zu(nXSUp!c$HDYsr!5)VjZdHGkh!j`^3O11xkzCE0<)?tITdWSdjzDL$1a^dJm-O>*1u+IHch*TO>DFjbbK zJAd&$h`b!rG~?J8D$tHmR2|kCJ9EU5n=VC{{S(U4C z*dC)C*^c^D&Y|Tifrc}3;i{Fqn>Q}p6UWEmFXSM%LzcQR2dN0Q2Z;{ z_t)h!84O@m8qS1yURPHwzN{2JK!x41EN zPd$vC`?Aw?(bmwtltdzm#a%snB+R1`B00Qg zdc!wwaK|jRCL!t?Pr9F>!_0+*QviM1#~;%tS-K0RWXqEzq|_;3yn5KI4T7xP1LZB4 z%#EHDQ~H3U$)M?tP#KukIPzM+V<5MC!;J0Jota`n>hR=iJk(pT$5El`x`PZ$Qp8;N z&+smB_T5_gfaD&Vyx2Q4={0Q{I3=IguaDX6^Y=1Ut_+V3$TE>|R*5+On>Rhho1$94 zbIFnWdAHhPixH$KMCqDYOs9gRHTqf%L!M;z{l3uX;=twg2I9#1fHh)N8O^hs`89-d^-DZ15-iaPR(CIWfvDLGbg;H;7f<(h@IkFg%o=~6duaS&B~6I9H9 z-iv(t;}4~ngg2(N%-wm`6*Q6gWaTKVWTk3ax~|@^{^6>%wUMR1mbLZc>w`Z&I8*$| z;@v1AZCMBr%C@SDZI$_zc3%*aBCVBu&E^{Ol%Uni(P*j9uV24F>-IxMu`q3l0TB{P z!<)4>G&c9de*KN!dADBP{^;EGip}Y<@Z&}cIH9m;wE4NmveQ|PTx{(uljLPa8xmD2 zM9M-Od-G(`n=k{2%f*w)iRKie{dgnoA={t7)JJ1VVm1I0ywoqB1_o|Fp`IhT#Aut& zpCtfjDrAFLs%^QO&4bq5*#cG15%2{KVKXZ`+@~)|=fCn*mGah1_Y|io^iuh|^Ut^6 zE2U`6b7g&{%E*UF-P(9WWfIDIQ%DXI9+0nMI)w^ zPz#qi*^&>*y$lvQ(cLYpZaqMZ)F7u(bTDzEvS2{}-ANdfSj$VP-yXTwKDjg@6Jhub zJ3Hd}`lnR0A&+*7aaBqg;bxO{JfeZp)){(<^1g7Oh*ETKT-)fY;o#QG%Bg-|h8v&D zRely5v3&6Cg{cvTgN^FjDGlDF?tbjXOt=;03KrAjceHSnP$8pDxM-a4B6aiK3GJ!g?86vVl5wQC&UCuI16s^Y-itmufKf7xo zH=bL4GP!_!>c%L^=Ti(n5`* z^d=x6ARy9|DkX%Dbm^T)D1jioCDZ^R-u;c+&N$Y*>0%6C{yBcWP57YP&xpgdsVF|fxP#)#xL{qx-Iyyau}@tpmDgW& z{Pte6Rhw>mK&V{?N81Bo!pw@g+xo5d4^Aj$M6I+NeBMced|3h-5zR z63;={zr;I7hL~cZ31Prh71-NxiK<1V5Jb-m)5GRF255N{P#LKL@3E>(}xMc7YalcBrdEueUf z`&Ydo`F>1qImoj3#B%nR>~}}h=dY{niTdz>{TbFX(F#Ak#iy5_TU+;=bs>kflNI|F zqy7XAT>CPnOPtO2{qhhH01G{-@>5xHz30iOl*~_oyzKmbh3RwWoljR?H$iIGLKrHE zN8$0)isuuemlaiZPCSI{ej)|4!!JU?1=?|q9@Cy z{evGp#pXFY_Sj-~XTJ~;TI$LE=?2y6?T^HA-PIa(yF>GzAxea#WlS75Q$1cj!jEUy zhH*_dKX&_f3fC}m1@n9N*zyM(UCAR-QV(3KBE|jU!6dzi8QrQn(nb5InJX-{o3)K) z+!JB-r>YoH|9q4?+fL=UXlu(wc(_Ty*C{RuG+#OR3?oi>;Zf7Kl;b;>-4G6W+FK>%1iE>*gXU0pgiMhsvKE!>UGT%Rg$mXKS9(5XHy3OTKxu^Dln?7MmQw{NnNT|Mp`KQNtg#@6oS8oT?FdgmdsI#i0!O zld26c9`8r`3m-0x0FSk=V7D)S1LwKt6uDueVr)y|nfLEd`8_eMeNW2v?qgZysU=nZ zBO`-5i7R2b>pW#Ecq}H5Tmex{yCLPq*qVd}J$hXqbz$@}_d$LozjgjQuSVV_@-3hX zH6W8m?mo_3E7SCqxzn3w=v zM;my^BvUye&ic-kDhcV2sjP9Dw-(_i>kEP4y~)Wn+XPJ&;MXxC2v-w)`p{}U75Xo5 z>Fvv*kS@->%o7`98yfI|8L-IqB7IY40`0QYq{MF3$Wbp(Ib8h)g#BeLtCY?CieO>e z-9b+Ac#96_qB^R;V1GK#Yfx{Q=R5Jrki$nxDRy7JQ$&Gp5>C3h(d*qg{$09Y*5N|U zi&Ta=)e9_}e zvSYcqs1J_^>ohK`fKBg?R1ykF2f` zq?&`>AVR*%C1ZJLxBQ!)Wr3siz-Bg2uv;Rl^|9ka&s!3)n%8Y*(CPv^XWNp$!e|JC zOI5S$&v7{sCGUOPZ(DYbZJ+>kwlG_(E3MQovCaIjMl`3C@%hk=otv=*!oQMOAz)hH z1hot4t~LfdIMR;*$b$uq3hV6`Zt~H03R1vUUlsbc&%Swo`venziGVD!1|x2i#a&$OA0(iNGe?sy`Ski1dWJe@#_}ryS!=*)nR3sl>(Xg& z#c-+)0hqy+ZmhVi877N)cA+Wf6k!*qr^)jCqGSVfl-No|J+s~Ovat3E=Ju%D|H$M? zbE2fYNu^QlkSAlR94=Quc=3N^C!SfJc6CgFQhLuOb*j7H*_*w#oPFs%h2kn8P4V1B zEXa{alilqb^>Wnsx)U$zNQONJ&WUXl+!oz#@t)Y}Q2!Ba&;tgcd-3u?YGM9PS?vC&Iu8$v= z#h8t(7EZ6W-k#ez@VKJDw)Ur6@p6L9Z5Ui-hWhrR39jHmA1u*NJS#_$uKw6+it3T1 zgS}s_ik4le*bbwfD7SZPm_8QgT+wT)<-H=H1KsUi`91eJ$Ks1!63efU`}or?DE074 zsQ*guBL7T_<{efhpj{B}`=jpi$s^06*j@%Vaq+Z(N1p_|JGs!0y?Um;aM>^Q#RA*L zyG3~<-Z@TYmzt?`cDunCuG7a}NVx50^mxREN z_VTbC6J)B$2rEV{6EZ3iq85Jlpdo5L0@AknVpsl=?d%BqGHLZp+~imMVg1A2pU@ak zbGUoH;5rxje0Q(X^B-AQ+0oRwQWr^Of*82ms`ZcTS^ac=@l&7OPfc3#6&(msDf0Iu&`{UXXLMoPZKSfNoP8RZ;iY9)qY`P*Er4m}1g= zbOX3yo_vAGK?uhFBfCm~_IMLAo*$Y#Z*Z+!pc8l61{p})rOuC$^h_4|q!bxi{#9tH z^nq01=?NK~<_-;-6=B0EMp&BpMw@m*Is{G=+>*;w#Ys<;Zpkq;VLidD`H&=^W zu6uF`Chd*o6nSb^5pEQ_n$cah&*19uZEKMoPZ6~qORKLr^MS|Z{cyZ4(>^lYBFDy1 zU6=j|9c9mp%WrLLm=Fho34GZ=6)UPASGKF@pJf%}fxp8xW+XJrcYS=|X@}lYr0Bpg ziz*FKc&d$lD@<%MWs3{km6f)Cl9T%*)LQ`ErL)Dd+?+O*oy@MuFm%8n=b=UM%6~u& zl0AYslO*yqPplA3Y>r9oRZS=RMDb-C(GJiZPSrRUu{wg~g8kx%zEW*-ZME3Y$WYJc z6n#crp$Z5mqW*mmP&bNHhd?;ejfB`TPu`^>Zn4^Llv1fgyy3YPqQ1hz93nr7P~&z5 z+EOu2S?j}y>Ts9Ww<@~hu2QZEX^K-OM2Fn6_$#@<+9v6udJiw(73%X0XIsts9%~hy z<{?=uXzI0P6A)p~;d?V&(@ezTf$>XfVZX2yy@T34XIC}gD!U8@?FMa5SIV@ibv2M? zIM*`$ijAB<(KRnM#wuv7+96lZYOef62`{&!p-*R&omV;neJ&G#c*sqcApa8and)Mj zP2|UZWn>)RFzrC$TMuOP*MklZBI`V2Egf8wmw@i;!z-WLq{5;%nu@+*V0k7efNP+* zq?dkZ6mTouDo{?sn&n;!D}Q|M`yMbEiI1q;f}g3a99<5*{c?Keh<;~SwR3B2Z}HyI z;N~8&ImVV9t@GDez4e98%`Uq?9NU^eQ^5w4XT#bg?)S7Rq68ogxVIa&wPv>3Uw~k* z)mUJQp-zMiRVv(CM!|f4XxXNGJ)4)c?Sl2Mr?`RxoS4iUow26GM6;&I>6IDxb~x8USC|C#QQ9JX5v#j0=PM*R}b8a z(-kZM-LwO3)S6fG3x+BSZ`lj@^B!u9dtAC!t*P9}8w9H8;EI0Iy^tqJ0(dDKbIZtC zu1MgGh6ki%?v_AvQ|`-1%9pw1fexDUFb)BnX#51+g?VhQ=LF7h)C{L|%Vn!aOaaQd zX0K$roYdttQaxY(ZBZCq#r(}+TqIu0A}3GQ>nEw}oGl_mykd@EZW@cRZb%t88CYBC zY7+nS!p3qz+m9T+b3x9I0O7m7n+0S_Wc**=i%KeqyR2=Dc4$HZig zoAaJe%3SE=nz?doBV*Rzprq9@R=?#W7cZv=#@6_wBc#I=>vae5jnp$+YSFwF*%(%_b(xPB07~aHq<9Jj7SGDqiTZQ0LLFlrc z5X9N!ro!P6AL#cHZk^Zl$r(ebF68W`dm_?xIgO8o15sU=S?>K`ZRAs`oO7_6Q$w6) zZUwY_1C*XspNEd)Rdq-|)s-!n8{{1NzA>lUJ9YP|o|S&5S}h$CvSbt7wa80I#Zncu z;;k3?kW*p>lg|K}hQ){28C4Tjj~d0#vl`!LBiKt$7V7JBk%{dBt0fs$n`(~W;O$M< zu%H0M?l@*lm6B+dx5D-T>Q|OWZ%ue@6>4^9pcwkMQ}>g)v=-ONTZYeMJql<;DetUp z<^Mk$M}y>BHELPRhbFa{3Rw*E0-@N$$fk8_Icw9SLuWNDNB6*EncLpkC!U2i=d-P- z{Zdl2vOP8lFz`xNhNUKT@M4qJXZ7_D3~oMQX-Ix$cc=SzQ9eU8eK^gXh>QHHNY&)_ z3Ix%UbJ3L{#G z43X$V?3<>;7$B;mg!kV!(B5Om24$a2J(qM6cK)T3>Zl52HGq^u*OZi!qq%0Wab-IGm(m$3ak6n zbBHX%bA)}bv-&n*5A^^x54ygnXd@#d%6M`mF>qIwOJb|jgeIL~m~&o}BV9=3mtOYA z72uK#*yZ}L9#$P;e26@qi6bzhTLy?<_xtF|uyZ%uHL~w{;zpV5(cOHqz&Qqa+KD$^ z6#*FLcIQWJlCW)y<{8i3W!&XSlyk{-R=I#ls;^C1?w_F^&dB>uW3RG^Q9hdM0FX1Y z$b(ZTJbNs!R(KkoMMPXA*`Q?0cxX3J==u^LuJjyxnt5w$J+JECueA@)$sqBByLb>h zUX`I0a5GhWmSa4Qt%hYbPgBKGMZ%rpm6pijf8Dq@GU1&XkNWJQ_H#c{S=>J0MjSTB z>S_8~uQvNgDl5mgphkt0Kr%-Yxh^yq#ITpyq(ZAuYLn@OzjiuNVH zV?~i~@BX(OVLuVsaC`Y!_*+Gl+-z)uRi``;v_17gLo0Ry@OQVr6ia-~QYld;W-h%- z^jYVoB2=%?lZ6ceSq}CP-4(9jzVoCs**Xx{Zce;eICS?agyx;&>(mp2F3Ape3GXC_ z%S`y+_)VVU)9?StHbZ-S>%mk+L3`W@^h$9QRQ^M8qKo51Wt_DppWe=aXkbLl^_(Q( zczir{2E6tX4#w#vG-k;4z3sTr3DGg&H$jpH>YJz7%*J-y{T56*(0x(m&TJ^SbCzW7 zqI}jUB{{M%!fMzk%?on99RiL4!9RE+XmaE`kwI~w+1A1r>OMDxG^%JN?C(l7Qg4Oy zJg17rJ)1rfO2SceG)d&9>#`!hgZctogPB2nF|y)MHN@+}EpEbH8baUMyxg_E*GtJC zyAmcr8dL<_4KC{qTeisxnTxZc+UWk^0I%0_F=g7{t+fJu((Ue1a14^C*=EeBG$MdB z?tT5e0O(*d-*Ep)&Ba+I>A2*KKMxwPhB&rAu$fnalkg zk}OF_i#UB~?S7Y{6C)N8m;YOnpCvB%!Z1X0JmmU{=-Sxsv4Or`!?=mTw5%Exgq!nc zt30ybL$)#U(6{;9HTkUguG8=SAw@=w8-OAWp)Vi=baM)yh`Ob#-nGeUhGb-LemUJ@ zdR;g<-!G6@+Hya=GpXtN%i7D_5Ej?v?Fu>_zg8o?hV&Vy`Wa>YA8zEFK>m(iY}9M* zL5)_F8w-Ue@OALFHM^bx7X|dqTW0CNy;{b4Wwz+7`{#aT^%eRnu-iRZeMv1E%QR{= zdGdx+yJDVp_2GQcSLUA{HtS%G2b7T}yt5Hn9tGVJYA*2TFg}7lzUQdb-e8ibzvLm~ zCf78L3P;e28PLoQ%8i#`jMlVyU7{_ya-|RQ#3Rkx^6*vRb>Qe+wl>^pbh-J92}x5k zh`)dQs)b@r)2-iI1Lc*4QZ?a}yqs$-N;tL-TegN7;kwCvPr(`Y8`(eVOUf3(mu=+D zSKzA7ht?F1hdh#Xy9>zJfp4D*1ah)LK}V#viyiAb_96qI!ebktIL{x6YU2xeLU6`0 z(z8OEkWnG}74tS5_$M=2Vkfr><<0%abOba4?gd^M+TpNddvx~Tfm_I{%dbSEC1*k! zU4&f$*aqearPHuy!KX2rPf2u3m5;>hy)9(9-!AdS^qfb1l0;6BH^NDjEUiGxwt$Ei z1AqFcDgH)&nElJ%j+?0?`!^;^%?BLNFB!tgOHbgn@UB5Fd5ao@8@l#0Le-5^#f?*y z#SN`l6EDQ;YM&isa!vmd%#3j->v`J)l`E2)iQOdDP2$3k4~rY^S;Rq@pdL{{ZI{eP+z_fZT54_{1(ILE3TAMtMg`j{f)?7=A3UvZ{aL0rYpmc z?jZ9RnTr^^$z?=C9gq^cHLa|0eLQ2B@v-;WJ-*H3te0*elda3X(O zz@L_O*_NE#fYIiG*=A+Wg~W$8!nUH>1V7wLS34C^*kc(e9b;xef_13|ELC{|b0ABQ zCEX^+=hX#ZA6k0#%6LyA50we+O*i9=ity9%v(a18o>YzuF1xT=uTG)NSPNjI92h4f zAB?7;4fAuS0I*7)?^ZEGis z(^{SH>f~>31xt3TMK#g)fNyNsvfxz;GtODRm1dZYEf}~@+;3{&c92L^b>w1q&RUGcsR1wmjwH%_dvO{d$Fu<#- z#KRY5z%OCWHj6pG4AZ8+P*@bo1Hy__7*}*#1~!x~*#3vccNjpY?e;$q8;3?(L9%-f zuRNfmc8`xVNmFLp$YZKgvG2yv63q(;{{P4>M8Q)sWo0(17o#xMQ7^nykMQTWO&)Jb z-h^vODU>G&FG0hP;1obP@z!Pr8z(r1KV8L1|59&jZ|~9}t{*D5E~+zmwk4fY z{d6aYOo0zdMwG(scPZ&_$lTVCUL?U0wzgo5HF#k`AMsoU$wn_wbE~veUIAT7_KUsD zRt5JRj|x9-r$fwH^pt^g9mP9&{Vo0)SJiRLdx(*%P*G5@7a1SK)t`{sD^#BpegYXm zw}FO)G!}l9=z%v_?^@9M1%@cTnnq|&a86p_NX=NPU8cdd!@XDc97`7T4hG%5?|2B$ zc76%G|4oGS@iHsKU`6tl3%V5 z5^kEL(AfphgX|Cl=M~A_61-;xHkv=a|EA(Jq6B??MWrJ+Dwncg@yh(~AKYU<*7W8x z=~U|L#%&io2yi3MzuQ7plZV^ql1kuEy`Vl~I26A99)Q{jwcI|jBADa@dAJ%(xDjwc z|BG{^b$M6<@C|Koi#d)gJBO4E@hKdyk_CM-t`};nDKUim*#096gr1b?E-lm!X&L+( zk$RYQkOy>=uOE*BZbBU)6g$eIUb%q|O(@Q>^I2|&VCWYMABa46Xox-6mY8D_lD>8E zEBy8q{%?7ClFP&JVNS5lnfy5eAW;_iW>lFhU`ai;Qq#)jp+5psq}}{a9teIS)s;@~BvRfn-KW{eXuoxo6VT%Yl$s*e! za*5>uuTmS*N?+KG;vd-2S&{*yul?5Xf~l;IAaL#5kTt2V81hh`uR0d;$OFx5O783= z@ap5B^-b;v_^7u;5rFbtS?0PtdK=c+^%R#_f^96B+N&GX&A&XJ%g&Ih=@&3&XAH2< zwEs=rsdyr4G#j9g4*?>zg`)R$2$`zd21DeyX7?d-_aN+aGw?&}XVK+@2 zPX`7UwbjPfUOye8p1{~eDamemKT465QDiaan&pufudHz$k@H2L`GHnb(XW?JpI`Y7 zOn~@xrRkDqIf}>|#yPdq!c@8la?7x~X`U-KCChWGhryO?)*B`;7mm5F_g+}}RP`oN zsh!{mAOoaLXT%W;0N1^JdJihL0~%lwoF2-!`GZOSo~g;*7nwj?qs+iZ_bjZ8_&E%c7LrAk6-VznAo1 zJxJSrESwe%Yu0F-fEKrh&n$@q%Cu@>JD2R<)27Zf>3w;ZQ!XV%r_R?xnmn;11Uus} z<~Yjg8Bb-w(j7KMzx5bDrMFkwKVLHv98~5-3TO@7Ce&KW?Cco(dxvJO{DgJ&a$m(2 zB+|=Zg0|GAsAWU zaw?`2kqNR%oHCVFT)haWBlFMrSKluLTc}^=hB*rOj24T5$%$M*R4}Y;IrzfEyqlA| z`1dL6B0s9?*y-j6W|zNBx!Tb`$loP=iX@Muyip%Qg~MnQd;lM!(5S*Nui20hjv!ts| z0^GK$1_*{0=r;UP*hm~Hsg(jpoo$wkT;Aki40(yqBMR^^9T`z=$SIP_mYZ$v8z_## z5_P#Z`qw#Vego@R=-6Oe_~_qHpEtu9wasl$hs9)flL>1i3$O$d=%qsUeyl&CfjqQ}}G{D${lG7?KMj-tOi>cO{ z(qpn$H%+zr``fpn1l2JAvE1nS8MVJmfSqW~^N&njcA2N9y(^pkCTTF2x*5lsw%kqy z%Ld^VGkyF@a~K@-e-J+iS$&GsvGqU8OXXE~?K8y_+Jd|=EyQ`wuJH@)ICHQM2cG^) ziV71Zm@KJCc4nQ%_~tQMxSYtL{j=qAz73Y>Rcmk$4cTsa^WS1iV|e$zW0YFSK((bk zN*3rH$sHx7!t*=AMt)iV)abBE*-UZbLwEE{`{j?|uZuRW<7JwqHe#n#Vi}D3(3akj zKiPlh=k(q_O!^92u_0*SGO%p%J1Dam;ysCcH)RexY=z!h@VC@JR;+Hxmwv^$ey=sn zLyk;)h0bv1ppz1ua0h35myO9UHbvz;T+CJg(}K;PF1Qbqt^i8h@7|%YI^SMq=Ff5p zC2wSGwmv~}*+!|eX*9AV3V_9{*xWR)4-=Z%N2DcF?~2g=o%m$!Z+s(gdzkJt^+5le zm;tCbt=u;2;miH=_BFGK5NSNcbKK=>Ra}U3abLjQ1Z*?TKhgIznk?jZ_O6Ld6h%_b z6FKR4Zb<57c11p+`a*=jpbWhk_RzpeE8>_LRbVyU;=VUj#(VdS?0}xv+@K_c99NvW zJU2`?v)_~a$A%rrw4&lz60e;T!@RcBPwg|HHBiy3{;Qavwp0|=DS3U-C6Cs#WUSC- zC2=@J1O9!x-s~Mcx%gVkb++q~e+uK7!hPP}bKSSGJt0bx;BPZDaxYV5g6Zi)6i`R4 z_j~7_O}Z29u7B&uMK(t4wQ3C>Qc}|Ju^0nx$ z;sj0TiyRNkF58&ZPk*D#FiS)BtMA_j;r|+=2MLo(-blB`4nR#PN zZ8b#XS%$fkwN#;jSdrU&|Q5iOk&;#HQ|6;*sz-)ZL=*p6i3CzFk$GEw5(0es;My68v2YG|L{EVU0UcHX5f24!H2wlt3d zw+wFP=@x0nK)+C*lNU4^p-oTj`rK|V_}I@&c8}#KDkem>2sYSt9vM~XdU9Tw{Qb$y zshRnUs92Xjugb1Yndf3cuHg1E0hQkkx{+DD2utMBo3Z1G;Q0e1MLlit*V&8)<{ zN|1~BlZC7`2*O*oz&8D^=1(%Ql@yCye>(f6uvRRPXSSP0NK(PT`co~SEE0m}#P7ZS z^@{Eli-y?X2>t8~yN}#Zkr8q=zM3nPo9)j3$ihJxU3p9}WcT@SMPl~%?VpyGaks^t z4nYpFb0d7ZReR$?4axC4st&gq7}Q^hHYEYyZ-fVt#b;T`N~xKa5xWj?}fNb9i<3hK^pdiU{n-9hliZ6a0D{ zR3?vO3l9PfJJTf;Si5f6`Y^lHe9c|OoTfxNC1`VyOWVdQ!{3vbaEb5AH)a&wk*q=E zKBc;)i}P-5Y!?L#d8$~fuHdJ@SG+g-sL9yxnA*@U!QUV8+;GcfWDSa}SZ>whsh!_! zt%^5 z-$vUNeA=Ol|9Npyk+sW@;;k%zJ)1;pVVgbow?1pWE3nCC{L1ZNExU^;B~{~+@iyL& zXL!^v06Yz;w5^fC1vQzd6hvfJAd(ojKyS6`Glkv{O3y3AizVlyBh=@@DY4B^Mgl|+pAmIT zOK&~7du+r1JfdQ+yt06vdHiRG8O8T+V479T(IoM+*8E^LKGD&alSBwO={yZ z;w5Aas1T5Cwuy>5595{2EM%m6l|)r#*uY&EC{pLC1n{)pa0rlH=WBv~Fe8Z|E{nqW zyRdVY{4b~3x;W`1Wvn>d^OI?NziaO~WH~*d(?0K|Aj9VrAgeF)LRg%aL&06CR&M8Q zF{MvFTF-9h-ktK3rHm5clb8N&hknf4`!byT&N~qI6@u)tWMoifNvVq*+rzD-Gk?HS= z*5XkoXaeX2PNzmR6tAD}xOzX?Z}q1?Qt%yG(DdQnol0Wjr|kN2hz;$zs8UzcaYk$% zmzu?7q0}GDx=hPDJLv_OQ;S9tgs}$NJs4WwR&%q43mf9Z ze0i$-%isE$FJR9ps7nPlMCCS7m2nOqA7soyhuc6I}oE&;PfHF4_yJe`Ng}6KdQ0FaD8DT*MyV$79|$ z6^+DQsLk5WZn9+^56N@JX%}zqUold+2>C~LpW|=h131R-j$h^eFOtM`h$ZdZRxTAP zgmtW@+vq5T=7tTn`j zde>+h7m^-uyz5m98|)poiGbzprj@&acy=zz7hKIbix8VrzMsj*B|#$xPg9K%i8|O! zhxh_TX`z6s#nrcK4f}7o0p%T$QA~U~aU5#itLXXOwW^OcBN8FW;&!jfrRol~pjGzo z$`EWyZQ%FtK)}`<*kQl^q9s+oWD{6e{gP82miJVvj@nm%yxN}=qwuiXQz85~l>P() z0<8gei4W@19fwdfrlHaV-jtVA1)+h}HwOcq(9;PM4JG{N)RkDSpoU&0cxf;+JS}%X zD|me7g7gA48a0~UFs4mz(dL;Jqw?*He`FrWTn}hBIVq`bT79TJlME&oujTsWHAM#U$Mc*nXmhzLy@{3I;N}{0ZxQ{v zd9Iqn5!>5)4H-c-|D^P-RB*0>aLOBqR%6mtLbEB}K^|HP6Sl!wJsGI(t2D6VH>6a! zccTB}*VQ}w_XF7}vNpFC_WcFx-)S-%v%k=^gAI0M!4vD=6>phyA`lJ9j+g=nTafid zq?huxrF|+?xpIeF>Jc+yLyA;g>AJ{OEsw6uhZI{<@kh_wKKt3rt^G0~;NexVol=T7 zzvv8XtHLXlg~i&d#cc0!0^$L|!?dM198ukjXN&d|2hHli5}6a)hE@9GJs7?U$~`1Y z=<=3b40(+|?H>IQpepg7PENG+wtU{}G07c2T6^7Edq?q^n)=k<>aIKLOAn9Chu#Y_ zuHU3Y2(wqr)m)?!Bhyw!CyjcF&H&b-Xh)j_>^<-hYS(|kc?gAs()B)2MPp*9s)3PF z?fVNAu5U31d{*j}V-(0SPTEOZ!}I?YBHbObZF1#ohrM9x&?e z*!r~XS^zBT(YHyPB|iy|mI6NdEVG-ITCS%^qpijE36?seW>Q{p$)um5`0LJ4(7Jx? zIoiMwEwY|F>|`SI;@zn8%Gyq()O#40YO!}Ms-?~u`>T1NE2fht&3ws&a!L5L&!P3X5(g6K2 z)L07-_F`5h=X%RS@%jQRP00+8Ze#1zHF^J0mBG4{yKl9H`US+oUz>iC^7wo)7qEJE z(H_;(US>P*aVmV^(RT>;FPW7w@3&PWOs`bE2SIzYMMJ~D-2KZQ{JK*fvIcq+6AJE5 zEx_cE*cX(@hzXH#=i39fDh?a3$-Y3f2@sueNx=Ou8%AHXv6#0JcfO%`8qYhn=b5>O zU|(w1ihA~`6Bh{OFn*%8e~03?*_G2eTW}omm|$&2{6{tj?g=aT<7=J*3qO595XGT- z&QbAU{98@K)ybTr&lL@_7XH+Idt^*$ERwFEZ-^28T*Cc2%89HR7gxni)Wq|2=AlJ3 zn(*=oEh^1iz)r zAZP?@{V5>2jY`2=>Hen-5ag}RgaGFz83B#@p{GlSL)E`A57-T!<417~4sFPq#4U7ijAY34Cv*>E zikXPcZ8jQYxUSQPDlsq}O`;q65sYlt50gW#pXDxSdV@LY7JMuSt`&a>P-`S^uhA=p ztKxEMjk1e_Inc@Udcolhd%CYR8Q0Z$se#g{Es98AOh6go*0Ql4YJF`i?+sB10~%wz z0V-zaSm{Q(2X1!W=Jy2u;2oxSpCXXu&aTF9sxX?E<0GqPo4I`JN;LG+YClMH7X0Hl zl;v=MXn>FE6$!Da43WfhCs9P^*VRnc-5y-}MsqRCA=H%P_^|Q%UEj!uh{@qY`GQ@v z0#F%j?pEc!{6doX1A@(AZ=|lkDQ6d2htOX*p9Uqggm;hLxhJ01_^!au@f9BHIJ%fn zZDMTr#qpk~C3yAH@>~|BKAD6_i4SUqgH=>aj#VqawfW(r;(+N7@+U?!%8pQMg;ie@ zdb2*m>=Z;aquBWdzQ@s*%u=Js>;Ea!O4xON$;aBaO_?xQKnUBqT{e1aV@4i58s*`e zcMDcbdjosfGrbXszZT@1L>@Qz@bl~^Ih#h0Z^%!a-#7i5z;e5nVQdfMQww&REZbAe zN$pJAO`>Z_vl&>Ugq9cBjdJA|SXX5Y5AS?yo6>%JD0H;`Hr(|o#ehG+~=1v=LMdoK0=7b@leGn+xu8A%4zc2E*2W8U0( zrHTdMe}Yb5TF|ae>_$!u8`2IB#q&qr3T8`A_L);qrZ!Tq&=dMcW`N&otb+NUY9gk6 zLj`w3&Z=0PVydKsExO$cJ)>y?<<}$q`tIv2M0KG}+Zw$qG>a|!%IBY?Pr6ZEp^16@ zL{DqN-rH2H``)ALNfpj8n$D7rMb^5>qP*RV+2FYCA^Tl<%uC|TXC#4PB ze%h$v=l||#7hWz!dGuojeJ!Lr@nx1wio7Mi7l);xIz>LkM4mN$=P8tSxD>|euP_#? znl%)dYVZ*``;TmY+>-aW`+nbk?0#w8g1fjsP@y+we`zlN&~k3j+xx!yH64c(OZNK! z6h~KujB5+D+$IHM0uhpzCi6F%77`;5=6eJu-9Qk`+=5k^XD~p(UwWPRB(nRxXrs>E z1mR%UOL!M8=sc5$lBm0+mcT=6bHwu>6qHh^Ar`G7{bFJzTqu3XGFa?gzd9 ztV3*E`OUSDS1JRwjmfVWZ^Cbcal%B^XLgPN0IG@lxSxoHTm4CvCZe@<>M>WR-%IN4 zaG!R5j>_8rZzg^fkL*^9^??cP8%*uV(AbD-;u7<}g9NAN(Ak-_Vq^MZ3}-d-lvDd2 zr4iX2XhoyjF!LS^yDGz`oPl7{Tg2chqG|f5LhsKu>lPWkYiJw_1QE-Z8rv`ycvE2e%wfA__YQzYR>Jjj7b0>W11us!Zy{SlE3M-ZGOrbnIZp2!chmCC4!&{ETS7d*gaTzqeb`l z*R_vS@OP(w+eb#gaba1hT#f=K%@?UPL`FrWBrX8t2jH!p^14;o@N5yp{hijQ{lOl7 zj%&^3aHniB6Cdf)K#zX08&Z%6LIrMp`3soBul*Xx&6bG(Sss=;G@O=Yj=T+l=nLxq zsbn6$E<$<9U?vqn$jrLv)dZ3~U^nVt6?_$54{4rP>Q5cRB0 z-dLAkLwc@2r%;pI@e!r`CyJ|6q+6S+;thlnJX=o~Kdy^l+hv8ED46u{l;mw_n7io{ zbFGujSNE!p6icR;7FT2ELf|IBvdSjNcT1_E4iG~|o8XGd=rDSl&8CtL{khR7+iN(( zY)8MqV6McZ!mau)?e+vuZU!amS@rw$ax(KTwRQ@3Jk|MyPvGMu?(IC9;~Yy88%*@q zEp5Q5-#SrrL^RKG_+B8@mGn9FBNnwgNRxS3E<+u94-3&{Dx zM%1vbnveI7`B552_M|KYhUzczOK;U#*39#+wSWUJWC_ikC3-Q(aaC-K+pdMfe(VNX zL)%Wc#}3y@&v3Nu@&*Jih0-QtXnzR8205{}2)cWOJjE>R!&6YBWm_vSy(7Xndm|V_cPbUTT<@-WO{motHZcmF5o`qGQW*!KI9bw=NZqJaUrK-i#5>N zqB2tuzZ)t+T5x*yQNO&lE1{A1qxV~#H#LZisyx3rND=xx{PauOPD<19suA$t^p8w% z41wF*Ugmix+2Z{TCTWCQ|6tWsqahrXb#4OJ!Dw@$fvbF*e^!o@t2XF1=^L% zN6=l7q%3NC_k$p5jce`w&cHY6DJ~&aG{p(7BfG*F=_9!hZv(FZO!GP(>bAQflDMQq z?T9RT7DDBr&Lpwb;c`_Uz&X-U}p?{NdH-scO^L3TiY&COkY^ZP`qnLD*D4=M z%cQ=l1zKt>+9y^vR(Rlac3LeMC5Kn*9B6$f2;X#g#)IW@9gxUD*|rD6aijoB zgj^NioevW0P!Mj*A0b{iaBK_3%6Fpovi_wUFpN~gwSoZdPB%ln(V4skahblG;vy`S z5zkkK9D4jn)@XTq^VF6bPye384zo8PaA8ALT|6a^JdC<#QUYHXR@5wM*!%u$^onOy z7bP2)s!1t=gpZRb2?H0u!c>xs#{B5%v?Zf`s~BN$4ZK-37pcJ8+flG(GPLqQ!AVRA z;+vq{za~PaK+VE71x#iR=vGAaRIw5@QACx1Wy)jP`(00~$Ni{wi<%C0|2CxSuF6de z-kLvEdP(t`RmxD_gSJ;<^BA*dv>s?98_N21Aw5U#V&_t20gAHMqK^PZxCh`QFdd@H zLioO@xGO2OG6{6EHQcG%^a;tUcqimhyI1qM1f9zq}1r#aB@MM^EXd-dog zn}%^#by?Za_w+AUg(t%xwqsC_JQG}6WmK_x2#QzWq~=DXi3h)3+Juo3wff*alUONr zybuNuOn7r$La-lOOy!Y2E&XF0FcQcC$t1%#vhS^&Y%N0`V8h5ZGH=E-kU?gHDPLF%pbnD}Nob&eF0&gM16z`t7K4h5N7-PhzQ=y3 z_`&pv|IUu6E7v6aTkC}z`p_I@|C6AB1=GO3U4Y^Ya1OcDz{q&s$zxiH^MM)BGSlo! z!N)1He`8iY{&qMMuxqIInyp;v&gDbm+R{-dxzp1Zk(7Ls?oQ2VpO4P?%y@&UI};1v z4SRvfj)E&BHKv`WL+)W|DZ1HEPqtr9wdhOa3C>h_J-_!UG;z)Msj2DH_%zDW(t@k9 zbA&$YHr(EO*|nVIVWS@N$E6b4h5e8_dsH2-Je?wy=}IK%zskx&*)N*sO2X>TPR~+# zg2CJ8q~t+Y3|EWn_mEpr*vi3e_)Yy1xNG^FU$mp?L6Yf(#O@_~l{3Byq5`3Ut(z8r z?d~ZnRKSd^$DiFe)JLffIljyU<|o;r1HU=GN*X_){_?H|2JZp_Iz%1lpHUJ^cP>>c z4i#Isz)35m;}BY{F4x;rV2TK>176qa|=V~r^eRfx*V$i zYmvO=LaYfKCA)nQyuIPsDP`Ti)+Mv_SND2St4b&K!(RNhSyOwI_(54fp=_YH;ZA{>$Kgq+&^r zxDnPUPT6KD!TDL;^pTB{_9XEk*JaAqko#KJU+b9H4G`aqk<4e7*+~MdqRlReN#_#- z!vP)(R%sITNWQCi^mbnbXp3|QIZ&~feBY*`yA7IhH#-0BUnwl_ z*Y&`;nU=W|IKdv9BaNkq3kk;d`>i%l*IkJ7&7c6Tp0t~gXh5!p4E7g|&Z%tgv`+0o zU*qSN_$zK0df>W{BW&aZ9hS31E4_@2KH9bAavSY5Lw;1rPoFflD%238u1>0>L^36% z6`$3p59^9Eg;sgSp0}&WB15SXflw2`0?N(U-Aeq1If)(HC8}UAHNfMDDyl7RW@O_2 z%dumfrIh2lX%=04p;@l>$qpi0MGk6G4?Kzt__~=dmJ%&tGUVll^~v%;bQV zFpoZIiR4rdxorsyfGzq*<^`92%zU2&q~QLqd7Ix&FKI}s67BOzX9zMcOsym_IftLr zcFc1r*--TuFO(fz?h=p=3aj$|y7(;HeyZYitfj{phl8c*$9n06fv#NjO5)9zAB&@84ss9?dA!`^u=cnT7$VXF z1fn3l2?z)Xk&d)T3q4V30wNuRP!o!jKtc@=^3D6t!K{DH!K|4%fa9zr@00u4_ukjG zzaJl`k*mET9;2fHTxwbqgn%vDCaUVU8Q1c(7%eSk2O`V09y|u%Q>zx~ zM^$aKo1G(mL&$wG4(bfE5>(H(a`LritJ28rQ~gZ+GFwPgIq3;8@YJE6Z7a`%E8bgH z^A_Lnc+dKSU!ddE4IR;y;PZ5uXrDg*WsN8yy@Pj_d{uwWM1PEHsIGl$o|k(&sqAUu zt5-LzeE}Dx#23sD*SRb|hf%a6+0p_wU}Gz*}Xjro5%`@s%R;ncsnJ+dKwW{xnF%!@cG4>vlJm>JVcA?ywD!iV@i}`8|fky*PyFhkjzXJC~c_gsqUp9ll{X4d6)WM}k zWKJ%a4)=h^PMp`{>VcZfds~Xg9rkx2XRK~bZfXKNg4bpNT{KX;(kb-A@O9*ARFfXv zNj>(9mvqDz{eZ94|2)x*%7k4OajoF+-bn{oN45+rgT@i$3qr=|xW0A(;@#fZ3GUNf zC(dkYF6Dl?)%BOdlD%&J zi&)NYhk<<&0oYJ&6LOYU`++Ih@I4`iH>?c*&(%T+kC)VEPh|hb=a=$2*@>Kg42*Kl zg&BTUrX+lZ%;M8saMOOk-WZVFnDP?4G^}lx4Fc}7B!H!~VjI_9k@&o9nIM<(yAAp+ zjoXYT@wSl%ej%ki=E_a) ziC3vJu2DZs7bU%}U&l{U-*fclU=CH64?07cuKDgd%Jiq}mE^xyYKECloU3CV!`-T@ zrnH-!-%1=Su*eldFQ4st0Rsvyz~sL0J$$wxqlMgJIHUay_sT$3h>=)psdS4>lGM{MiJP(upbDL9hm_mQ;s;j;D2Gbhbg?=$xQy zL@K84*^a2zS9q-RNkwYMeR^N=Pr_$jM@mE+X(RlAFM=<|6&^%3PykF!VFl44M--cPxNFK>bAdbDqMHF@^KmF#>^5tF&5vpIj zzpJ(X>N;WG*z4mtYQwK69M&~qyp&2Gqu%*~R)g~VffLx{q1FBrbIYFCRnRyXT?l!hFIsZNr z?8c+~vv{_#Qp)i4Eu1!E?oeYI1@zU+q}?Y1)g~0v*Q@tJ?DfqX@gb3e_QqSHv|6|ZuSIV!cAyP`gDilM%PGy0hQcVY4E%_ zbAS79g(4zR(s=G!aF56P%SjL3*?0bWp`UC6x`1&$RFK$34F-#&lFggyhn+Hd9*^wE z+3fY+S-YgK{8qB0Ju$eC=knJ{$Jq0sy<8)!Rq&;tu`amJZWg{DqPDcJNYwCgMf&!6 zk59P~Bp5NpZbI8>(`N>}TYM*c>=g&ixV2N$26zo;B$wSBPMyrUzi+lBbG}>O>LXf( z(Lc>~l(EApw6dE)C@QWX7XML9^8!3BFjJ{j_st0d1V>Lh=Q^5Pl9?xFhdLqJeCQX# z^vPlB4@!?{gMyB7961(xLwgoX#ANEybJB0DaQ0kPUJ|(VQ}WqZGWr1{Xcij=t*&Uv zT`7VP`XNt(^weuIZWhNJwwU!rtZlqA@M+A_u3|j>vGMYhyD+|mx;li^82UYR+5>J> z{x6$h?Y1xTAtxmb_|+jXlsYDOfdd=3yYT_kig{Z5LGK*)qHs>2=wijy8|`xKFRkQ` zOCZm2e*DJF^YWg#2=q{3A_<(djW%oI+;Q4bS`<@bu7j?Y+ea4kkYA{7n@vAAk#{!n z^CIuQ@U2U@>9W3KtiAwZf)A(2iq0J*@AB@%Y(F{l5Mw^HFp`f@UjbK2#<++L^1wtd zO4>gajI??UpJ+Cr#pu#q8ps^rCx@m#$GkZih8qa&Z&%=YgO%Ud>ovDNx%%FW*BX8j z+h7~N4s;`JZjSvs zFdQXONDcAJ8ULnZTxMRl0~9$XerSh^c|yZ|J3KNoXdu)MzZj`;G8`(}boB|c7!gwo z>OQsOqQ}mrfAQhjim|!6Hyb))e~IIMIyc6&?N7i(d!egf4QMPu2If2NrXsojLJ}k#%PV}wS0*d=a9Ptul7T2mp zyhL)dfK%aKjxez_~upi7r&ogw8G z({hDPHDlT2f#*(-7s2woyW~p^m32#^I$m~tZ3z={X34X-cx^{ovK|82JT)T`Y_5{4m83wG_p3I<PwSoBi=z;9hnXzBj64w4@kK+eMds&Vo#daQ?QGPP0$w!56GTd&vL&i9&llPmMG zr8W2FJOVlQ{ds;l)k^8d0z@=M3ZLG8^5xlDz09RKBdQ6Ut~b+>iYL+{r&e`@ zD?`owwL#=RJ9ngw3%S=g1Fo1|`|yMH?561F(to~}j-mr+5fWsp&>ge$t6#g+(~1oi zy04_dhTu@bt!=6JMz(oYkiu38^HE#X?0k3g$tdNm6U#KA+{(#i`4bobYg5AGCW^=VSi zy-_8miqCUr5rDPG4OhP%J684uE@EXUaMw|8?N!(2vup!z@w3dwlsk^QZ|J*O0L&^_@Nj;3dhh zW-yMC=P+7EmB%Tmb$v#3c?{J!ON0yL#R4qv8&`Or%!)R}sJLZ}0#Xc9cxt!Wa zlQIUtxy?3*MvsmIFSIj~C4?5HBY|%E!sUR9(%j{`+iyax8!gxn)(r~I|l&M%!=HyMd^x_`KuX*(Gs+x=rM~S z4@`}uF~z$@oxT~C86dE!?xV>&z`)FPgwd-3;$IDz7?mwg--y`ofSPIqe6aK#8n?5V zOhGDjS4H^SN+HD9&WsI)2}7BId#yd^TS7|vOHkZcv)p=II&x@MT`K3$gEpbmbid+0 zZFQC9mAco4-Hxf7V7!d`wMog8H%r2I1!R){rpV1%%|MRUXTl=NXAmGMOvjwTGlo*9 zt$5p=tBA*~dovS!H>U0WXcL|!k^}uS1d}g(W>!fkdWOb^7;+%ZZ{!xQW~^t`k*b(u3;a(Hfp}a#ov5W4R;Li68uvrL{|(l@Avmg#>&R{TtvR zRbJ++Y9%*26C-wp5$77@HwO}6VA^(51^B)GPUQ2$knfGRgfyO|vt@hskLIGP^^;r8 zfEFt6UD^SpmgL^!BUp2>SgJsI$>ZBGsp>b!a+d3r0v&Cm$=jefD5tjR9Q84D0N`(B zLG%WR^H)l&SNXOeHgxQCcZH>n=6+;3?hJ#}O1!B0WQ3`NgJnw&+E1tv2bClm-=?FS zxeeP*L_1JL#oi6I1}{)O9T^&LRAokeR{OrfO7FB(W_J7ElpK=0sW@yA43jkYeM2Sr z&DrwCyF8B!*#7rF-Z)@H?gTWhdQf_KM#m_IvW%G&|J8r;95Dye**{^8Fpz10Wh|_TNE(gkH+(1V{EJq68U6&7CS3S;kG^%x1qSk=Lc|<(e z=V#)9fmDyUW>tZ{M(bPKP{hrdG|PFse37x#rp)k$2wFKMtGdkVZ}Dw@pAi4#T~XaJ zeJLFIMohi|=tX+`ZEsq_nK8mF#Q%;dOdESt6TR0erxb}ke!_R+RQ=`({W$#kRpZK^Z;d|YEM1Y- z3kcI`psN7D{VTv-9~aGm{n2*{_0QHJ)QH$vOFMgb&ufC@&NpPDS|(p^{c*qr(Ik8> zKeUT?CHV5u=OP*=1hD_3lIMzIz0cI_znqQlUf6DMZAn_3Q=nKs(C8D>|Jkr5dgFro zbRK;Wph5y)iZ+MqwA0aO8CST!qtp8pZdi5Ct39i09&rNr=5)Q%?y$O)TOe7F6adYr zxCg~F6{fDFW@B!Qf%lF;4OF~Y=yIXbkEQ<4{N-~6k8<&4GOvg(n}E#f zyy>;L58Cd*+``>sWYG`rF>KMgqU$N8D`~gYD$;zU2pRAB>JNkFfu=se)F<}SFO7UR zOL#()e+s6Fsi#palgSDH7&(`t)#>@_?8w%{v z07$C!)QF@(wo>>+{%EhK(6hYSVZKp|yb$Z>Uf)3)zYI`s0c&$P<^^OQp>0KGx3?7+ zGAYn4&$+4Z}Gdf-7=fzJ839zLsC2s7pwqebxjHx%35ap?qjzR9eFOa znOxZVmF!!Bk`207^jrR*0gTK_zQE7#3ktwRSHZCJJCt{0XM>$&%}Ab`s!8LYK!lfh zl&x1fDN?xXRk^-SzB@H_=6c|b?{evCeM3eoxzzo_<`6DK2iHs{9gfTz8s0?4jEP-g zXqBP%?$bJ>waq8Ir^N@=*n2XMEGSPh&1`&(LJl^Ms~8XP;xCXKe_XrU9m+ez>fLkT zX=MD%M!y2|3PLt`8EBN3-o+J-fZC3-SoD$c*XT_@-*n}GC=odibHl09KW@aD*ZQKpJ4p-jEo4*8FJr~)--_9WtwmRiL1|AFnE;-?;pv zw8`r}=lTG!h6rzl?rJmMs#j7HA_*c``zqqs@H?Q#1LfstXFqb}#I*60Oe*_ojfqQ4 zZ|w0mk3>>9CR&vAk8)~Ofz*^4qoH_N!_v~q_N5=i1n*P-sX3PW7FT?`tE;p5!-3TK zx4keXFQdqxZuMXoSt!O05A=U`P39fbT&;~G#6j~9q^g$-9gTozG zV>I+U6uVPYw3E{ZVD=VpAv*jMDDt{=>dX(JX>9p@i4$L=T&)W)UqD5}I0X;HQWl`q z3u94$!0J067K0(sc1D`ycothdATkKwm@yDKbI-0$HZCrEQVd6kj5!xX) zAbi#Fh-#$nyCvf)u))K7OPc%0eco3cxXS~b%yG^ zSYt$-J^b;lxb@VD(3HdbZbJ-FG-9q4#Kp+iFv{+16)IIM_|jL>!!d+`Y34y>FqQBa4)>E zOO8fPC1nQcxGrXxK$l!sm%c!I+2OxfruV5z4LBo`{t^Ty>Q2|C-^PUND2!@9qHXf` z>#r`CfXjjs7n_|&db5UV-bGT?wSdB2n<)Et7iF1G>4gPwBweg;ZYh4J2YcF(z<+TS zAJCSz*lK~bwytJ-_UaKCLo z@~)6yULr%SK3YZo!J{`R8do|`m1yB)_WovJQ)=z8uYDidixN)}`KvelCii>DJDrii z7gojY3<8yW2|Vgq8WG!ZdYg;?vOTFEkscbge>6*Ie)DTk)c_HS|3iy5SN_}%1UssO z#=;Z{AYh?>l977Y9xN^<(*N#u+;q8Tsf0MlLjG!V)>Pqx>|CRBqz_zm?nfMCEYC7P zW2Ca0DrQ;>mif2@0nJ_btWZ2_{uA42$@grMV;>lh-P8e}4Pg{ru_DcYh6z_y06opv zf(%vEG?n^gfZNmh;+G$d=#kobJ`QKihkQ>vsnwyV1c5@ONmiQ>rOg3uyKc+Xp1q=z zMVW9Y6f$vyYu193L4Xzdg?&#D_XNZ5QB%U2P*{7qE7<0K#EnKli8~Z@p0~4FKbnhn zA$=D5&$6p&<7h?jlp|c8ND`v%7S%*Xa2=Jvv*8yQKv*+w=;FlAYzi55ufU#wb*ZKOzt*uv{{i{IRRt<<_+TGVr*H#j9UO}(Ef+aeI&wP%X>QQ~oR>J;VfWnsXXixKBwie`fjeXT4?z4d_peZ7GkU7#~ zv$gjI{hzaN*PfApn<1@OS^8#QqYEUercX@261T25B|p;*v+`a1AU>4~tY|r2iE|L7 z?(9a;F|A`zo^9fZptsSL{@E{~+tu4tFDp zG>ey`pw@K3rr{a{r^!3JsTov^0bx+WI8xHMa9yCT;@Ez&L|wo`tuMYN2U26}t2t)V zY05JhW{cCE-P02Er?@zbGf~7Ers9y#=OEW#4xB647!UL#XW!o9KN?w%L4ggK&tIxK z-g^32Yn>899uMx%zCs%*Y{IPssIr8rM{H;8M%L9t(@cFlg}a0wuDv*4+z_u^ z8GBx~;$OCJAl_yTx(anQ$8I{Pu&r}9Q^D*(<4{Ge&9R#eA&a->|I9())Cm&g#O&xy zl(sH>&Yo}eX-o709O8VQzKp*#V|US5T=JsC&!z0>e2UCxHM6NCw46V;%tZGB5Y^Y#>uie!f2yr`m1Cs+TTWkj(jFG`?ui;LJxHCp!$r+Cb}x;b#u`P zt9qsyW5&6RdAWhU6jd9fsGy)GO!985tZKnO67j2ow6g1Z3H9xMDlr^b>jA%iv*1Ny z$aDs{CTuU`yzA8hQMqZ|sGTgnEpVpqF|u57-s>Aizxc&=uG!jdS085hVn&ZTd!3py znVi5?^?U}V1IvfvZ8jkH^j&Zl6Q~+qh+b_Q+wc?}XsS0#Vo$hbifnkK{Jv2}L{^Y@ zq0T{ROcnG8`E>Ykd%#ioPC~59&=3S+7?`Ce_k^xn$G-H_!Q>{}c!WZVu<oii!Nd^VsY5safGWNkJ1#3D>=ejXuHxGIZu*jp=c~XvV7+C(~gY5k=s1 z3oy<8>_h6cq(H*u+97EKNMI_=!N54_l-s~Z3H1@SB*2HyMYl|&;Miee68-ChsXX`5 zM5vA3K2kjMe59y2{7p~F<+(Q!+R>C6>;(Jwfcb#AN~}$N{XkCq;z}FJ>k)t4`B+QM z&v352TTGy28E>S zs_&;zR*$3Ubtfgd@oTZ3f5bE{mvh14+8aX_JtEP`kR#wFEe5w zj2N=L4_Y(dePW^Icd2x3;8E`72&;zZGow@~{*$ys!}?^;Ij>%STqqh^tOT@lfjdAK zm>7*HG%N^-^x+SeXCgpR*j7I2yY(}YX%7`2NW(-^1d#T{WfDC>HaW}(wT$u{cqQu6 zQ`WDs?S1aER&CQ_En#Kz&Q_1rJ}i#DD2ur6C#(5W=7bf9=0|3gR-l1h8<-+XX(SB# z#F>HXk>}mUUhl8M0~M;8EfZ_o+P>axe?m|WJeL;O+aj7aRWuW%1M%p#+;d9()JJau z(=e(v10q&yF=VZ*Kue&qp3&2qEkPTvs}2OLS@fNmm|PCzs^4 zxJY&YD|NapTfCNT8RJvn&=YjBygSTam9)R+!FEDC2_-72-}&^JXJUWG)%J5% zr#7LxKB=I8edpqR!sqAW{M6uN`bW02mn{&w-H(AE?c)bj+^a!bqb5vXKrmK9oIKWM zb^$HL@Tx#HwO5tdo=QHGO?iD<-cL4;M~q$N!=t2A#$CrV_9HA=o%FHq*vMejL2ca} zMkB?6ej%r3U`j>QN!1J$Hw;yR-$ z3P!f$u1;^VpB1<1SK8ixHv|@WbnFC8GGC=fXq~+-`{6MOv!{%lIr~#)mlO-iA$?H(r^x#&KC!Yc)>R$S zINyO_O%%w6MyMpKHw}CL&jDc?3JeG>z<>~)%6+XVTw(Q1u+vZKbR0h=Ep!LRzA7f6 z5s(^}vwR~avuT6Nt#0BTjO#=c&r~bl&Nq;p zz1CFN=xgHhtesx&L(|Ma-X~8&76lgGH{HJePQT&f_4!X02q`uEjARWIJAX@qpRbNM zy*KoWPCU-)&wz$8+37%Kp-~JOsAd42=|LQ2Qlvu0i8X#5Vbs=dUyv%DDuyA(BmCZP zAtwdK>4UxGesS78HJE>RmQXu%4w7$9O26vZ2vt;5ToTUI zx@(@>qViowYe*YYWExoTy_D3>LwMX-_O~v>j`Wq2%icgZF+}HC{a!^h&V{s=wtyk@ z^z{WUmgVM&CS%5W4*sH`R2-J!nq_s#%mY)qZ8ifjTD*^?tJmx&`r;Qw?@qin(jRP| zF=`w`TLsb8&EAQrj-VgUP4OwnSq~tc$6SUH08eDvUrCj*o;8E!Zu^?oA&_r+V}d7^ z6DN1NgCN*M_YIZKbS0ZYepDHMt7Szium-9>eO76`UVM4yoB)RXxJ}@ISz6#!z%qPa z4$2Z3GIEwG+NrCUj-xhg?!_)O9hK;uV?yYKSzctWIWU%e62{^mc)6iiCbUA<@|Vo^ zcZ}-)Y3s|!f-D%m*T#MsjJFA`CDY^O3 zq&&JovVp>pMLac4s2d5s8Z*kBTA{#FA6h^#rz6^-oJ@#%(SN>~a;@~D9|RHFuha>@ z@mei$aeGGPc2sQnZg_oTWBggfp!X()w0JEx!b#TCA@fj+Y1OX~EW+5Zu1}rQ)|`up zl5V7*557*IJ7oEtgOpW)Vg8__=P z9dBeodcg?WQ$fiiJSFFcmJJLb-ddx-{Z zcto?}*nY0bDZP-p&)|W(LI1KPorD7@LN&7^h58EU{|Djm9?~7VyTk&Ddrs4?QN^te zgrMiPv5_-pS!dKkOaI!+XY3>#C?-u@DDW&c(yspXC+XGhSAo2^e2X@uFmJr!P5X|b zSxs;3yDEm2(U58acelbjZX3p@L|Ad^%Sqv+%C28c`7T-l9_SQ_=tYb(X@(0fes)dU zfQ%D#&z2($H+KovY6S{#4;#rxMYh*AYhV1Fbr^4S;==VT5{l?RI~~Ieoc+U%;a&CY zXgsgt|2)k!>R&dW>fWn2B};}L5}va+x{WaIr+HW*%82E`ejA%-9OyeN{PI4!?+)=O zg=s_PWMj1IJ{dss7OYORqSHFn!TkQa4OqBoTjwdj_l%MV&IXkaYEoP1&J?Q-abt^^UdY5D=rR2 zp`4D?=BFih3_?)ACgwe($28O6&=5VHBbWJgv0+@9s5?IHuBtWVJ?cF~mT*ogFqBHbP1N&|t)NG-|;C zE32^|n^`9<)TMc}6~F^n*fA_r8F*v?ev{4}MtVM~^GTA@1sFkU>4nvFC|QIrHSLw#a_)p%FlY3h?G4gC z3;xpvF$j+m{e`&>sc6^laY~s7bltva2PIlX4kd=;I5f?GFT*d)_BToav5+(Yrn-r1%L{Tx365XSn%R(j;s*!!Lv~?36AsH0GT&eW&B=|03PZACnBSt|mCaIfLsEx~mEYkniTAVgeg)LpjG&Gb ziu0R}Hl5=`1}=I#5PZbl*9tJ=xm1yBkftvcNQt_pc%WgT&L`|de51w9CvrO=o3%Dm+a`@ ztEDx;0X9nN3pm4_p!2zD?Te(XAxjo`45Jd4x$8wwZ2;_+>J8XdmN>m;T6(D2$T4qu ztJkMc!WMF;T5_o7rdBf@d;@mxa?$!%+yZm7SsY1M21R2oG7X9uN@g(~e)!wL*ypa& zrK$n!)^`UhorY6K=KX=dz`7AW@=Y|GgtCU<;RB`~{XWC5Bly_ZW1|r@xzjX4Q_+eL zTKP|_suw&_f4*0^xn0mUE3O*L18Q;Hv?iXgug5aLr2K9e2B}SXv4jy?uW>dhK99%n%HMxUdEdc~UTv27crVzc_fWgFI(TYE5pL4e-k{S6 z&K!dL1QX|3R4k^QgV8m6I1`CI1Kg$U)vYfNtMzj4nc|a{(_ffKzol3#=w8u% zo^^V`$uG`#^JCw37!{zgl!REZ%QWZ@Ghq`1@SPLW zrzof+_^CpeXjKmR6evbBt}fdC@9$_|l^BDc|sO*AA)v(1kkI2Tk|9;5Zy% zjG4x~2{#1_vT^5`=jjpQ+92E?n3%%wPWj`MkmD!$=T`AQ2(#BR$v4ZN9NV)#QAQ|~{ zRyO8%P=NSaoe$a6YwjVI%z25?`IPRFQ-XZ$BMcX?AURbT;cvo`oF`;uf+>mLk4IM? zKAC2ufse9-FT3mTjw*QHdDy8>XwEpu1 z+A3%Wi$K-z8~hYhd#|xUV+(n3$l3q_JEI`_E{>MjHZ3|_n`vD%+^k!$65x^GRpH>i zdth2yJ5n~-RyW3Vc421T_`A(NInKIaJytjfLyRRJ2UMZiLc9v?PysV0)}b1oq~aH0 zHj$({k8!KhzOOk&SKlz$X~&KGSpdp~a1}stQy)L1pUlcnvuu zVPTzRKvoS zY#kJ;Bi2Iu(-^;?>jGEML*7u;b$)ifq$E@YsgJ=V?sa#tI zZ!_NWuLeOB4!cm~L~r**`bcheHeHT7_4LDnzT>Cz(ulxdbt`6b6Wq(Vt4q$u_b>~< zrTRG>JIZna&dpmxOz3CQa+-tmAZ4(^haDpd7n96z>j!@gAC@qDBXNK2E&DTIoqT$h z7^1BY2)ldc^n!)d0*bxulc0xN4_(yPuExEHa-1yDTQgnoZ0(T-sPHpv3;=1yv>s*h zQv|m;jJgM?wWZ+R3*CWc*PJrkGS2eZ6l|UQ_?9~)vkK!|n@4Zz&>$S^_vY~BxC@(j zDRlHss8rQ>jwh8+*al$qH{tg*j?G}4LnrH?SRD~a<{Yv=j-1`VO!dGHh`%lUA8nhu+LX=M`b$3DA*$$O zb5J0yGY4(gGP?lJ7)g!8>1zj{YNU&O@l!Y|Y55pySKC&wZlPZPt8&97@kz)(^Oqkg zrA&DfC)Wsv_DFAB|Db}`#KD&P5kh7qWrsTRIG1snhJ8ZgD+kJP*F)ijD+ggMwPkgc zs3j}9eA+dx#1xZZiO1(k!B@_O5e}Wks;z$V0e-a|>_6kgR;q#;0P$o4;X;yE~;z_eskG8a>Q1(rSV>d`ESA9sxVX1lV?u*VwrTu zb_c+76cYGXOgYqoIE;pP<^5?>(^Q|F@*mUS`sRAHJn@?Vdrn;Fj-@-irJWXhAB{gY;n=N$Fmfq$*ZJ6Y1`;%@?Gbi4XjYm#*Kl!>G(BYMU&{++R z2Ab_f@QXpD!is#ULq5nbJCXaKBBkc~0I><^C_jsV3jerSm9 z>=YN!)}1B3%T`Y!b+WW0I&5D~C{6rFt9KK!8Lp{UtQDArU50=`)sy>CizRE9;(Ffx zJ{h3#L$leB63IjsnUVVhNeowYM?Jbj)8`3Tz)aSba6aFVb*EtDi_18LVwqp>&r{E9 zB&RsQK-k%%+Xr{75s)R02nl_G5m?Mrp=FmAtR&m^dHUd1CQ8)usxL>c z?7}D(Hc!^iUJV!cc6m0j7r+MlIY^G_@GP?~(?PL5P`(wR!abQs_{uN^JXkW&kq=L! z>4o^MYl>XFRS^T^y5P7l%mt)RuTHn9(bK?8)7w8L=DP2VX;|GPwK+XgzNlT&8~-Z* zg1djMsn5`cd(WmWuTRh59#iNDq6s*gH5p;Fo>@iWXOtzSb&#=+FtZ{I$qW}}9_oN< zS5zhq2U8*&u8Dk0Ij8GG`h*_oSSD5{#ApMaKn8ZMum$!%%SbG^rm@^GmPFHt$Bu&W zgX%lIBw?_TeIJkGo`c7Wy%Tu@49UE_mQ7`QgdefqD1o_KR*Blg2p?x=nE7`@pS|D$18|sLRxco@G$X>-*y?&^I~aOVqA4ig6B_;{g2eVZTSS>1>w1 zX-&Vk(xon)Zvgt-c;L^Z?5q1fdw2>wV?!74XGAPHisIBZ#NiHd)ifVg0=#e;Kl*-r z)e3I`HIUklSu$2P(spnHA16`ZU#6}tEqvbu0T+f#t_;URX?U<)sQ%#mr~*^J)b=R8 zy+UEFLJ4b|G5lcqWpx*~cA2DSOGpUm72C0HYT(RhBgO%~aDB|w2No>KvfK}F_?L~T zvXP*M2_-1gb_>cT+JlPSM{O%2awk{QGFl4LcWug-E(#w;hPCEb-8K1ziqzpU7U?TP zAES4+u`5MCW~5p4d&hy>Jz?CiugeIvNg?#8;$WGVO1>fLSElke=>->I{^NJ}69`vP z8?$ELi9C$f4h`GWF}3Wnvxgi-5!>)4o=f1XKe+FDDCQ^X|BQGoi^w57AQv)D(;@8+ z+M{Tr0#veDeX6LAFeJv*kHsbWxb?lgAbLQO9a-$*i;8szm%jh;bk0~6lCkVvH%}Dh zBRB-4E!;OF?(DN}@5{t6Iq9b%*P0Y@L!O z{*<{GzZdw9F1<0edOCq1$~dId{pZzcbyyO_0o+s|kNAsb+HSR9aGa`ze9nAtOKDpZ zMYmQk6Rz?5jNmpjYJwP5qjY>Fjc{SWk$yUo@`Ml1-Cc}Jd+NKNb^N7XUv&U-yzce- zq_&yGQ7+mbkI6?@B)XRV6_cg=CX_EX+Tm6H)68?1uW)gFLR^tNO7?d#yr!l6^Q?vX zSIgt4RFggHkc4IE=H@jA?Q%aBQOUjw;JV5<3Rm z{@*&p>wzd6@OzOIc|BgX7X^ye_mOq0z?z9!CxZm~OA(ESqcbsn!fm|D5+w|m#CpBLPEbKP*SI@hk}(tV98sxUA9Gerh~-5xao10No+GoLlu z#V{qYPBDkzLy2F9;uF4{8eLmD7$sld^(BEmwJpQ9^h<3$hwP~1Hn(^Fj@7me)btQ9 z_9>-%deo)$lT5u@`evS_L^=-Ov;W}kGAzb`DAWQaA!4+#u(Xun(PuEYQwpVKJ)~IF zS7rDs=B7$`zS@wJh;j0BDqyS z$i6r-g8kb;!A59}HB*;-Yvg44yQ&hog%Nv#>s`{t>b2?2UBqNl9j8G3QLb8x%-ktr zMPY3&Dxt0MVM`&*%Ce}{YC_nid}OLdK6!j{Qu{lzVLWl~9rDAQZz2og0d}Q5bXahy zeFUPpFJBhN&WJhGT?szf$SD50jK7`6yt;dEd$~Ui6`Q89PCw>(c?z$Fkxk;c*p#6C z;$OB{ZBO8;9f~>2)F&f(r%}lEfHIIvj2Rwym*NypX2UE_+GK+>lN`D4zx(;moW5uc z6tg;i)}ga%z(Izx5t*&UxI{y?>)fEnjlLyQ^}28Aw8G|&gx1?n4F3H3?!9o#7fJKY zE0fW}Zph?Y6<$9;!aB0>|A;<(4!p^2jq7PhXPuNFr7$0*^CSnseDCZlr}F3W1AWX? z7Siv%9q|(E%4=x^K!avC@KJldEMh6vXuyGY4jU7EgMPYIoX_4(W!XWCKAqqrS~>U} zIF0W}eZj~l-YKB==q$u#JUt@I=iIflTd&BQg|>llV#~MN0kXHoYpW#Cc{>sb zf+cT#Mi?4q-of{X-C0KT7Vhp(>@xoxVk~cNW5@Ser@3fid2{0IQ|MNz>xf$r~5?a@=n|P#sUX$I8f7CV3zr|GJUNUcbArT&!nBQ+}1%+PjlH^f)g$IDTzaR7?J{6Azf=;7F zn&oJI24c4F^KWj>K4d(cMZ`q(={BG`OLHCLB)tgW;IR9c?D*}^nH zkAr>rADq2+G~56G_phbPrbg9j?UqP~(ORjtimIyGGi}XCBc({JvH;P|c3jH~!NAin z73m0tLH?C`(@dPNYsps|*pANcX^COYbA+opOI|t|kA{2dKHX%%=g~xgE!tMig7?3> z-Wb)kDsv0A>&OUG%a~su*V6NqUw^dK(9}r!f3! zHgeLrCcp=I%F`2Q(lLA$dKN(B0uZ;Dfz;x4zNxJ|pW?YSymGP^$l*f5+LB(VaYWvy z;-Zg*zoOr$;58S(XI5q*zq20UOX+j@)%yohqKXT@KK@F4NQe(Qw2u+|-{_z6YJYLk z6AjU^Y#{fYXf@-0uVoTn8*r%(SBrymF5jDqj#2VMB&+!i<*bTwza-N!>?Nc@=Gpax zGxUL`DspFkQ%xNmta5hL9#%zoU9m8m7#M>2J2jg%a;E7RM_mt0ZTJsgN+~L(T?HEL zq1q&9SrKJ8BL7LQc88t){FUIlrmT!-nRu^oYBJyz|I^nI^B*3nJ+NbQKnqz@IeQS* zKEK^A%0U(E;-8fq{?jnz7z#45ZX5$|VdbSFJDZ0%eRAXTZgxE@k5-zsT0Bg@8+abg zK{Vh&DR(3r(Qe~+{RKM=AK?>GbI-y|vaCXKt|~u9y5`G7yyJeA&d5-Fw+q<~4h@i| z;5HU0w{(Vdfc#>$`Xhb$0X$3^K zm8)~?GyyweAE9el8vj~NwV?Cm+d@liHIU!M^J98HfBURgFQ&hh>3PlNvXqCbZ){qh zY0;D2*DFgd@cg;Z(n#B_!K?>T;qdj@Q&g*Lnqn+!*P^D5+re126cr3;e9xC0m_lj{ zz{zKQrOv!Ym9$L-#wZA41Wok9D(VO=8#wo=UgmNK`(!B#uJRa?F}%W8No_ ze${J-(yZo@AC7AB6Op{hA;i9PtG=j}#iXq*@ey0bYmbbOLUr#VlI(xFCFs=w3YM%S z+(yRkAv(&v0SoRy%#^G(rfw^>RN>xj?)vNLr|30}E{qmbXZ~F`9Y-R!rQsGI#(VKb zzjkAJ8AYCXt^e5<%?3PuP^Ub;*shmu(DLWo(^B z98dnpVLl%yF{LZZF!FBIxZ8*(()joOiYZ$;yJfKkZ~;DIdZK&^F=Xt;$e$N&bA|vP zi6@Hb%Om;x#6G4938_=k(o#5@Au&U_D^p;s5mHLVQY{rdZ9Yz)P8X6i(!X;vL?333lEMd$FH(%WTc=}A&tnBZVZ<~Qo$S>A# znslBvsi*OA?f3DeO8vWAjonK#5F$+YGc-Z z^yQUogHjS{hv&u%WpP>Xb#~2jkt>Bol{NK&20NqPupQ9gt??Gemaxkw*qF^N+TB|4 z<&%_SzYQE-Y13!l!Q}l?tk%s<=9~iu@3#$i6>-35^urW?C{49^B^ehW_Pt{CckX5p zD$A%jL-Tn-Z>C>ZvIqyQ(qTEX5$~V{xeE3gU-6mA+Blh4g)pyWiXgc4)`g$1g0W7c zH7w}_LR9#^kCEc^u-cLi?fX6?_0vRy&W|#`_LeI7L}J4rk5xNKlv9tm8KC1@Pz&65 zzG>E7#X&7Kb{R;CIG2UKWbG~;CVB3rv1%;YXkGI3(YXkZ-7ycJ z#ZVYR!pp=f(l|{m>B>hDg**QnDD@NDE=n~G5E$nt4useh!>6i?_IqeHSleDaGtbxC zHjh(oKjuQ2$Mpr@yOy@wdtH)OVqs|OIYQxBh~r1x2j9RSEg>4BWZN(6K<#}>eYi{f z_~GV`p41%iOaxHyF>f0F;2r%>K78PYmXDvhZWtbTsZHVcy~x7NaYeAoRqy&QzMu9J zXKh@j`ZrJhY{GA(O*W{*}0kOe=-`QJ5e-}@-oIb-Ll~Oou zZq0h*Wu>3DuF=QaH2~1^r-Uhn7i@D0>}?kf#7oDu2cFwa^=M(0FFBhfewObj7Uy4> zYc4^$>8X%uE*Ww4#)Z4UGqu2RZiTKv9s`E;G|iVH1vzuti_@09I;^*VyNtQ~3g?gD z^GuvtuMHm@Bz*=csm*DhWCVz;)HaLbY#7#LNvbl{Ck}g2>lu&q@1OsbY1uE?k#IX{ z=gV1%TBT^BF&hvLCJn4U+X?Un|7&~cQGTDtrK2qI+j}O)4DZ6_ms9$zMIwT1VtCZO zMW(>(N0rC1-ajB5yBr~OzH0Jv=xa!o0{r=sAW}uwYwK0_QhaKh#Da9tyBiF=PX~$0 zA70ZqicohwRDEbSi*&s~v*{j|sC;;8ChWi`B=)kdO~n^h$~y*OPacS$8`v8OP5t5A zavClC4P|FWCRUHuWU!dNvz(bgMOihEk(}>cc@(?_L)Ww(7gfJeKdS%)2jd=4;X;&^ zD!98uZy^v9c7|TaWwuos=#mMQW8Hniyk1z~?H8u!ag%02REKm;2^~Eu+OL4!GzGo% zSO2tT9C}77X!zlk*y11f1lp66R1b{ZJRLVb$NZyw8m>~7Q3#!d*C&nrIS6Ly^ReG4 z%Y!+_H-2W8TDpQRR*KcGGt{Fq9s_1z&6%7}_gGH-kWN3E8`y6D1$WJo%t#RYd_`wZ>lmw8qa4lBKZiCd(4; zsCy4)?{!@W+#hXsy1`P$x8x=Qw|8Q_gFH_kpfiyTg7!quu1lCTmU(cfh6ojo^cM+3dPz1XIW{zo)(B=i+9D?1$ELcy zl}Pw*a>|(Rsx|}j+Q0v;@NSCJ2SBtf==^r|a=}z*Zl`%o$nL&T5zr!~ozvwERw-e$ z#$^3~Fiuict;wy!W%9fI?wU$@AbNqfr=Rx~W^V0b1?3~ZiPmHCI>PT~{K5|wU6;L{I_vEfPu^gukVEyTK9U#; zV4|u%BzIwn?XV)a3Ll1{rlFj|hx0G#`2Fr)%$e!oL-_jxBjC!uC52?qM3l z|699qL}nZLk>I9={8&L6mq4%2MO_d3_vh$7x6E=3wXH&CN`2^AWbxK1Xvm)a*>Sva z?40p;s|LbC*<5X&+pUlb;?UIo9*6VA1^q&Rr=iywSfZJ?WwMWZ3h-`43L^$~(rp^N!!#BEf6|^N zjGgd6NDa#h$|7(6`I{YcTFlkmqWmjsg~URl<*1>4PfzW^Rf(jJK*D0^|ARMORCyYG zZ!CbH-sMFXA1ceMYO2B8MfaR3tpC_9-z=7D3W~L^c2{{Nz&!<{>=yP`bko8#EVx5ZRk`>c4?u%cBH z-<(dQ`h&;H<Bo%=$$lcof8y1cy#%?J&Fl6?jACm6if2DG7Xxd6yZfi5F6 zP9R-rgAr;hC2N5bDWV)T=f%8&Xx0e%EB7wG$)I<8tqh&&5pfsckR5OQH^Q~LJ6x1F z7+sU29NOqQuCkaCM!QP_bI4AuT8{M-G`U||!oqd(zcX(od`HCKSeauBen2h|<~f3C z&^JKWzx2Lv9Y>kYrL2lh(nUwMgtVF9Y(e#h=x)OI3+=iRUpRGmg`ia?;}zein?PF| z?n*NtHS`JYk12p;V86|$EndU#z6#1qO&wY=bxbe?ziX6XfN#y;gRFqQ;bg_Y3KlX!<26rzchT20v0>ng{W>@eRZ*M4;#hOt0T>=*D`;#y6*gPPpo>}nXB3Z z(EPY3XcG9T^)8%Q7UzZ;2^wB1xAAAJIzxJ6y#Pj03(^>bNp_T$JxP&x{P)hzCE>hh zl22<#Nca(i28?D<-1L5?B{?f^`_JCu>_9h+j9)kx79g)w0tsd?BaV4BP_$WS+IdPld{d+EqzESK!e@o#lB{frgk8OA%|_UqQd*YL{VDOP z*tC9;phxEy6P*(W$YYCk`Ka3+bSVlX6b&RoLo`21#IN(kE8rq~LzQt>J`OvKsl2EE z+(DOI|ET2%-n^C#I|2jCX5Fvrbj}v?h7yk7QmKfQdsa_)q}nT=3!yMnmu&1j_F#+k zMk~CK+C#=ZrcROvZOEpTo4lbV+&Pcqb3>K2EyVp}OJiz=o{lpKy@}qy z>tE^JbT4pb07@wu3nYxrwRTxLSPhx8ri{R>rNBy?-ZfXp>edJ>r_JiveYfelE#5Yf z^z>QQC)&5%YOfhA(8NM=q6$_$flMD@MDk~DJjH;L(v5(&LCyjk`JRAFsCdUAM1F&c z#yEB^%`bJWP1td#D=^fujJ7Z`MY zH#3?1gZZ-KIz3QWOt7vHmFag&Gx(9kj=n~PP*e>lVUY?5{`-_y1}8-tSuSZJQTYG5+{HA7_WpdEKpOL9lu zcvsH#;c1ZXrDxMcTAs<`td+7?SwG zC_=+#*`oB=q_P4Mb$Po}yk(LO+9>g#{!ZZfK5F?xOuiW$t<=z4e#QYMCh(|X4&x#M zxfJ3)0LZ9Dqq6Ffd~>E9wWKqXnOZSC_8|h^hINs}%W}P6z&~HAL=PlyC-nt->x8L2 zSq%%LKf@navk!V)FCJ;L7XUf(zR->2+CWw{Ct@qL zSUA-8ixQZ8&ZVca-0c1HO1uHtw_}FuJ#I;PUYb#(ez9Xts8MnL5dFFyM*w{zCt>nt zc1w^;5n2Nj=KF)eRQ|%dEjK`@xMAnAOaCY$xSQETR2}mjJI@6ONQlJTijN=W%Xzf z+$%9bw0F8|l#G~mb(uR)Go!E&2O5BAC6SvWo<^v0L6Ba1{Y6;ils;>e+}p~&w{I%% zB#FDdi~1Xn%RJ{Fh+UR(;JCxJwQy5KNluX-ah#Sek4e(dIjrR46eYvj7aqq1NP((9EHt>e0+z zSpJRxx6-59IzYSj_xhF(4_Gp?5M-kqtY+m;IuWxXY%{OXxs#v(r0CXUk3>{8msm|+ z2PNq)osLp7`$AKup2MI)K+F}UT9j+W*Q){R!V*~9*N$Nial9{f>p_0hH{(0c2OiE> zRlJT(svv{sBdE#+)Q^GAupJwC${aFb@WJpvYVOpH7`x7ztPF5UgX@9DOZg20AqHI- z$QQO=Kof={;?--`sew@P(%_H5%PwR;ro7$hN2+_v8<8uVFd1kk5>CpC9&#ea|3aeje+_Gy%$k))ua*6SOpG zhNF}1#k%l3026ZUuM#5K|DCM8SX0ifBKp{M;A!iU2f%W@@;`Qre=Ql;WB()QT zcC5GCu@O*yw4t3}z9n_M3$S=J|ISV8LO2f3j>|ZNnWz2w?wk#2PB_1ltR2_S{P1zz zgSD))+l@DK0|qZU7Lbl(r1~C=?6LIKffaF)s&LrF=bt;T`2-j{_~%(&3GKRDq{i<_ zCXlq->VSKO6J_dUG?7W4qCWxE(Wf@P4m_e-_oEufkSV#grD4RLVW|>)>Li zgj+f)=d9eL+;i*;4K@126Xg7(EMPKVUOoh-3lmVH_v>{PRc$nY%y^IEpzD>@Yhis6 z9g(FhFSeffMqmOW#6_(ymul2g;-C`&h`G*R*==mwm$s=RyMQ2-yfMbF>Pz}D|tMbQaz%7 zwXG}if}?af!$n&|M_etP5s&uqA;}sruBA2P=Xwge@c6+6B`($CzH8gJogX+b6yuVp zBz9VlYDlBy0O}InXzUd=gm^r7hM;=^P^YWEB5YL1cm#?q-GAIw$yWT6plc=`J=SuH z_Hc+UO;Z5|dF>Xs--v1}_<9jy+iq;rQxz;V>%*ii@;LwR?aw{epBn!jF>6ky zLCP}Ya=2lW7$cfZ3vs*UY3;3MLF#%(i$J4z31PELZHa2XHzElW zqD}qkV62|+1aA zgvIB5yx(JN4M2K5+!7%X4i0u{``A-7V{&&mn!}p{vD5&V!0!@BKdGVWt^Uml`*Q!Wyrksg@meLpg#$N|{=$-@-Okd`pyrc)@#-C13U zq?fPw{RA#m`IF4Qd>J>2O1frrY#Nvj-!e5AG1BR|9%(wH8^Dr;O&<$50}iw0z~@s9 z;Yc^i?T({7dXW>-jjzFt{WIRnFX#S4)z=+QIn?@uVs=D)?fNx1Y4^ffA(fdp?E2AY zGMf`--Alg&R&SE)ee0KERFt!|ChIju196`hiI+^hre}1qCRDH!ITOT3Um!|ou68Rbmqak)OUZdH!KErr&bO6s8)G3e}SW$e!kcq$URH0)mn`_1Fc$bXmT^Hcarim7~1hAHi@1YyXt zX7aklm65NeFxHD|khPCWOA{Ro?rvYkaUUAr&SM_5`sQQFv-;wlM~KFef&E#Qy6Vr? zHmU*=&-%nVmm2QAvcXGMc7GXNA?%)*WDU&u=&H&D`T~ctnilZK2l->h4H4*Yf;7aV zp@29g%^ZID?+mqgpzmo_g2a21x(9EDqL5WS(G@WpFAq~cFSzx)KOliSAz^`4xDIfn z_YoaeMi><0M%n37^g}av7elh+?UYmQ&k7o|wmne(w87*YDg2(FuyT%M)~;?u%!=I| z&=M|VIoZTvYU4@F&dcJIU^NqR7%?sk{nisf zZW|=p&{NpT$7vdApbz{w!>1OAvvQd_TTErP3a1Fm(*>}fMc%FkJyu8CHJHjh(>!>= z36PH?%%9)nJz}%naIC&A%7yeq1Q0s+o393PoTLpe>x?!UPk{;f@w6coyT?i2ZoDh6 zye)&wXa&84H&ctzPtg~OwC4#Y%K8+AW@|6+%O#s3y73R*dEMdWndSWC$!_Le{!_z` z90sLY%-2xVR04ylvB7DXnfnFiBgoR-O(lIC6Q&d^SsKS0CBF4g?2&4_JR_@F0lZd& zhq7yl4N*+@7wvHC7BVPw_U_^RZS4NU(OK{gt6}8UCDo@YCdLQxH;1MV38vINER|zk zx>Nu06p;4P9n&c4##S>ba;s*zW1Q{Ahtl*?bh^bW^TnMy&nv8VpH2Y3l@(3rqC!c> zt4?@@4t@<$n{&3550{1eN7To2g!r9*uO@u9Q*U>&%cz4L$zQX3aLk!zkAP*e* z-xp;^G5#1Y5!XlZR+}bAn{)px{}v?v{oMIti$R8qoiEU`L-bRq_ies;%k3Gri8IS# zwmSKvS?#s8Qq#Iz7CFkNC4YEawMMpIV<2l?D3ChPOa6yJ77AD%#(F2UJR5LXhezgr z_Vj?jObt;A5FyW>i#ihaHcrOc6zU0bKQ<;yN7B@lQ}UoLX8e3+$#G#b!qt`BKLfmf#>CCO4ocJ`3j56u zgb`UX_}h-+f;@n~c>Y_mKSU?9R~9V4+4wy*C;9_HRk&EEbi5$|Gp2Afomj;v1cO7Qofh5g7aCirQMghZEV^qE0cq zc$C-k_BX6NRd#M|WE)%?mN=x^L8TK5x;U7c)=>N7>+N2+p-w3bF^<3QMZ}wqM<1KUk~*B^hKs}dh^dLeUL%%| z2rWZXb7WQ8g!9ZkwAeH-64|@twCR~Yy9TK;=t#6HTf59uJ1a6OZ;8130;G~xn%hSA zc>Yo_`&vymxjqyAf$|~qHud(ge0#BTAg8Ckk!9+xpr0Vd+hF8RWUEwTP0)f4X7ek1 zh~$e02@{O)qNN6d)6};_L70Zbm`C6xUDD>+OVT5X*v&v;+x4T@*WNisqPEJGLfGe; z>K>et5V`a|nzrj9(-2*)6zlU8UaZ+n&}Wy7lr)yRY$8({UkI)< za~`;ElKqP?7vJ)5ZrKx=Qk9O0ap7`` zs=!Rl8m0HVvfQG2{WwEl(;;?7PrxzQH16uzWheXB?w#SwiZSFCKtaKzxXreV^PuvRaR~jI_lcq8E zIju0`_GEl`&ZtL>MRmqg)l+OUdojdFLqzD#%Vcwc>Wv|!>5IE@;#*7Q=nD(TP+M?4 zpdoG)z@iMS>cnoAu1&EmV%oDn9Le$y5fO)GUNg%lmT#8;;(!>21G4WzV6ccc^f* zZVRMCIZ=f`zD|Jn(C&#gotprb3YTQI=*E zl%07MZk#3#$Slhl>N6V6yy`P@U!Z?H{aVk_kd;27UZUFSj=t1PwJEWnYSAvZk(an` zxhNf7t3+HqW&KOa{2vDQJ9l5q)DPQkD`X`erv*yv0RbbT*LUbCS=mc-7a`8-@b=qi zkCX>v8$dR$>5&}YlJl^RLQ$E;_!6u($&pJ|qO^4S{Lcj`99;~aDNPk5gF8i}qDXAZ zv5LIGW1D+mPD^u8Q*h7qhX+=OtM3$KDg|_2b#rB<^G={4V;Y>e_lh8c9|xHiG%n)a zZ=~QeMUw|NxE^pMjxJpp+}zO~&MuOgM>620oj%EGd`Tie1=pZl zp3Vr+QuX(7Q1xi+gj$r~(ihIgndm8YlAYPHL6EJXwdv12i1jO_@gOI zdw9NDuk`e}&lO)e+HV|IjUJ7ArIXJQL*u@!rKyLt$6YXAy_`RX18^a{rCtYqPtE$H zAMrgAc{J~)za9u#Ke8L{@id^dl=x)Ah@zKKEget}wCC3q4T*7nl15aarrlL)2w(ce zDYX)wbZ#3B(W>SZn>3|~KdRu*AJ8>JG%ji!PZ}67-Rc8msz7I|>AGu`bj-+;V14x` zEH|X!OnQz{eTd_#I?coV-LhE%kt0Zs#;^Q-lg3M&P?NmPm#7){IOw%d!UYh6fn35p zwb*YM=N2}!II-ozG|EbcTo#o_btFo}BKZ2Ah6-LYz4tKkckzd-L05x>meY`%iVb?( zBT)GkREm7W0llRxbRe;0g8E*sYIL`O0End;LtH^vkfg=SOr=u*D&S+UCKKly%@R)| z-C;R2ByVyx%_gZiJ%6&T7V!7S|LgC6R~#P6V8Xz_aEZaBUJ~B$`f*bYFjD&1_Mc3J z{@ZC#=t*kepXgQ5y#pXJch$es=TQz>x>KcKBfA8}x7|*$S;IHqNH_GC_nAj6RR(ek zw*AuExI*AwyfDB%tcf#@@9-h+o z0(ZG^S6JW1ccNq$k`96(4#(Rf)+5jrrO!YOitW%!08&`~GvTRA% z-&)4+XLR|`3Htm{*K!lNNL3|00&+L}=VjNOcW3;p19`MxC;W;HLL$K;Gm{@bGD-~9 z-j4smd0wpEhM$Cs^#r`oQEe#!=Y~qvjGXeV){b6FcO>XKc`{Y$@=Y%D`OPOi(N8kZ zvwbAAhgByJcE<6ey!RhayyHCdRn*NoeD(3+u0Vu^S-4|kBqQ9%OTv7MdrZXqV`q5w zHU6F&mNI2ile+;}nV#d?u;3yd9!;1`WbgZPGKg*5qksi)7=t1xS}92M1g zv|uSpWyb&)3)z$#lOBCv^hLth2bH9jYUxuT~0|V!k00oyYJiBy@-Xc%xaz(Jb># zj_uX}1AC@Bq6TwchBlh$adGWpKg;3;Mh{oa`=0~n&qXc+(*_5iA%S63yPAdSQuIuR z7HdP7j(^yK)Aq;hQ`I`0Jy|?zlZ1F29G>Oc30xV4RE6e|w5YOW@~IM;GUE!s2w*)~ z=>o~$_0M*s@KaPytW~#O#G8sjhNQQDgSL&Tylo&XSgL4Qp7T5gr@R0Q5Tpw;5@+KU z=H9nd4TfKQN_L}g#Jn0;Y}ix<*5*@uSe9U@s zl7%)Tfdc0pX0Zj68hIom44jLFgNvG=7yfW)&8UMCHC8=)#U^Gku4?g_SbP^eYq$k& zbu1bNL{_{d%`va41csnxuUlHKO>u@&wluS@)j7cl5)K%M(zXDBNz zaZq`Pzzxi7Z8&3pr9lxV2fhJ;vTF$7{kSj=nB%GG0K2x5GFDbqG-+Y+gnl#qp1lX| z)+bK+gwsUy@|j$Q_-eaYuSf9~mPy>xgK|+kH?O_o;ZJyIoxm`YRyU*Y zr?!gb8XnfUwf(R6C+<2mj~r7ICxVK5mhvM7fCKdphAQ;ml~eFrk#lv(oT6I{y>d(w zj^VtilCaYFLfOy~=ox{BP#ipd*v*Uxq z*Oet_m~GlUhQ|UxRP2v{bB*{$Pa+#wufeZGRrt34Z_njX%dMp~hhUjpAJ7Xf(OVCh z-p!xZk-nrh7zc4-Ga!BmxL%1@5id|Bab50BOVFynZi zUgQXse05FcSbf`b2bp>Zg_;QOg3aWS2CXvKpYlwU`?j^X_?ZW8Z}utL5(%BB+reqYf~q;Es+Ks}%rr&}%Cbn2x;4wrYmK$+W~GQp zNV>lCqF3|Zkhu?NE7FWMDKG|07y9XhZ-h7y{Z(6i7xyxcKM!rOR@wA04d1WeYfzJI z2q(Te<#^#4`U06=bbK9U0R7zvN0d<0rd@98!57#>A2*Jb?FC6(IrANdJJxDbtZ%zI z+unCG{01S48OlnZs+TGvVuheKn%OQ>VWC$lvVM}aBd+2>NVY#1w(1LRi*0;%w>BIc zPI+ffx0d8nLnx}G?%;q6RD361<2*Sg6!&d4(M4%I5THcO5I!%2{Q3B^txL>CDQ*Va zd)S?p;o<`h8&I^~#%jZ@$B%Yc*oRO zNZ^fQE1m4|vg$+eM(1eP6)Y1@Mm!LdBW1io%NF2W31FjWcOblpJ!3VZEGSz-$6HOF zaV5TH@j5@%5C>B!i>VGZ>EuJxyS^OhU*hgkttg)XaFKUPXMIyGCa`Fb1V6d1uC!x8 zACBM79ha<%oK;N@6`l6UyYG0zF8oxeY=3W-TmgGo-%@%_;~wF;xKY}T!diX8QrY(6 z)}ikglY&-J9%{a7hMw_nG{UoV7Oo)xrve$GVNXD?mx0SSLp=HmA3Fc#wmxZ(4^w2IwT7SrsCH+z6 z{G`6zuzKse>3b#De_pXpy%Duj#y-_G-pqu;c4wZV6ppH?FW5YQ;`7LxH8TaV(&XiM zH@H(_?y#I*{$_M>$Bun3qe{p#b_Q(VNuHVwDeDxFErSh5iy~fXROGMnd&8x&y~fvF zD_X@<6JOstjLp;JDmQTr!DD>9LurO2=;XmXkOdG^Gsij&S3Use=6V?dlP^QOL=!xf z^zOSdMO(PU(SO!DP+WvXh9TtKwyJ+7v-0k_ALV2#JK-U<6p#2xb#T10XsFteAu&JT#Jip z)Cn(w;UH7o5^nXj>8Qi|{Y|Vsf+}AkQ#Fm3^7oc>1LrMeeP;dzRr5G)OuK;Y+R!(l zy?wM8@MY(KTh#1hm;oH?&t!i3uVAn((0fbg;R5rb9OSB6u;4{v26a6V1!cM z9~q|U21!tBZ4C6PnwrVj$eeM7V-z^enUuK6!sHY0@Ik!8@E*7Lxhvykw!_vZ zf3lJe6KG>uTFvS4yc=IJ)qy>bo)T|@sdr$tcI#xb7@C7p5JHnalbl$(&UxQk!mSPW zh%Y=m*G{nP@|_QNJ>KxVGY*REI?142#H?yaQX;nY@CcLD=SlJc1rJluDUwN zT(OZj({?z(qH{{zxm(C6aldUyzS;_8_5^T>zeV`4Pt4cb2NRJJqhb}+I1j<#h|EX+ zot1^DQ@TIA|Lg107+HU8iQXR>+{Ggv2mJLowxYPq$r6^Ae6_m*Ijm46#MzvDTa@i_ zm+7z?w^Dq*ZC=J`j8Ko5+VjSW>-8$K(LcXnEh!+oAAx*oo@DK=Dc2fUp)GJk5U{DZ zukYZgQtLa#-K{xS1~tezcymqB<#k0%#yO7%5I|z*vk=VKC;l z4b@hZUG$=*bB^waqW=90Y|~z4fA!&BFK@{?KD9&S;a}&lPA`;EBXUp$3t2zrc&Lt$ zFkJJw(ahPgmm@Sy?-%1!?_y1oHXlqGXiV7HIY)TfN)mk+Mgyc#1IxsNpgsM7!TZe= z(Ac+vl>F79s=jMZ#sgdywep)=CKkc6oTc}Smimr$tSxCGjg(*eBK+eIRhp8M%c%yP z=ZtG0&JDp6$={VKc;ZCVP^y@b~XDe?#BeKMcRJDSGX65cPz7 zu1n)$Em)*hrJo zoI~1XqUlf`WtUpPyzrN8n~JDjZgnEdnt)E+Lt#^k zzlyLgXHi#fuU~h0KC7<~#q)+Qd1}(`t!!6@MZoJVQd9|U_2AIw2!0Seeog)#hD9oD z#m(0sgoY#`Lz-`o(8W+zwv>Prw<4>)oE2~HdPG4uE7#{NkE$ts;j-OSRyFNi7`I zDJwQXU5afJG2Kr#$6;QSlY`T8TH8~+E2|}z$u_O2=!}Q)$W}csW-v&0l zPIT%k{dbRJ_akL;Z+wfCVfatKN)b+Ujg*sCTL0^Dr79p{P>()OcYG&fa>7E_kZ+le zJFIzDa>P$V+XU8$?zk`zTO6T>;wsuF{%epUsGGSh8`W-}BRuQOHW~z|LX2C;gMi4_ zdwAB3w{7l0srod9jT}_rYM8j?{ytPq-HLjVcnswY7_7B4*}(m_oSt4|{tLtHOiVK< zUKs3AV^6rcP+WfJ=ZZe6?!RLqaUpk1_v!(IxXP+1bQp@KX=Isb&HJ4XxN1%9boj24 z(UroNFvJIy&=RVATzYnffO|ZtTJi4AwzYCw%XunG2Y{#1B*t;f*#J90%jE1bi@BzG z=Rda%eBAaYd}7$gl6B*Cgn8WOP&>XHL5T*`5z^pkTzI2}53&D2JD=s33L8|~$(DG% zviJGFnr_P%FbCJAp7TFk2w@caE(~e+p5unR0B%}K{W0LXXaD_~Ml-~#O^j{RMi&cV z1(WUbq51V1FPB=KK+=y>@7ZMqzL%;dn#JT5oHUNM@NCYWC@Flf!dxnF>KFEZi8|@+ z+25Hyg8YZ<-a)l%WE^q3WBc9FLGZ4=o$)9dlxQn=E&N2%K z2s~q4x+a-8FOp7P=$bqC4?`tdd_iyfqPafub^WLMz*wNFE?xTj@euw-J`Mf=P|cNS zKc#t=DHG>9q{s#vek6TA+j`*LyE43oaPJsJa|6p0q=(!H6-X; zj$2uUZ~bXZ+Ir=j7b&fus1V8fk(0+hv!Lf620LJ80T;PLjUx8!5oC|g+W`xq%TxF+ zvjCYG%%7NHpBK#y50jl6Cw|;H!`1U_rljyBy%7Qjtb(($!&ryr;PGWZ{$Q4<-;&ui zf2zd#|Cf88;d%lwIYCDbwL-Qffpp+L04E@t8VHni>@?AZe;D4;#mV09fqAv8{<-I4 zo+x=wjFMLE=#}sO_njIer4v|XxT}ZGP6RxSekxL34W8_NT24g-&I{Xh0=;;o+BG)^ zwvgH^KfWwS1uALjw(Gc3@g>9E)#I347S@XAPT_)*whYTt%HM3CyzP40lb%HO^R4KGsNlM;cQ`4yJ zr7B7_T`G{(JoWSfI>F{n-Hp^-FXNX@Uf;^&KbMA7jxn{{ zW$hAEw%PnCGNGoCT315Nw4VzIo6E{Fel)&JZkgoo@K)K!kn(FNDPd~b#44oYe!W-R z!g>q8wS{%S!GMpe{MT6X4^e+eVmd~GocwOQE07xYI#LT8jfoPPH=mT+sEu^NFj`%M z*+u^hhH;+%qna!(&iZKi`VGu*hJmMFTY=BhKEDL)kI~Ua(L(CmP7Otha!l!#<*c61 zUZR80{;hi?oxG4uM0Q_kWL&-epHBimB}B|fX03xv&U8`y9*~%cDzI%#G^roLlqnLh z*9u|~d*}aD*2dleb-)DbKDvsjWhq7}Ghjnk_m!c18fR#(BXVlcd}_|4KsJRV+c+XL z!Z#%X{Gx^LK(zyZOPjS-@|XBVnZ<=iXKr+ucE?DOl`4(}rwKF&rDOKWOc4qJmj6b1 zSidpl-|nLH!1?$|Rk(m}csTRuhppcNV7fxtE-Vf$f21&A_# zF3QDu(J;Ey8ooZX$frnCai%uQW!*{6CHwVu$i_q0n7Ui6%4%4~b7@rzaY4WX6;TAo z`OXofFL%Z9MY*vW9X^iNQXLeksC>72{pa!fvkNZs_HXA!`Ew~LZGu^mmQL*_$c}mp zo+iepQvGbr7c)>GcTsV-!g~6i!^LX-Ke9JsC1jXSSM00Zq%=1vw}}c*15S0@?wE~Pe1oK z<(BKo!l4$nVdfa;9{?EdLN2G_g7;cjPz_y~Qk3ze;(H%OH&d#DtzHzkH$Jx@+-q$= z^J2py=-FE{g{%**&0P3KMG{f~71f<)TVX$iF2Y7hqUN2aluh7P&KKk`eHu&iZ}A#- zl;bx3tP6BTYEq-}0)(GnyJoo`ZT74IFV$FAd25aD&12A?&vg%9n13Fy>nkUeZo>26#t=uYj*wILOf@=n zyL7v(RI&AHgFs>~t=8@Nu;B`RK_Z1To(@|L%xxA#vF{MKqE1rYF0j4r{Qan+8zEJn z{CI!pTgdtRsVU)h2KVFi*$O#21N9Z2n6Vs`v0YZ39`ks?%wjQBtAqdfoH{u{*@WTJ z@|&KIC@r>zFSMqDi5avxm7mh^q?{6vPKptrDU7W8LP7#0*K8%4f@xOM+ZU~Sgl;pX z+=#2JvzNTY)6NCe3izc=Kix=u>!Nl6kcd$A#LPkc$I6keid{8d+FBZ>wM`_3KN7hAL`>*)Wxd=blKS~JZul0_cO3Y^7=JYGra|MeF4yNYQ zLPF7|X85OBAltYR{W*B8Z7tsE$Z{?L*V{eJ@{O8E;_Z$B4$*SAhR8T*TTSC-OC@eJ658?fsd*N9&UJ@UP< zKz{*In@u@sQKcjEcWz&YLu_zV2vJGx@}JvoXxLQR>hlw{CfAQKls8gDZ_770R^a@z z>r0zAl@PDTy|%-U9I__{Jo4#GXkaB;j)`wYgN#{;5Q-h}r`)bjoj6`)2WN?)ETGP9 zGQ#}{nCuZV(9Fqp-i-J0X{*n&9%}EX6VL}x6*D~$#uPUc!iL0GKvZ$j%lA4}H}RTq zWwDqPvJ`}g73UOXr56|HaXP-#QRZ#lXh!{|ah-v1$3-g}p+R=jt3KFL_`y>NSJ|WX ziIK9%@$)yC#ftr}m6Ae_*4qF^?iAI4#JqX&2SpM%_{d%F1xR)JIRy22>#3y_OZmgV zfCi4&uSd13tlh8@!*l^Ct*5a`4d%Ij{?e2K3$gqBA7;ffJMjA@nJzdM^?CnvzxkG5 z;m$ByWCz}l6Fu23P5R~oG`;s+m8Z*AMN3=2yT+J?oW_91 zYLn(I(Ck^TkMSC|+T6`Gz_1U9va#qE!L{$K`bESbr+5y+>^iKnnbZANP ziJ~HbCxaba7dP2s1Jbp3gS{DgT9K^*h>?Z87i}uHm0_h{4Py3Jo32r|7TS<3d)QH- zM$)v|zldsE4JP^EM7=^yw!SzR%r)W3otOnay)C2i7Mq7A2gvtLd{YROIMZ016`8J_ z_w-ktXsOGn3mx6>!rmLt`hEo$1ias5?611_lQk==A!UUe=;3-2x#B?HN(p8j$p}atIDZA0Pq1;*c zS!~_e3cs4X^PUZ1!#zm38eM-VDoO)crkvf;cRx{}Y@M_z_$3tsJ9Jl*9mx`zz}55G zZ(A$$Oiqe1eocXCnKSvu{hmzN1A(O`7bDlhO{l+15)}{2;nJ*hH-A|~{YI}qGF+1l;JilyxC(8mVPef$;n6U10G7>eT_`IBNE zzsj97I3+mDJ2VO2seYC_`Is)o;k9j|`=j=x7t@nRgpN!uOdP8dcSBCUB2?6Zl|k8SeiPW@ zHM{%uL4cW)%rD~4*L1D{yS5-Cgo*O5x*p*NKb~F7)G@MVf%Jo~c2~Y<4NlLuAl~f(=6W=21S* z8MI$|i+F>ex6fNM#542h&967#0L#!_tH)ITfC=ba3wjk$l3`K_4QPY;(Qjlfh)S}- z{oAXLJ#1_ySL?oD^ zj0$mXxl?6t%aJ!%x76)g^)UIufdLn zF?e>_AQ+(rEK+BNRK?sl(KDPtR-y%}&W6WVcDE&}Z-L~&QVPF*_sY}h-o@l+eM?J( z#wY!+sQJHZ(f@Cs{|AwDJ`GZ7ml=WaFU=c&Bnx5nI5ayCe5kN9Q}XpnzpNC}*IzeO4?!&*DN~?#TK- zhC1r`AXC!d)d)%x%TOwAv3-1?_S1q zeM=1{FTGZ^8*^`<{wVo|cPTyNmB3|e;g7voq1}?pmDp0JC15up;OXQs-bvz@ZCYn5?H^zJ+pGt@Va+3XEkvA2Ol4{HQKi;U?)<|L%fv!K);ufoWd}A zF&g@1&V9MM^WY!vpE&Mbe`fSJTshvOqo&AZ8)z-7&c04cIP?dwY3qS_n489EgXR2; z;Lln9x{3X%vC+L=+a`wruBJCH!y^kBlq#hQvx55iXfDKyhLSlp*@$jT2q_?^+RmAoLm&zRRz#DBNB>yy&`0P)`I0LLY{5f(LI-5Sxk#v1+SkXTjX-HmiU}d z`+JJ(AiPYAH2fO8>A=?Q@i0>dChsen;%``7eo6kYp8R)OBkqc6M2J|KV1U&Y8w$bjLk2CC;s1__oA`Bi~F3Tv8*eMCO2%uirP4 zN5!($BnX$uoV1qNiUV~eenW9b>Bof{S3dGS(!ev@g&#Fk7%oL~R^)-o)had)53nhk!^k@l_-$q)Qr{oA$NX5ZS9Bgty1BH0s7eyDY3^7 z1@j(ZVq9HycU-fY{?bUUZdXVDL3Iya4fxi~tR_iO+_0sHlKoA{!a=Y&R(O}i2iX%P z=WX7!7QehO;}IDiCFG= zyOwv2F7$Ky{5;3?p3x*7Fwb)3Qi_N&lqmqm1SspStp)O@J%>ER?>=E47!MyF9_g*0FGLbBi?O(ON=XLT9%{snDvBU3@2dPV;c?#2fD#-tBO znaX>=f}@vuH*-^36R`vywYrnz_0d%2*&Zf9D3 zZI;|lSbh=t`-@P7gNR^VNW6#^*X^>)3@7Rc#qp;5RLOeMRs_t+sh~R_jQ!M~@3v!V zO;CR~6?9%#^ac%`v)eAy-1B8f?rIfOPud_;pHaik8HT*)s}ydooe&t zOkVmP^SfWP?Dg$a{N_*3Z%cd)z_gUvXM6qB845wUty3EVwX0n+Z^$y;U1*md6yKj& z{=n359FmciYil>HmAJJNsmbWNlUQC8{eXt$QHcrBEtaZD_9TiA)T1EWjNF*cA4s=X z0jDtt=&M+sZUN1V5#r{`?hC<5fvrbEjOL=zd987@lwKW5$U-JNrE$*!MP^m>uwFeD z8|kZlJ#)t_29@wnU&F6Ui7rk;Z*3U=Q0XZ?1qcZeBc88F1>G^VZdIMd*FTxPvxQ-Z z`qKF?`nh!I!nqGEf{A9ci=ZbsWb5GBxe!v^f@bFr64H|F)~=$hJvtCpxK4Z(sVrx%B2V9bimfpo9UvQ@r9^znQMck_J8d+tMo8{F|Qn z)*Wg+Jm7QJ4?aeJbNxB^f;8Bo3cL@{^8_Avr^@->6DOTf+4TSgjrxrBjZVCEXTVM` ztKCbtsshIAN(G=4&zh<;@r~v?$Ass}&8DUspO5_O{X9!gu_Ogm3B;RWRR%oVb;Y)N zOc;xU<;&_gl!Z93?>tRVOP9BRhOi5ZwcU9%@F0OF8vz-Dq5Zr39K7-0G+O$v%+91~ z2$?GlN1RA^TIqUMx$)4v-_|nZVY6P)ZnZd*)F#@hlA+7PV*8>I7(L&aq+Cpjeq)tG z91V4kQ0H=AU8jASc;%^{6gQcy6hQQ+(C zM@>EuWXX}T>k@iC@atFMNDG#J`DF$4BqxpzOOXMSMjum9o@4{dVXDF$fg61APGxC3 zx)h^V&+yyqNsK^Uvu1+Xl4HzAQF_B74xXa1X2(({N;I4e0a?faQ4A24Y?ukuNt{p% zqx+@Jx!<}XA$`%o=@t6-3M2Kg)M}(^R7pYZ{;WLKg9j|JO+DN-8`VcO+fTsOW3+Hu z4QV1 z4dHDZUUrEVd$4I;2tr`j5A_j8KhFC64ym^SrAHg$m?-Slo953a5GusxtGeP7aoN+8 zx;K9WiiZaMeqzjsQt74v}|sz#g!6F4nrbtQyeD`T#((RBCnWzK(7eNYE9E?Y=vP>HEdmX@Ve9QSCQRqN7w zi4ObtCDU@F@((Y+N5A>J7jt}s1dXz)DtV0}HT|jEJIY&X_{S^Sr0rNhvBz$$#tJtv ztQ=V!@q#`fs0Vn$%hLXttAS^|t+&xaH{JQIt6ajl0e70mMao4H*n#!XRx4;qyZBZ7 z#J=noxvn&WdTfnE*)MF2OYC=98PSh)rg`T+iYT}9U!dxiAUGOHsIA2B6g?Zv7!;N+ zf7WZ2X?0@u<6^syo~N%+b@E2v?vo!R&LsOFDH`jzFeDqwEu8P43IM02Dh#oDkr9y% zytteVV7aS9>Ov(B{-GFiU#^ln2wxs`ov~1!2)8HO%_&)xcCO}i{u1GWPHs4y^^wQE ztzTt6$*H6C2E2sO#jQutGpHsHhPb|}N_!S&4fa|OP32q(M-#E;v<@G=|Imuu6g{7_ z3UFRB^C=6!Q5aI{Y2CIp00|G(v8S-k6PBzL z>~Fz+Z|TL(7m@hQq`{Y0pHnNbNzFXRd*W8W|Bc(g;$i8a50@;#Q#Md*LCQC3Rh1N!tfl;Ll^y4P)+JqMmDjzL)@f&R*cLM40vx( zKv&_VPq3J#WF{qJ=;ML;iG}{_x~%<-Vmi)u%*-OZlQ_jL$^B|0`Lx@K)lxppgKj$8 zagAY`uY=j^c$-7*$5ztx^{l;9AMtIXjUSEZDU~~ZT%6(?YG-i*%u086iG)a?D{<%Bl9}qq1deO$eo&#i^1|k-4{}@F|dOtAIx4Dqe?F6x4-n5 zj)kx_JFhAW=fP*ycquShx9f1T0i0oq{?PUSifxbM8F?xo1AO~^WkY#`rtJ*~jb~M8 zQIinGX8{>OxTy6BXb3Tb&s2iW#EmD`pTs(iX4haEt)ryPK(p7L7>Q+UocNn_&2LZE zw}ZI6GQ(5O041I_Fyr3aRMIaiA9cMmR{S=*yv9HOS%NMj^SuOOH|)~Kmsc)7v{&KZ zMoYn4lzY}ptllN$8)>rLxyWkt=s)`T-}YR{oBy4r zkv;dg^bd$khMg@U`wRb1sjeY?{~@0k4#9E4)lvX=GXtVzQ#P>!DvvL{O4c!60A160 z@kTqky4!}S=jV-YrcJ7pnfc5~Ao-V@R zB&Q@O7{`a56XJi^sW=$YL_ZWL7}!^R%n^aU+c=!t(2!vP1tbkAUW(r;wYtS5VxvpB zrSAV+G?Q%YZen)<(Zl|gX9#3$Ci#2-%$88OgL<-zMRfzzZopC1APshBzb{K}m&P=G z6r8eTlW4+oGKgI(PDw6klpDqL%T}1JHOmr8QV~6PwM}|56GC_)=JCQ~#adFkykh=X zF3G!;_{VLNTU%j*G&P$jXu$eFMzlz}JVDCT(=HFZpzq&>$3<>Xd6C(G!v>1Uk@p+l z{G2kZ8z68r!t`m7<15S00}6i4=c(_}I|!9^M3txe2f-GhLRNyeX{E7O>H}U4C@x%l z6xd=nMa#AKa??L~UZqclK~+2tlukKWB zZtF<^u5aHQ_)TrpzF$IB6k$pZi)a#A1<=L=1w=GRk8~CX%W?Kw2gf~3hD3GLBtN`W zlPu7G^M3x_6lZwn(iL6kU?_K0)4fV^Tqq`v4e@v!_D4)0dAsdQ09!VKu@*|~zcg`Z z1vH-(zSujmXvF+I$xo@-5$z z#(2a0Vyu%k(g0whV8z||)_2UQCe>5xwYwpuG0J*Gwetx5k-4!3Bcg9w`!Qc4B$twD z4AnCs?I%&ICw6SoChvT8AT;^tSN4@B@k`zQg#Qr$6IN#aPJy&5vRWypOz_@{H3|2zC3NCv(q$ABLP~Xfp(~AQ+VbYIoi0l-q)GpV>3&c>arnFd`r)3+tq11HL==ZPi-WK2$K zOs`HMewEP7NPjsX)Euib#_-YO*GAOWtJi4;I?RP4SS9dOdXhxSTqE-FzYz7Z={Cj3 z1!FKs?^F?))3!jaeN=Wt8*|?G?a~#;OZav^d!lwb^Cbe@rya?`{Bb`n%ugQk3S0;f zt@r!$!;G*N21$x-P?(hV_0PtZELwb4=~FZ>*c-Q?Z&P|fJ0mkmhc&5nHih`Jh(JH; zhBuPCNzeu%NfLEA@OGbFZeiwMpO4P=y|nVW>PPH@_?lk>+MlR~r#}EN zRLOeBG2_83FHY`Mp740gYyJ1;N);xR;nZM5T2ofbl8g6B@Dql;vLexw$3a zA)ZXjt3FRIxyf;bZ5wVJJpv}}Ttb&C@P6n0?)d`RL`PK_-Ebg9@2sUpo6lU!-&f&>HPj`9obs zb~P$8Mtdyprrr(GOa>!bb8kKQp1YAbgN8NVz#wlp+tH6p0#NQQAbZ@IFaGvUk`YLv zaC29Y?srJ$n>|9M>(WdOSevMFUyWUV{spEJE0+Ksge|MduL}Muz$(F=?7ul>)N}|( z0oOOmlt!k`xax%X-TNKIl6e*BPvd{)3@PdaUmv&NPE)v$aZK0-TrAyh>j|ZXqv=hl zflq;Qq zV|xbY_&)$|^Ah;WRdWu%H?_CYi~$6UNqt>oef-7Cf-}9MHXM&4${YG}JMiY`YnvGW zY2Pcz{2)I<4MS?jDJX`1%A0|Q>Rb7`nV1Hd)kX5l>!N(`eD;;z@;M3@*_EfmCl{bj zol6?3z5TYX^bBVC9fJ%yju;l0ZvtQKIYKM)8YQj6CxeGdM9Nw%%qI(4cs*pFh+cDNIPo&{qJ`EI#y5ndPa z4);Kt6$GjIoU1x`_r>E_!{|>td#V39NjpSnAKQC;ip(8Pd}_@5wwNNGKto9ToeF& ze+`JyI!=64OPXtWKR$~fVWRo5klnjY!N`B`s*uQ9=aee5}**k{zDY;XeIo{qpaXDV(nOiSir-rFglp5Rf z|Azbf$dVDV&Gdgbj%P9c?CB_r$2blJlbb@$*+QA5n~6V*<{UIyFjZ_d4Ykf6)7vTm^5P~3!^So%vNUf(>lxuxeR7 zURRV1eogA*e!E==HUX#j%^ce(Jz>GabiZU_KcfXC7XC4vKG&5?3D9mG3>#gWy&b!= zYf|%hO|c$mI(KHvrkF^FS`e`@OP_9taBmtvahHG_LquB$*Gj1-3lJb%4Bu_F@{X8S z;<1qHwb;NgZ|d>nUqG2Tqu{q;2_i-w+;{MnSCZExEh(8Ds<#q5{IH?uVmUo)-4y*1 z+0&<+#pn`LNYBjk!^;;2vVEODUwD<~;ioz$=`EsNxjS-*Jd(lGS$aFT$rFJ3E++?j zwuRjd)J{QgQcw!-k&a*8vPqz5jJRi8yl!*bHZlG2$j-8*tIz`>U9l@8l6|ODsS^&N z*atQ~;mX493m_VPRx2>~VH75m?EQ6~nH$V8%iRb}sxjg(^@AoxCXVk#m;b!*yikFQ zk=|W`QVOA%kZ*Klax}5`&+~7nU8QIkHW|w%o}yICuT2RGVp@IKb6ys-W~WasCD$tP z<7Ggkj({IZd^PDI~`hrK<+^+t4(R=$jvDC&$j|kmj~QP;6Iv*l$A*p#1HA6DhP-s}sprhSl>8 zSRRCqaQLB9oG;w=BedXt=bgl$oyTNqMSE0~1v@soYRWK}fUD)59s z;-VI=o7P$39ADh` zBY}vh_7UZ{-5&kEro)PGu$PIROF~cd8m4rV0;Tt=kHPYuax-w|L`bMPsf8=5g;HtV zh@0ZDC^aF9d7BL7^@`2tljO}n6aCK-SzlU(!-PIcNWXV5^ZrE4Jnv#BLg~$QR%Ig_ zd}!c+5eZidDoNX6!kGH`t<&_ZQABdQRy#C7{=ILc!yPV=X8`j&DB{?w`O^NWe0(VI^-VZCKmk`$Vk zV+~+qt7h-j+de(pu;~_W%u1VRsM)1?z;-crXP&wDEY)!bW2X{4dme-ftE5bAbDX`m1T(7@G5s^Rh1*HO|S6w2fe=Iw}gg}q)NW! zpNVglXkOQ%CEK|3B9X87Lxxw`rCo4V-buvtS9>+pDNT_h)_PxG8fq~}KWWkS#w+0( z0JkOXOpMfcx_=lV=XSX#oG30=AeQUP@#aY+)KxgTV9CzR$%Kw<;8dym=-&vJn< z*Hg)?zcf=xK>BL%*BzgW!V`L=-~_6gr1atDlR9) zha7w_dVC{pLV6!Wpnme_S?!iiTDS434O0W=l_bOYr>xMpkiB1CQ)(*&Q8dW*MwF0Z_@FvYmdEyn9SOZBZ=S6;mS$8Q-+R8V$+k^{f#b@8pR9}N zr!gsE#lZE%xXkX!ySVP0Q%xgJEfGK?G`V|c$L9^M6%;W62*R16^8pIa$M(`JweraMVCy0l@MZ)jH{$_Lz|=g6jKN-jRf+Q7E9&1wcaurNQeVf~g{IC+F2_{|HC z;e7G?g)$Fg&N*Fr;rq%qIVES(*)O0mG|kB^@Ap*6FDUf2MOI7zn<))_SZ@y2;59nP-oPH~jB!si?l89g7rx^VMj?d{^~4Y2_o;5(QUSxEl6@;=0qN zGoJQjZ1XKubgpQd(c0ERte3BV7gJo)DH;~S^~`ZXSEl9`C*hATUg9e@x3p^T#n z6O~T++l<6xG9u)o4-badINS=fo!<8H2!+nfJoC5rmi)&5z_KYEdy0}31u;{)49QnR zN+{0{TT7vQKeAnnru5qbosDo<830GREu~o(rz}bY zmJ0qT%8glFMM0tBb9J?~jZxPzRSCuD2YOyFSjw2XdVF5Yth-5$bRSwt`t%=;n8gP) zpEzO%OWpJl2A%wjZ!uG#NGUiiu{2y+hN$wK&{A%RxB8=C_2^p%TK~@I)K4~{;4Jx- z+k%eE&t84Rj^GblLIFeAey`+5tANaputu|E(W$WV`p}j;@%OWTSy}V^Zj-(>9XO!( zEukgCW&ZAIfdo}#fj?X^E{duINO;@uSCfc`2F&`75cdGKj?Mk?@=vP$Vo_3Wt*Hf~ z@z>th@8pfi0*QOPO7+KLh^lmX0|k@|#)6%3c5+2gpfK;yVkemp!J} zG+8FsflPjwL5s6l!{Bqm@zYba8|?^v(%^#QO53Ruz*##|wn#R|o1xuuG|`rzMm*l- znoa+e9IHE_TniCFTRx0aS{x6H_->6tn}l5c(r_TazH_BFTmr9;D=VS?$ouK7a>#RM z>t*FhfX5y>t)V2+=iV%-&Z%W`8w-0M`* z3R`RB>Ep?ZsZHzg7UBPTKUw8n-p%m;^rNa&1xVFr& zW_C37;sS_qo!xM)nboy)W7LK$QIK!oTszxlTALIZbzpK{!K!Ka;^njxw_6->SWU+CNXNe`(1&;`n1&xKy$i8pTeP1If@cqumi`^7+a^;J0 zRW?dghn;F!<*=JqjJ@ILV%dmZ{|Ba)NKVs)XO#-SG9_qhTR+5$G{>4-?VNFh5&XrK z2?36X2i4PfKRn2LdrR+!$$`-@)dcv)U!hbFw$E~ulS-+k$DgacQv;?eJBMXA)D5KZ z%rjTdOI=W$Bl?*KkW%JhVV%shQ}9gvQH;vn3IC`fQ2F{bF@*;W94wEB!s8Ag$pIyA2v z8T3ZpR;j4Yw&_=5M>n822l?u9F(a*}$U++0-zK07$Tl87kJ2G4JF_!zpzHd!IIeqp zE{?DJM3AaKjCg3D56%#6AhXx1pzEKIYz*EWH&iGjGqiX0W5vtD^ryx`x#*hG$#)ZB zCC*qgd8_`zu##NE8^)u6NB#Zc&F>i^_QKJKUu_o-TS~creX}6IymFb$9NBaW9<*&` zOK&qFdn6|!Hh-euZgw18O_EH4vWV)m*c)D_TNaFU5f5}+IxeNq71ZQosJ+`&&2yP* znIYy@aX|iR@{hcE6u8Ka0yPLlsE}67NWt=G_JSJ*?yR1D8#`ZO9g`CaaWY?H{$kwEq)ZohnzIVfxAPFsN`@eW`3R{rew_ zvylu=!1tCW$z^Sakb=t3GK{K4Z;5T*%9sW7{e#jqo_}IH$Rn9@TlZY2;S040rG2ED z_r#Gnv?=4sX@n>^uh(LIcNC;1)7|i29}1xtxz5L&vc8R(aq=Wm9?fu)Mr1h>T8^+As&;3+cW9bQo|zmrkDgRD{*p6avN1E zPO(Bk-cO7-o*!PJdBbV^GoGfy)UHG{%j0B|V}01y^+^-&9#pb^)-DY+Xg}(l75ORT z-|N`_t+NF-glrdyve4is{76pPJ5>2s+5tm0J=C!IEX#{3^Z0l6`$uh{(xk# zRSu!IfL0~7p)ZW6x~YdJ-S!O z@$JwUEbSb~8rK@gFz(gJV^LNS^0u?!EpDChc6C_7g$#~&EjL|vIhMP-Tj+bK^Z^`g znQ?rgq?ot}n7(<-gdKO7Rg=DtMW$&0_xivm`Lw7o-z3Kft^=J#W}&1jmj_<~kh;9s z2GL>{JY}rd6=5ml^Q>CokQ+9GPQ3=bW%(Vx6drsu^CE0ewk=*K8(w1Dw1u`_KFZ7} zIZim8tl!RC;@GXI*ctuN2X~r7wyQBwFO3KCTT`EoY+xSVmI4O~j8GNC8>;W`$n;ss zHz6PVdh@~&-s8Zhlh?elTeQy4B)iS9HY+&%RuZ9xgciUd#-!4)#Zla|nvZuZ=QFle z24-rl8T6yV3Wf?!*S<65mA0UtZ1xFEz)-JB6iG_-70SQepI z2Q&cFez8XKsrW-n*wV??=K!(&I-C{*v3|Ax&>Cco7O(Ct*iOl~M;2~n4m;kC2)w;s zCmHd&%wo|b>$m3jtlYUgPl5{*`@98jzbvGarhA3?KxfR{hGOE6egbXkFNViijo)Ig zi$NV1o2=dFiF{L)YN2=W9j8#t$4?oe%_NTZd!;l}w$@<9WNg01JF_?3vyHw*itg`? z^$HwdCb1u?7oB(^QU6{6fcYcsG7FpcmzJ3+dQ<@Pt((*gYW}sMdKXTA#xC&*WpUbk zqPC$pkXdw;VUPw$j2{dxExha8mUP{6|2DT*`jFJMv5tnbg%H9T?47O_@qKmA)0Fs; z#S^aPpWh4bBQpexJrId=hAF#Ft8RK_R%u7b0h)7)ur89xh49-Cs1U-dVx$NGsY*fd z({>%KHM-}FpDNM#^FdnAco9!2_483YGt#)uYK7y?gAkz!8DL^}P_7}S*goOdrg`~v zFJAjwg>s;?vA~O-o7p3Teo?<2QNU_d=kg34;IF;4GP;%AJRS=?M{kr2E+KA{J3_W9 z7j0ZplbXY?!PVL-G#ztitYxJiPxx8sD#<&1uzSMTFUr39DYE&}oixJX!RDiPPpqS-dWfb7M((l!Fh>O5BSlF3VEBYEx#VQOk?>NzfpT1^%DqFHs9wu1BTN*lGjKJ+P?0b~DFV!drRshHU; zN&ibjy7QL?>jI?v=mReyThoEYaFkK$-q99pD!D0nP-7HXQI)2(W2S6v#f93zLT5J| zl+vTzhkREy(B!LsY3AvH`$9HFqXi!ul?_j8RWwUS%@Ag7!LtGtP8Qw|E%s&%;Pk!F zT=Vdqs}n7>H58ErrMPR(s`A6Yfze?V7VgE62+41m|1CRKTkV9kG_<>uJms;q5k$6d6k}j$1nv4fD?za-QXtw}c8d2K;2n{ss1tIw`bRw3qeR z-R)S*thBS*wO&j(2AMaskmcd7TS=5mr);On1_i))fFM&J83k{$eY)~& zR94)_pmr?da^KT~IH{l)iQi;j>eqxWEYe3i_#SSIlG8fWxRnFEm5o@f?qY~&&bHz| zeu$BPWYMVl+=Sm1l{bHhLl+*pYJa29$T=CzdKiuRAA95>(<*Ggm?FybH&Kn&*f~t# zvwcF4e4s)(#Vt>he8UK6nDpT!-Q5@4F7KqyYn+$XI4SGB9P@lcOZ_Nqn+Isr(Ylj0 zh)uObe_Pjuw#u~!Vvu}mk=I{fuZw?tu5x9~&UX}x{wcj8=-<|KcbNJrr=!qW5fh8e zeLC=Ib`>Y$&QS3{``l2{9ZO4{!3)=X*+R(voz?uzfj8IvworvOeFgDki4llZ#8AgT{(J7!cB;D*j&N!XB- zXVv9n#lpMLt=GXeieI{45N>R}xs@qJ`vFxDIGED(&qTw!3?WLAeLkhlbaYRbT}Ak* z-ir~T^7@*Zsv7Gz8RpIz#(|bLTMu+-=R%&-bsfB?d?dzQLD*D`Nx;G}`t*iF8yk`h zkgK0@etv5#LdN>QMLLXU7{$ll6jPP&;c?LSUM=AKGiRB=s>?DD|vyv1toXDej3| zANY?UU}#DY|8<1kC`^sjW#WuCVGZ|ucw$EEcG=k7x`l0TTsraQ+4YxVZX9pGzvkHau?BiKl)wM7QS zb_nCfgk#}KOw%a9p2%{10slEtEO7_M$ou&V=lh>B-`wt-E#V+%s@v4_8%L>jpkrVx z8p>gHnhM;ni7FtSiV4IEH+SDf{fh^A^8tG1@;=v|B~A^p`lPTFR_Jj*_{sAg|C~wP zkz~-JY95V=BJf%Z$2I6dAi46*Ie$9w3=H?UdQh0E6qcmK!%^&)9kl_#+xT5$F;I=N zIZp@&U7>0~iz#Mq7gsO)pfn2BuHCJrjZuU?zEt}BWK*Eql)*dEQ){3H6>)`bZ9GmN zLwU6Tic#c$4+~HtW(MzNGJ*Y?@#4iqTS?uqC|lX!R>Mwq9RaL#VaV%ZF7NuV0zb`K zXz5&{pEpErpYm7%dT$#>sY*eor`Ngq@UfpJ05wHAvoR@kjXRq{fAW|Yq%|y#5uE}A zhMO9`{cIZw3^H0st}1sPePLg2IQ$8!3X4G)k@7nD#KvW3^bE+#sX5%-6m5ec*X?Ce zFXtF$y#0Z7+ES9iwMz%B0k9Vx#j?O9$!A_3A+ZUgwvZOu)jjS~>5*=RiJ6DR2taOdP0+ zjW-9Bt{x_1S+;9^W|x;`-*_h2z|4fCOgj9rVF>+fN}Fz!=@1OU>-H=uU9fSq#CV>= z;dLzSkNZz6Dn4agy0s%x8mdN&>-H#;962dlmn7?L*Hibsr?!|`;Az?PjZ^uUwo*RrLRF+0i`JLuZm^tD0?Z+jk0&Vo4 zGtKtPLbz?O!e-g>?j@ba-xlTDlDKXKoC66uBU$8-!N>~9b^^Pz*{WyZ>X|6{Tv-1L zhp0e|EL4Wx%ecJg>(!MPtsXxe#=zSk>{|1jpT)S{aOH{Kc2)6T8nuQsujWZ6D1xCF z?$te~LTCGUTdx+feUZW@YZh-gtLYgr?wYf!=j*6`@w}Um$f{l9yjxJUsucO)$2_mb zi?O-thT+YsY)B4h2Ao(BI&T>qw1#(Hq&cd8%1Db%@Qfs>_|F@3A}>)T$pL$n>#469 zGMP(0mcm<^t}d@;tQ*BLR5^QfKa-?SCMO9Ao{@hdLSEt4k=GFcB+o9pyCXv5lB&X; zsp7F{H%R{Kj<$G1#f$-C0snznx^nIUlNmJr<#)csLaxG%@{KjugOi5KX}Eu{zKf{Yw067PK*y`tNAXV z%y62qh_Ea!h%-Kz_T`Sp~9uR37}*c9ku^X%*xP_w4)# zSRfHmSgu=f`CWzd;tyW1_9k%0&GhuBKMLfR{!5dXTe_!`NL<3UX5NGwn3F&s_I@{r z=1xwls}>OJZRzys9L?X&={w0@|0mL&M+Ev_G3;E;KT~9EgtE-M5nv_q|b;+M~rcm*`c$=B#2f8P0g`Pl3(Pq$ULVJ7$`a zC&<&F8NIu!iyH1?MkTg0Wh0FD@G|d38tr|~{APPex>Kl;t*0a2c6PQmkWnsY`WfIk zC1g4=!v@@}D_MW9b>xr`P@>~ju-C=;2T&c+Xl8~=0R@FpH)@~W3 zr|@(c>dvW15>?YtgS@2?UJRQ8J-=o2xxZ+jvvrvUQxoog*NQKPewo=BH~4>eJFl=N zyKqgTpr{}SN*7RyNSCgFpdwAcP^6bANR1)Vg9Jj6-a$Y>Kmu2l)Z90*NXt5 zLtbG-)k><*>p=li*Khm`93Nvjl(ekYe^J_q%QSj#C@q=Ab^KZ%^7m~FDk7+C4DfxdvGlIIQJsga?B5e^$T1T<#X zOtd=HYe>5^B%O~P>`v%=UqelIIeCTQwy@EZx74s36X2CfB8G*QJjo#hLO#eUy3B$# z&~F-1I#=I1W3)9z?)p;y1_93}GrW`V*-;Gk7xXiZn}oRRl+Occ80Io#)wf zf9+Eu+%I4whU2t*sf3~kFb2R3`zyX+gfT*e#~OmQ%Fr9~;j~FCnX#B1^u!*Zs+HY+ zi9vUaZgs>&Nk6cB#FB&=Y=MmZZll2F=DaU&9c-Zw$}E@LcDs*8=z&jJgK1~nOy#Ak zXQX<%C>sS|@xM2Z*?%51u#>!fqk~Ul5S3=Qp{1ONX+2x03RGc6g^}(2eDJWa?1!VU za;TAh4PiCM9>;x;IV!XLeL%n%I?do+G*c%O}S+3eS1R_@&HJ(RQW5i%2%k~LS)J3WNdiN}ggwLeO7Nb>Y`<#n?i;R+Z ziCRD*45&psRp~ZNm~AXxKqp@e+-r>Fzf)#!J=ty)sMRBkOD(f#Q5y+>kzk_LTX{e< z9<({Mj<^XcfF~b$HcY5o`I{PWDa5MY@>~M@i_ZFv#;+f#uf<(+HAEP+gTcBC-_SMB zJ=6$=M_fHkoaHL~nB0lC&FxW#g{{`l+?0dOwxO@ew75TAxk(iiCn|a5I4MbCqWr@0 zq!2})D54W)(2_{%^15S8>onAIRqO%d!-?}`uV}^_*%hSERTNPVN|LbAerbuqi zGZ1iHZ6?QkN55_0x}TxD;;yn&6NVmQCAZx&-^OWts*4M}uh!3^vxtmtrCo}~F}q|l z*T+qnojo@>#m_p8JAa7(oX99(t)^@++^z1-W(7TKHBs1BUwG^T@a!tox+q-QFRN7Y z3Wm8l1cU{&S@U4BNhLrCK9S$&LJ&=*e8YQZAm@g}15QjK;!2$xyl39SR5e;b{9!lKe=Q zB0ZER3o0tpMUwd#nlfZ02huw(Q&ao3m>cbM1`ZNHDgt(=)BxIFwshzS*xbB*eg+A z>k4~U4D%xy@>>;gaM*`k@*SXy6dr{rIOA?x9gf|vJpcAn?T+3GbwX(8&Rut>5Y5qaigUK zJOFnv?=8d~%wZK93DVKb8?3rWH%?Zyck?Ryt1*1AS?27}Zh~@S_6@Mo;4oW>7#iu^ zv;4VC5+aPoRb5;|Df7e?gNiQl7;Hzz{G9``Um6w9d?0oHF?!S)ZFuAb& z>lKu=xd@6^5q9CdC09UTB=c88KKO+7v?rFhusZmgZm}KToW=fnouswo7?b}x%~NDO z^=#wQ*6#4s+Wx*NOz(JpgV4@~1D%Vg7FoA%D}gVNx)$OJ%1O~(l-r{e-kyaD1-;Q7 zWJ6s;wW8PHpr2>M(LYptC$D?l7?w}scZC*2-RFlFRe4B`eVF59l3lk2C}N?u5u%eW zoB6jg_3EdKqmN?arl?{{mL1xyNGXKyUL0FxyWqx6ggm9Ujwp!wxQ!o|6P>y0(4r%5 zVqV$P*(ch4t+Q)oelgjJrokW}h?GXCCz~&vt7#L4SE@eN)AfH%)q6H4c~^WTRG*{V zb!%0XPlR5V>e>YwdZXkq3UZ}t?U-R;XT}-GiB(OVZr2kS4SR zen_ETkQ}Lx&KLUtw~k^jV802PZ=G7Cv=J(&I!|{)cgS@4WU=Z|*LOQ!jC7j~7GC)` zTK9zO8hcukEK%uVuldW8S2g3f-K>m{x6n&jk{!*BJkrrUALB^zWnm+3`&Wrjwt$Z{5w=~XM@eX zsmcW?595tK2(`<8udQW0%HVF`?1Pie3v0J$!B>c*`7oJ;L zgh;#Y>y)ZtZkO_LO04PcGTSW4_KMhrDpr!mnLN+}=u*9o&?aD)EUP8FETKT>Qer z3sNzA{gs>=aayMOb1OsMS=lZrx_PjES;~wK#Ca1Qz}Y4nu<0$dRd}|!?u<;DviHoY ze{8uB-z`Z;HXy_vwJeH@_>1Z!8@Gk2H`Z8cHfG(kPg?l89LWx&|KmVUM+L8l4?{A@ z!ah>2*Ajk(aA_7n$5=p`x*o*?$tUp>dCu@7UH(cvoN<8&84q8% zAv@5SS<3~!#w3A6dt?1gzOM;4q{7(++$~6Uu$5TKN>M-VWl+Tmauu0bdj>Ec(t_8ov-g!N?e#PZy{o-(Id-+{VcsgH7f}Ieb{4y~2uY9&(8uJd}M(8t|kW`k; zhpXJLhgu98jlXj=-x~ToH_S5Bt46QX9TU$lqmjQO*fjj10MSu`xI_$(K-wcCvT0uF z0eeSpTNw_kDMpkA(PWgT8RW@N>x+%P(XxMc^}*o8tL@_*_Iz5Yd% z=we*!xFTA`i)Kj>(D=8>+@y^=0>L}J^h)nwPzfrg<|XD*j~E5M%sENA`NE3q*yk z^-2mC+=BNC$>s6Ooym8v$8yIFwQUo6_pjJdUprH~_(RH2n)bzhG-%qR57W$0Qi$%} zvk6 zZNz)PlFO3rsW8q>b%4oSUJc+?O1VlOxDD;g;3vK~M|1TZz(DtO+gV%zoN3NR+QNrJ zprzaSUlF1G-#_!eM>*wc&9Eb6f623ulMJeFrU#NF60kJgRaYnf(}-s=^*{jKG%4e3 zfgzqZRL);WeG<4n)%#UjFj(BNa^Ae=eqt~?)3DUb6>yo6R@vR=>iM@;Fc8p~ru;*- z#MT{a+U4_s{=v(V{J)A~&4^B~R{7Bo4>zQkpLO6y1Y3a4o0tB)N04-J%GGuEpWeAv z8@hcQKiH;drsN1|Pe{&0(*;?|<=oK|f)S zw?54K2twg8hLJP2PkfmieW2y-6lj1|3o?BQf~!|TD2!3=sCM&SfBJPJ;O6(*NtKa8 zmrY-oFU&`@3)bLk8>q4BG|jFUYIDWG29jQT-YB-C%)fN~8BQB$b4AJJFlgty))K(c zcPF6|cIXz?(NgQrxpdO?E-|u?Cf&%D95nM}|IXv(*eN67u_BTCP_dH*F z@GrB9?LBB`Kh1mfi=9Ki%1ev@NLF_I5+g@dSgTGk z&{VSkg}WZ$M{Gm7`TQ&!pTD5It^IssW?L|&Lxb*ng4OFB4lwrEf~e35j^^C`ST{nm zX>*q#UNj?+tV1-~$WR{TGX0{JCS{SQwYgIB`GsbZ)T)GplT8LCK0#JiON z2(w>_b;Dn$hkZW8B<1xI)ovNqg<2aloVeywH@#Rkr6%MpR)w_RacY+&UMh-KHo%{& z_8dvW{jB4=<=y_Y?z)c6G{IH+VFJuwo%uvcBZIOs+wDG06mS&7ppX5?Mgv;D& zi(%gupg?f=9#KB?A&M215%@iB6ZAk@S)A@EgtL~vk1Ir^KPm4K2kj%YecQ#ozHZ`1 z06$Tp)(@|fC9-cgQC0a>Mn@t?ahOh|T=e#vsL~ofkp)EQ$7IXlUL!<{wLjK*v+dlt zwYu<&9S;-?-rU=qjmFdV=)_+ka}d`eR3u0@b*g{Y5x!Su@{}*3!RFQ&li~0Xzu9J z({t-0{*|5eRg=zsU^Tm|Xg9Jsrrsn$B@LnnKdFhT^ChT>=9SRLm9wM-{S>)wKwu22 z2VLq@bWu?xvc=Lwm9QP1nuSn-cQP%_bZ*YJUV9|oRfgGeMRgl zg&Q)@M-=+FT@N^n!IT?wuG;s^J(1g2c3TU~&Fx@{4_HuNO@ExV9A!VPjB+--@-|5W z8&QznMs+)54>>*3lg&QSe!GV)yj63F@s_jvw<@-775VS&sEiHaxm6RL=rZ_oVrc_Q z-p^N8uKs;tjR@LmLyny8d;mqt&dk}VwbqOu`o&(}dppBZ0J&v22>Ut6H&7m0{l(Sf z_Q7M(u2wd@WJL3E7c5%)D`d*%LF%yU9l*J@3*B05oN#0f$w_)xvHZMwHc~RRxWjk$ z^3hKF14}p(@7TfZO-sC7%NuqGc@ker;=6}#O}gwwFOFe%l)lViLdQiepHqy%1^>p9 zG8be2{%+@kmsx*LFC4F^I)w6#=(dg7T>P!^IHY)OG`MOuA*lN{ai5# zi}@>BKkoqU4k2WxCJ-3G^&ko1YZT^@t+J}E7+>=<$4~Q`r?|O)sLE%KDPS8JD_l5* z*22kxF{UE3M@0ZVMKbOC_jO;mXYx@=i9Hoa9$yb&Ow%MG zofjjN)ho2+D!-&&t(pUI_vZK5U6J6?W=dRrIBT8|Je#s@tm><(jw)=RG$-mDyFT{X z+${LT_TT+Ywt%thXCaH=u5-KYW7Zs3ohzt_>l3UILt1q0zH@w$(i%3JRE$P}5QGBB z)S0leWQB%08WZKwm7v?$I8=qKs&nJsZ%t-s@crE9>g?ANiwC71iD_d!C{;F+dC%}#*3KArAJf+=mwKWrkmqmH z?9!jx#nheY_-&Sf#rx9ew?(>VBCtNP%rO_WW`1&TjO%@v$B80Agsn&)Z$C?<>AB#h zm%aN@@itEy{BMu>8+VSESCl|C2rqElaoQNCMVztTPOmZ(+B(p>#K zVmDakd->O}*B}ll-g@MYfB#_S0VT0AIz=V^z=VPx+GwR-8eyF#8%?zH!so5oUQL*4 z#aoRZ#$FzP+%F9I^fW$a?C8;rP7?;++>{Pft`$73_Xyy&@`fK~LdE8_8Z78s zyp!gq#akKFX6u{vu6m~rwU}w4Tg)sI6Wn)H=ux2uNal^Mp3~F{e5?gVi3@;ElQLG> zS8K;p2DQFdv`Rf?==RO>?rrif__NKvUiVlBfK9h^N5jHZz6#UF2Esc!E^k@`<~ zEuQ!0x}rltSs9&D75(4XcSjclJ?)~)qCcg?4F$itG$JzD;f&^L1%Q{dMyQ5~w7&jw zc;!@=%~c{#+bxs+fW3}pUq|_BjU+X?KDYX%SY?3I`to^r%lN;A*}DMxO(Z=I&l^)& z_xOcmZNZF64$I0X^})g0AeIbabA<;mDe#KzWf47vg`J=!bhu9dS38kXu~eamIhC?6 z(Ui!dITfGFTU2lPWBH`I|5oHcb2SYMzq5!TS{^-z&S+je@E$vbwf|_p)fVs)`=M;p zbq%4wm6B|$}5fxF{%75u7NJNOH@~|z{7}~WfP?n&@U+G&l9jucG zoV3jA8YjHO4LpH%|7M1NE4H3IHFfcd7Z5k+bk17#FE0IBdo%D+1(+7QajN<8FrBQl zr~uxtopl9es|#aR1A;1@I-D1t~@Lk5{ak z)udeH>oM2-X4FS(8=d#n<~FjEnHv}^o*>|6DjSp)sCsqn?>gfgmI{f)$*EX(uU=aq6z(JDf5nRcs3{Qx;^J5>?&juyfc0m4QJ>7NpBXg79@WF9 zr_{$OJfwNdI$3=Q3hP$5vEhSFXsm6Rbak!hMmoUFndzMJqx)lu2BK32laoLSgdBhf z72|as*_X{Xlf~9F20o7D`5BjhDOxWD?PfT<=V@It$eSaqWyPcrF!6Thnh~Zx{;p$l;u|x&*#@FIb7^jA zU}BZKySCgK?h=L92HtYyhay3i%vxo93!E_W*lR8}Oho$TkjFjQO!2LD|4;=L&4US=>=ayMV{`%=~ zVKa)Z(B;{qm28F3)p5-1UDNv6@*wu|(3ft>C1($`-Boxu<Sx1Vkg^IipYYys40_`$`yflG2+k48T?x3x#W^UR~xtk+cS9{8kS$Z(=xVdR{7Ow+1yYo zDH46QmQ85~&D*?rY}@2BPVhmOSs>z{mya-SB>fHGo$$KC-;io)>6319^w*+e zFBs`7Y_c~VXGu#fbh!x`ta4>4fSar^UZ=_o3?g)6yN#@d<-hs+2+ro~xCxYSr2lYa z$}4{pRr!owBSQLy+QU}0K0|PIbg|PzzZeb=g z!7q-SZ&eIe_Qe2l)uC~(s>`HJ*BkrWHgrU0h`eIVRCx*Hwy6gD6FbqZ z_x*dXv(@!saXcaf#%@q#b6RYj5k1yBWbyBovO*q259$1PZf^U4$yZwYmXd|$gS^`3 z`M$mo4M%!rPWhb=iwGv<9rFE8TUa z_oUr*md{fU#9#8>YHz_KZ^4rR+HnC9msSfnQCKhHXzix6C#UprCLbxliYR7!$FE2SD=kx_QLpd3MY;fGlrfx^lnr|K{p7-qJ(D%;r5`+E0J;AtX%}Dk?c3i59=`FnXb41f zrnoQ(zS`h`LTMp-&SYf4EqW`RQdGVvfF4qcEE?bS0TY`~qU)ltg_wr&H8m1;(l6(@ z?LABqVtyW_rpZ?x<=b^%?mBAg__eGmiv^BU+l{TP#lsgGCY7~iF~41;u{{Z?KYu^H z?WS2@0G{iuI9q3b;L!@wgaXOEz;=+yG305P^YF?^+4;u0_v|16w*9E^-_jHvE33x} zm^*kpO%&a&yH7|Zp;f7`1TaBF-pVteYXsFBwWjfI{Rh>E4;9wKNvJDO4oDy2HQRA||K6Uyy zKNaubAVL$MZ(SWGl1@`f%s@ixYfZ>@$ebR>^#)Wr2v53;GnP-`}0hM9)9E| zT+$NBx#5kiY_r3QgFs0TC9hx>tx9u4S$%2a%eQ3gBRFieFSyy0WBa0`YUQSY3VQHssu{`QvtSkH3PA8{-eabKeEN0q0!Cft^0g9q#14 zw{M(Q)bnsZ7PCuwP$2)}MHh5yk5s+(Yu9sa|9+k_Wau-s?OX{-6?LNgpbN&mC3Y9AqK^5`|h^79V=wci%%jWXTeqQh)uf*IxN@$tbbjKrxZNw1unPDkwm zar-YrbTeOI#NRYm3)7G3#;<6FuU+SNfBBG|YF}@sqJHlDk>|<&%_6augR@CMg!4tA z8;q3}R;EQz7;2}syw0NMRJH4yh`b*U_2jPrq|B&EhvB(a9m%xS-9PzjPPA03_3dn= z=x#;Ho+?(d;uKlU2TwXU7wNLB#?)UC&u!k@5onCk5@a1!XTl!MeEMi;@{GZIM`88+ zGlivZu??azhPVX0yXiX0IuosC;Xb+{pvIHi+BYNl)bHjcny4!;e&U=4Pg9r+ri$|~R{gi`etZy$3cH^qi@SS4|LxB$;M`(RgF796-o}I4td=+; zw;%eQmQ{)Wnvc3)!fv2`i|XGmlmDZ_Y=Ce9IM{gLk$8`kd2&mH0-UCK*}yxRWNh(& zl4Mf(;~9Lc*X@E@v%fWhLLWLDKNm5#tVl)^yM{7q!K1K2(rm!kIKr~jccMFy(YvStw(EfhF0@#W5^ zvdze_0}i>XHhtUTx1}uA&WlPx?D|tomHIy#trFf-8Jq>wQ4Ut@_ht1eH30C(7)iYx zPS**PAY}UrvJ_NeYT+;^Y^iZlh=7$m5<2?gq2&Qx30NMubA9zh^}-P=lbRSp7&0q|np4}@qI55JUL1;s!Gtr9;gKd+df^h8;o_#skCwK1@tA^Qk`9>A zUcVUYqkAS%A`x13A}Wx0)kjTH8>0Mum^YpEiaFP%_Z!j|Mv)PmqUiil{ z8u0ShwPRSC*0vT}g^LP}8TY+4c;rsLaQ8p>_39#Jz;b=FVE3e+1>4VbG_!AGF)c`v zfGIT~j?ZMs&q+drv?IL3Z@nM2JbJ_ouL`o3NExJKdT{V6iVif%YOW*wk(@kZvDOFLSuk}P-ftb z3t&xzDyhGeY(fH3J77jQoyqvyHvm&|27J?IdPeXJ_SSCIV$j{rSj632=6uqn8z@no zwd#QO;3#S836#HEg==ElGhG(VINM&{9NIHsFbHMI`~1z9yF2Pyt8-nj_VoT3nB^Ff ziu*ABYiD5QVAow?W&CX3ny1}l5(nA*JxgN6(OT+E0K~GFs1Rf=ePaC{No>ad%Zpdr z`u2P_zHy{(`=DC$Rh#N znf+YoHfEixKWIhlE7Q%q*VTqD+^Rhp^w_GNHq}lfCy>?X(05X#Ne#G)}%PI~w4p{WsP=&7VWsbF#B211T_xz(!;)?r~B^A5$?UXW+yY-;kB z>Ure#^Tt_UE{~gKH)Evmjf|l-DkSKlc`K}P7CzJcVJadoxD)E9PmD{E&necVldU%E z6jv{(sa#|J823=EMT>#GIoS}^T2P-#iS)-R)Ytn}&>r~%U~!+;95UmkxvB$gxzXaph2`MC+WAQCoYR{CMq&k-8hTnbpnatBENVd<7qBzRw2q zv%(4y!foRPaeu7VDg2o7qU_0?IoE<{{Vbk^%$Dd#l-7VXYKUCDTJOI4W%;yfxa=H< z=}aSxQTG0!8ncJB0crlOJk=w7E#>!l=3xu?J9Z-=pe(oNNOW}u=GJ0d$72<4x5)KS zRrEb*;Dd?gR&qX;1nO43>FHZn#(NP$`zmUYe4&7?hd27DRwcg zmpE8P_jiDTuOKIcSB9FV~o~_ulj`CcZZ7cv`P9Y`@`|^%rwh6#5NmA5UIf& zumLJW`>l{|vhx9>Erp-tgYWye-Kw`}t$AkpyeY}aws}t=+(TVd{mu+u8NK3zWsjJc z7|uS@_L3ziJm(5ouL?J_VQS)?`X^B~9XtP?J4GQf=rW7-Ool$vJ8Fb1H%_wbY&H$9 zdnoJA`rF)@P}|(s_9fNF(Z|u&JUuHtT1p^Q;9tS790W?M(>wvA55{0*#IkiIWwxn> zT<(bVjlN>`yJl4Xd5MSsDy(!ue7K4fJOo65^>WK-6BWf+w{yW}R?aGtEkvW~b&sL% z8ww3+D7VN0tCNt|h=L+yzo3VFQDq^!_U?2gg z3@|EJ8|sPN?M*6qVgarw_oVaeBkzQv&)&3>eD+z4R9{b{Z3xInAceSM z1cTMzr(zHLr|9pL<_8P5Oo(5+iv`25EXL^#l@IcOiLE+9Hz3n#Jsl?gM%-K+meg!Y zIx`)Ey^~mIY-?@`j9koOeXiSc!9=R~!XT^Y&qLn-32tjV)coz(nsz3?Y%wQzl<8sn zcZF5Gb5H$%BYCToPZlB{UGWsBeGy~>et>WFlu_Md@eY+I- zDPahMy8o(lm+2$_v=5eGzuSShE^*N)R=eMaeWL;x;HDGascj;j4%NXp5&W; z_^Vs16Zvsk&vR6Na$uBFK3R638RI``Hw!XF4Bo6=EvMXXJl$L!vpf-%ZB~W55NlDe zj>0yHgZ;L6UXsVsNYrUxAOZrdaK-{HuwD>q`p>2c@7NCX4yVc&B3^0m%38Cf``efo zXXK%itpOjg3(kOoz11j}e3_UUy8sKL+#M5)@3n~i=xuUrVKFz2Z5uopduFje;B2dJ zx|TrAf0@TNB&Q%5Ull3<9GOy*ErJ#avr;3av!&I+(>9WiJS600eBth;I+r{Ju5V_0 zEQ0&4DEkrCEQw)F`8o?NkMB_^m{pv?7v+Q=D8FR-z26t5jA!*7ot50(GPs+TaeJHV z@BoJS_I>B%BRd#yeFq@b9xFN}w;keCri?=4rhEG}sUs2zc4bvH^eE!f0?$c>Ite)e0gCN=fpulffW z&o4e=Sc&-A#ndzqBkEaI+NupJw{}7qII&?A9V!PdwP6b09;Xr;G;}(Xx_?O}2J!7Z z9bs2-B={|HW6B88=0tEex2DE;TzIKV1KVlJ7fDCQ74x}4sA1^W!mO_jjmRmE?6l%x^alzvciAZ-FWLOz-45zAqWCL>s{QeLg=9TGh)WI1& zYvn8dyFIzk*}{H;sRi$w>qxwWRgPv?GA4iLNU2$1QR1!Ex0IwJ)xJOx;=V1Mt912z zC^x~Fj#;!%D$u{6rrC@A8DJu?H+|>(Nf{H;^TE_zJ)&DTG0e^;n7IDbP?4xQsH zS2y-tFm-B;_wP;%-keI%ql0AwS-VS45CxyEmm=4pJ@BGX&lzw?&iD9_%IbvE!IwZj zp}s#Bc+)2Vgt?5`;{)`WhsOuT)nUh-gAqUELj&F2a^6{_ufs6q5k^a{%7l&83z zgSZ_YSw9k~xE+?%E}p3s-Sy#K(BerEx&g&(1>4_|u(_Y!k(lSut;MhPc_rHI?@=>D z!GdJ?cjtgxwY8W-%ZH!Td8!dd26F==&CU+l4;}1%#05S^%!v6p@`n+4+VJ2jWETLS zu{kf?Ow7)}(tJ2CEGxCZcKEtH-=DdmZyaR#^you? zg||aiU+F7wv3Tdb>)~A3-TlMBl`mCnI9*UFPw3skd;J@dLGIgClux^88&}Bj37^W$ zDh|}|y*>yddH>S+5kN;8T&S8}(+p1Ujant%~&@F$$M~ z`@`i(EJvb%-p_#_(jmbQE7P<|)@yLstKZ6yDrDBzMNM^W zO!ZcqsxfkNg8MuPDDnT}m_9{N1i%oKOK4KiH>U;*PYhwu9)DfZII%K4Mb~61QI9XS zG{Cm_2`$x^w{i7Lr;J-mK#Fx*`zThXQ$<28Z+3koZ_|{yB5P2)Z195uYI+$<<1RT| z9pQDBPc^xL=0 zzqN~!@^mL`QH100!)@O>llJkgx``y5w0fzIoowtHs6I$*XprH6-#LC5+R^(0YnfjF zvr$J%hBry0%gRPYWCmgzI$GJh$VorTWW;)0?9keK(`4M!vo7^& zw+whrz(ZMD`+~#l*XLECG?I^a8DWQ2aRCoVRaG4YaN0gj|JB5A>uwfZB|3hKXX$q{ z_RL?i{X^yWM(JyYyhOqqj>#7*Iy~*FSW%;~047qJxxbM%a6{>NZZe_~57N7M+|`TO z*fDz(BvIj7m};*-9zM^&O*^=0qPl30upaXoiBMrv^a&$7;vX|=j(KrQ)kSN2t~3Fc z5e5S`!aH9A*2Rynba(k0DijiHW@=!CsfRVY=QFS(%N?7_$3RbU;RWtQY7D_a@&h_6 z)FfDs8!1hH-$=jFxo(a@++ou~PvY*iZ;_I&iT6G!h546%y|+;MKpJtp7$3Gmsy(|0 z2X(L>VMoG%1beK^^Au17`LX|-+ng!sVNO%$e7A0DuFhnQoEg3hk+x;19(MMTttq*)!`K25zU2O>Qtil+Wc1ZJrdd+Ppi^oKsGan z?Kv{JhiU6bH0AbRvg9{N025I&nj(UDQjbDSO3I#zi-_}fLVPQtEp>cSI`mTeWyh3J z5<|>4Sd2d`ejYx1py>|mdLzxR=luXO}%Hv)C$9(c51 z{e4NfZ9zS-5-GG$f@U|56j2jsbr=y>)1C9-sm_&%8B6wiVRx_1YJGnYXZzOhcf_CY zj!SXR&PO5mqY!+~O@zXf?8v1}CMOla#z>Q~Q(I$GhJq=$iB#H?p903Vp&^$9pH%iX z?MB$#59!FJ13p-+5opw|F0c_j$&x*PPg&U0!~{`I#g{OoWzc`C2%@@qO8yU~$IubD zCMOo#*GE)7wN8dd021I_96ZNpDuZrYap6VkKFH@rs->^IgcXZ$5-Wd9c1RDHio!?M zZY5%BD@PXnxn50f9WZVUt8{Lx?#v4x46g5xTOw`Pv0BTHPumQ%=)2zh;n??7#ddWk z0F$|rGf;7_HlHVGfbJ~etgKWFcU3C!V$*uFUm?l8s;^Aj4`$5k&K?y41^)J;^z*%;(bCrGcUm(k((=hcF6T;R$Y>pl z^8oIHnP2-{?%EaTm-Zwu7`@Vh-wi}Fs|d`)$Bi+#POR}x6I+;VL-qJ>r7M4fwUSZN z&ij4kD{sZ(_rAwIQhE{CGJ_3}K!}g4NW&$Tx)fX6^*)XDiK-s?#~$CG3E!!Lu6;b$ zeH+)!16dtmg`eTsfV+BLgz=Osu1kfV_?A=Qqqz7ymr^tx$Jm-lTVQy^uuS)p^xj2* zFM%^4VVm(Pgf3C214O+EfKk#_!w)UZV7YNUbsVq9sKV3@8cZju47oS&x;5&yObB1O zioIvm+HOkr$B{0b&F-%JJHj-s77~8M`y256KwWX2&E+PiE8VH44W7HI`|ux2rEf`sCiKI5)z}NG%{s_1G?U~m!gq=5XR9PIj@->@ogMV1sABdsEWHT( ze6Ln(?{O!a?_9}#)Ov>&q+Zlt6iFv>qZVqcu+ch<6wYy+O!d$oJB z@r%1#@jeS+stw-j&{lK5A~@fO2@2yWuA^rO+E!2CmDcgg&lufaiFJ783C&+}xsfX< zUa-hJ9d21qkZ4=ny@Ajs(u~cMDq&2P8>|NFh5E|-V$akeyu#7))7-l6zD>OAj4@#h zReiS!x{0`rQ4yMxk6s*MvX!N!$mnv9L~(WrW~UGAI{mXcyu>CEQByabx4NW#zC)7;=u zxMcR0`scYEpvdb(?{4-I__LtEWPU#$NX^ z^N-hwhoUQ?1D`vXeXCRZFFt@5iF#<9&$an_0X)P2aOj$ixg}KcxEFT@%bDHIVcb&v z1~=`*&Y?rS%qk8CBgLxTRk|uGE{W=w+C!NrmQoNTs?}gYE}mB+n4gB zedhouqKaF5;uw2BH~;JZ;&A+TzW;Zb9ebdU0kVXtAfzKy{vWEI0D&<8P&nvYJab*m zye$fIfq#B>+j>vBaw+)9ub0=|aWr)>YQ%HWtDGxxl2H^|QhmO&g@24ZW}dzY!u9t} zozswqF2UudcBA%fAw+;ay(0G?p0qP*;D5+5rnGb=qD4c4=J0OPEJ%Qm4BkKd=#;b#?wh*PRJm>al4X`g;3jP2TPcsh54#T?D$W z4Arp1HqmEi#vifkQR0>+6Os~M;?MS`E!To}Dg}Kbr0R;B-1+y-iu>2NKMTpOixXJ<2quh9HBIID0u|| zOIw%K@g(XV6-u25;Y=--i;Y8`iwdlK6ig_JLmk?U3cAc*8P6}nB_0a zVr_fx_v`h1J|3wS!{T9sPvBy&_BXBq&l=yQ#-AQ4W6Hr?Hm+Lq$N+~g6Sknjia=r= z{4zC=*jGWMcee(aNo135ET>N_%3tl45qo~G92zrdyVDRD>_)cHdN5dHQVS^AyKErI z(?|c%=~01gF}-kDotoVF)rQoJg3&gv|I_$Xn%SHj&D64Zo7UboXnl(qzej zNFFMxR4x*$S2WwOA68K1YK@r$9_Q9N`_Yje4r*cXf02fxKB)89$v9^s%b9mqt zMDSk%QesPXiE{ph4np|)b2}j0E*fTF%h{a}(RuJtU~#-H4VjarE=u;8?*NbzCv#0$ zwxXV*wT!DkWpjOlcEOvtAvViokh^oe4x_*n`0hsZmcq~1V)SQbOz$>!dRqg8;3@Lq z)aVHP&YcI=l5)*J9zr;!ziw}f`7cg=NQT4ogOb1vkBT}q$2dpxo!msnuzNq-USBR9 z@4j?3L^=gNaqvB_x8lp-=KB5m!23#J6#?$5x?>=pAL4NiKAPUOn-=Gt_@+7#wiQGz zX2R(&>#!{HJaOhATux?l*GBv4;1{y*XsoBVc->6-PR)aTO5N{}JFrh}o7dLH# zD<7{W3(xS|0oRWYd6>o&6zm??HFWR(?f(J?RO3!yDx4J0;vys%{_J$}qFWJH-@%sTH*CJXm5!o9j&BQUu61UFN4r0Hl-B-u+&U;;o1$41=*@1; zmo6S;4U<^4vMTa;-OR>z=D8F+CgQpzEq!1OuiJ1IAFe;TC$BX0p1mI} zQ+>LxFY53M!)^C3h1PtwiyNII&L?!{NuRH#~6K#5~ zrCOcKYwmoF%Vo0SQ@7Vj4Yjc6;f`(?XQ~SO{G_?Yx(w zQg#ww;+ioQ;UV01kfA;*rv!bZamUNB%S+RS^*m)Pw zznQE(TrN>~lC`zLk4M#_K{=6Y1U-1a;x8sOs#nG=pIpNfk?YS$`Rd?>eZD7B<@!b| zG?)(z%rPP$Y=WY_HOG!k0Zfkux&^WJhrMUnD?~b*{Y&}y%pqb@@0MT}_Gau_kF?rb ztTnVckMM652h%hKhW6Innv{Cp3D&QD%8lD`A1X<>5Mk`kEpui9JyziQCN7!6G&eJ{ zi6@@8GP6Pl_`xR^SNj}>lNfR}9h!eIC`8s*n z5cSnfiL8+q_S%Bw)bGCtAkj0Ii<(8>*7hyy6-!;gO!b_}(+T+TyRwG=m}8FhI}{$` zMzTsJwE7)nEDk^UnaxW6`Da5^pJX|ro}>BFSi9bTUKVk6X&TbfySTGO#sAm}63y7~ z0-i-_y;i{jmg!oKgm8Z2oQkwRo0Wa}^=7UrDww*(krBeUqY8JSK|y-HUz~OV*#2#) zfjOfXS#IOPS86ShK$FZ^N<@*@er!Xbvr}$Da@e7Yjm>MH&s}|&he_+X!>J)&ar z(rOzI9j`zAe6u7PuSBqvqcNZf(}{Ue2N2X?*Pl_<<+rEm2oSa@E=@ixq^4Qb zVI7jXmAG>q@#*dOwY{HnlxM&d5gN<}Y|a7c&?v^bzb#N^6KPORO|xxGx*7e=(tQ(N z>2bMIIsbY4R&7tptc%wup@ z&Hrr*{biBJ@kD`8)B5_WBY~i-08(T}-Dw_w5%Jz& zZ1Tk`-wE1H|$dLAg0ltb81(A|FyPNn;H8 zgwD=x(G2tm><>XY&AF%xlLVg-UyZ`9yf{XVHTVJAOAy>XW7D5-gB@rriL!Upqa)~6 z#w~c(Q2?)x!FQnz{-{nKaT$a85s_!;+s`_?q9Fg{n$(Q8z#XAd#+bcIm3{kv=n_>rVEd}n_cHdfKs(A$wm8u*i*q#iRMQ9P-V0U zSKIWj!9Hk!`t4@rOXt+-=zuBizf*8!wb=rVpWy-_vuD5JrEC5sA20S4Wmq2xn@ybd zYcitAd!ylEs9Ir!*z7A?g~biQk@#Td96gX>*z0e(2GW`eHp&XD@M&hOinWa6FK9V~Ho?>81d>md(rlZa@h6 z`;@n7OmRTG8TN6=LBzT6RwS|eT2IUuKCY~Mgwywow5VW(l?>Jo$R~5~3o{7+w$fKL zHDdRM2eldR!ptBWz?&GqL#02OJ@~_ue4HO)A-=BC z2?`Bxd~MkI;iqlmIi-2RC14TlXcDGc6g$?M(ceb6WGjtGSQQd!MEhc)pMUS<{qR+j z@M7tr_nMR1JIAx{Ses)+){0ptk&TmyAQpj6e)rjAVgObVlgG=6?Jw*-{%Hl3-+aZO z?D6=bbjBb}z7$ck&qlQoO0<)x@GWw&M(?=lbO>*miH%v`rx36b0cE_FGHT6q4dwSabzf8n&tQA6^6gyg@Bh?Z?K ziJ#ToLn^<=@XrNvR`kcaOJ+4y{&H&P4N0UPiq&W~ur~;aAyKCMLpaft9&57sSI$%E)s9FMVMZ-5;2?49t zVbw44yPeY->i6LRck1h*k>;1T6D)PpwQgT2_ltX7H2C?b;NzQ*s@^l-F`)zMlu5-> zam1g}=29o|rTZSxlR;VH%<$n}XeTcYc3=k50$PpBIugcV^RZ{}TyfSv+y0{3su0AxXy zE#16F_Y1nT`1g|Hh0oW`7eCz8H22D@l7%JCj;Rz;H`~mp?}VSp8+ z+j-NLD9Y$>|4n(&{>nwhxzC@GPly0fvexilsWMh=^2}mfVwrMe$>anT0-X1G>oMP~ zQZ>xf+^lS3AgqiEpL)uZoL=AK<)|n_a4o>1lW4c70aa9!R{tZduso=M2D>}o*2dRi zS%O(y-$bgi0dq6v(|+eV?2hKkT8j+A(N0iO5HdT1y)HTkb!?A2R-5V-e(rLr_H7t< z&CQlIN+4x;H%qhMEZf3-+gdHHQNJ~7LWUWge*R2IqokyuIFfIkHB8xhqpE{f{S0}m zU5JmIT?C&SFW&(92vl4%emPp0w6ZbBnDoF@z&jzaW=G=IkEs>+z_~UA&-bInv>z3k z{Xa0XWkFmUZR0a-&y#*~nJ$1pvFk6=uXt!ViT4>iZ?9wNhAkeVa^^G^HvTobE;`Ik zA;H*Pf?5B_?X|e>gVYSaeW;Z6D7>RTplhHtcUSVAmC#vg7I7=m;$YC(pT`l(XCct6 z0XA+Ls@$0PsBoBiAm1f*(TvaFF|QXxRTl6z{-2UN4XSS3HZchE`i*n3Z2IL_R0@Xlp{cUpMq-}@uDYV>`jFEvR&RPXOk*Xe|2F~H5 zhG+tmoN#xnBoRDS)BR^^H;a0gnaVZuFX^haEyz>|I-4?U|kS@#Q<6 zuMvefUfinOmI1!q#$jRdIJ03cc8eYG1`0*{2046%A;MOKEAfjaj6Bi_ckfW z>{EKmdQOd2`wUN8s%ls|skxucEqQVZZE^tsc$W2u20X_;LQZ*2(fiD_=)XvCg?qqF zMo{T_QAzQilMaDMWw)@UDeRo^e?*OxS>xjG9yG9YjNyR$nKY~po}kYCC9qSI!Q|j~ zsERd6wacV=D9F>>SH4v@O2ObCx-;GCj6cad?OUu!!v6RXy~eOdk< zzjM=mH#EiFeXNl1%kXVmf)R2HK#!sXf4c55@iGW;xootQ{Jq}rN zHWwL?xz&I55s!DHjT1B?$w-2c|mSbK4&A># zT(JOWyKC?tx<;+^ij2-t)cgu+TKM;$3yk<&R9DB?apFI8%B5VW2SEKMy6Qmm)cu}N z(6QR@ec%^gFNoRj$$a8)r;om+QKXUe674a?sf{oJ(Wd5BxMjq*XZhPy4>;PWSO$Vr zCmFUJLfEUjUF`Ynm|yd5SwZRPRsqz7Q;Gr*f--$;ZS$D9{R}YBY7p!D(Eqe_Jg@g6c%wRFIDS@9M%&)${8_dB)9K?X zS-0Q|E1L~=oN}?&Ehq*TL2YcTrps%lTZZMqQXkUK zN`*c*s{T18q2u%K6dj%an*)%SGn9NFEyoy}VwptLGNF4buPd-mE3Kf?eb89-QLP1^O`BgRga7EMZ}zU|Il3lip!$r)F3!T8eB8H z5c;El8Vx2-*Kd!P{p^=_o&=KV*VD~Y=5Hnhh-3p8lD?{Pq~Z`(t_%^c^R0z^a#CMF ztN^#-gp*Bd6iAm-oT37obJYBnAw9B-i9Z%L8Eg*%1MwLx*gAa%I{!_@??%+b1wXXxEiaZgcENqY*T#Tx z+}YLl?ffJC5%AqDHaC8=RY<}Q&LM4gl%hP3rD&YS6q}bhkL2g44gW5$k<`403$$V0 zm#`#RaEA~KZym(<*fmpgDN=1jlQ80_FB7xglQ_3yBV}nDDX!E2iN^Hn5f>ayV>g@b z&e@NpkDpH1GB=XLHipS^iT9e9uO43wf?FX(~rE80~9=_VNkkyXlJL9>M z!=Zi-$Vc<&50(cLPIC4IolHh({gS29&?mc&7KQoTA4`AbjpReYl z^M1D2wP6C(hJ$630aqYJE>spP=U^8U5ZY5`5F%v)1cp zg`20kgE6WlTNRRpJcp%h7LY~Tgg}iHjjlMP4hbaDW{OaM=q}^_Dnnnpd*LLm+cE~v zBti0f*AgHJncMooN_~P8rnoAd=4kXadyNfF{Cxx8w@7xLHSCIZ(^kY;Y&6frgnL(e zsIsb`q~NX-X!lNXc2V>QHPZnfI0r({a0uPpeB4u^)^71=jipOkD6?dX?$90miz0M? za{St(x>z0N4dD~a@!=$~2C@l+Ur?}sl^l93v;ygKl1-B*NyqA%FuDa_8+wUJ+PNPm z;RdlwUIhJm6#gzg3tF-jBe%XxV)llSWsBACS3IKv`D$YdcXfemLBM4;BSq!09c?z> zkUR4;)jZ;+UI886IsZnz5zMy_*$myYpvkhI@&hwLVvqD`xD};~jk|6t9PIQVx-j~0dNdY9p}G@!Hx#I4w=<_&=F0_2EDBt>guQ{APE++Ug~ zx{y2L#n$r`N+TI7*Wbmq)4ldm9h3W?5Qw;u4&Hib-T;zI>T+%s(+IyHUGZ37CI^`( zEam1O6;fkcKl)xSNc?p1*#bMpxXogz_D(b`KAWSuo`R3`-C}gjzCvLQ8|>?OT087s z;W%6n_tLuW#_Xs|s(F$@y6MBuYV{8mMla?Z>)W_!s#0V9NhgwkKP;T4_2uuFsk3TI z9l9Z8b!ll|Mt5}3um;@$8hC2>T}Aljj1|A|Iz%YC5YhT;$eMimo;4yY69J-uhz>)b za$ji%+En1DTppG}1#|!QuCUt0tvIEstCEqL;+CtLw?-6C*mdF!29rj7 zB4s=_WkIss6GbVLk{@$YA!;#Zbkyr+z*~=P{SF~Wc`VRm!XKb1-wfs+!W)lOcpg7~ zMz!l8T-l=85&PNy;;#PL&7zBEnYOZ?hUsbS?akEc;~i6V(xKe{&`B9CoPW*}{B%!? z#kVR9#)#A+8NI-sE2NztBw?c_H`lCdhR~LBk@x=m5)acBDA{3*T^EFUrI^uIdRv@i z?+FXK1uKNN!`J}}SqFa|KHMHtH-z?W0MoxxVyMh>csq@KCn@sqqTWkBvFo3hqc?G~ z+Z?j)`V>CxGzkx^ zOreK*@pu<_I41txRwb5?1UTb##;#+()z=Kk_`12ZgQub!zo3&~pz*x&K~axYWkD<{ z_J2WqJ2HxQ%wZt_5{p5Zx*RU(v~2*#{h$(Rj@d|WRy&8-{!WMBVtZ+MQfJKTi*w4! z?;l$sIVdJ6^PrapT^8N*TkMmQE3s88s`B+At-mgMmAJc$w-?x->~1Wn$M0b32aB&% z)g1bd1=U;7{I>^O8ONT@!ZKP;A@xVAu76Qzz4urX;uaeANVi+D zk%%-sNZ)-(pQ-&5Q^>Z|S<73`az3C0lx&^=JqN7${2G%6_ksSX60;_lSqwXVWtunl zgMnDjZDi#3oZ9Cbd}oWPfSrxpALgS0Zgnemjh_?Vp!W?DcvwGN^=i{6u#S0I5%O(X zrdOb8=K;HNv%Z%OSwP3BHSJhA=SQqx5^vZ z&D7s;pO*p4Th5=+H4vNgGN{y=%lQEo4zV`I+u4=5X4I@=TKbA%PljbHC$CGVTK;Iv zFw?(u`S7Clj*621Tx?G4da%IC0P^9mZV9PYsRw9u+-gM@HYR+JNjP0sXtjHSPD}`P zJnpFa;E#r{IiNa;l?|s(aB#C0rpuIMB(e5vz@z+CUFH_6&7&_81%>&no@ajEy{~T8 zX~KJ$7{;*m-u5>6{rve;VJZhnm*Lv>e$bWsMuq0pMyzFidiIv zbbb+G{;hX)tQL{nKB@H{4Xtp3jlA;F5E;;(cI8j`1)XZmf6Mf9K`JKUu7-XUJNe*; z)GSq(9znMgh0T)tj^wYdAN??J`X z9;~2eaKPj+ZN>@pr*>X$@^+gkm9>LFPNTv)H3iZPZ8Vgax%`-){KPeK@9%uySCJdN z_Yd9bB6~?J&SvU<0eOrh*#`RnnY~#%g6@S9KTLMH6$8asHs8<;n+FVh#D)ZdQGnW& z%det=#DAe@wfEEAf3MRh&;VKiSXO}pUpM+hwPYxT;M*`;MTPb2RQXMv4!|xe^>SF@ z2GqTY1a6(edlHzsKT2vr4_@6q|B$VH9jun3^9=d>hn_@})`YO}&^*~GLJn{}5aq%% zn#SPh<0)Z=70Q%u4_qz(frXCHtEi$2jptLP=#=oD#|j9E{q{*48^o_|IZf%0Dz<84 zj);PoqBju#Q*KlRKHo1}jNBJLFUY;7JGNUU=&j%U zIE_EJ;8hy;&W&qtDUDKX*M#&QOUW@JwC#hEoAGBHqfG|gMe7=3s%1Lt zVlMEBCBN&IsK4>`#lJc~T#79cJ=#MX>xxrqL7JU2e%fws>>ZqLe@nm6X?%d@MbX{( zFCVGG|2N%zna|@hI-LK{pZ|t_p7?LsDZ0mHM?5s74XR0a$MwG_LJyx={vSI&0TN$} zVJ>*GiEy|{(JJJ~sC^Rl0c5=f#- znWgqOe~4~02(JAMzSxo$hH`+qn~>JsN@+Kn2Y2JwV+9}xr0&c560DA>YE{-0A5nr`vO>5Dx*jUc zybLnkb*oZ+IO!oPxMZFx<}@Lipq}*fhNMP#D2+c`m0Vd}<~DCu-9)iZoKYAjOuLNv z)jQuuzjJ&ypDMz!>}w&cKE!e#$dw2|kvAz_p?jzcRAHm&R*XCFv{}s-sQY98$I;xM z<@~7keU6ACwwl!ObH%R(-pAqv5XnFmxSA3cOF{uj+*VVfptyV9@Qc&#G)o>H*&fLR znY=JaTF(>s_3Os!-(M@sGp}%FSM}Fz9p&ewr88O0xRlb8hTzI4NPr~x!$_s|jmdhg zX7l{X6Vp*2wPTl}(ItvwU0~TmN|$;RkHhbp=U2Fpjo)Wq)4$a5R2_{ir3q3|pv^P^ z+D$SfPTi?+%AjZ^+optEpC}_9Q3d@Z;hrBJ^wqdOszX)T|`e0Qs7cR19lyGaJ@sjdj+}HO% ztB=L>6tx)PFR;+W(l!8u2hs(X{jIWg>ll{g_$eMYI%0@^H*xRXEqY!O8U}QMEKgwz z;D#EDQwLyv-Lr$A>&=-IZO;G}u{4f+d{`ZPUBeIv@L219g5!Dxf9QM2y^MM$_O?V^ z@U2F?5)s9M6Gz%mbYeHt-R7YJCw|8dlHB;}GQokCxv7FL-4uv zq!w9+PZhA_(VYA)UsBUWM=JZzq4K1-rw_I-CEP}q|Hw>Ewi0*nubT?~oC^NcKYPg^ zq$by5e6WK#FpRiu8MvpGkysfygQk<=fM0OU0~%pcjUr=LyRM2DtSxR0ohMu}}7 zJb22%cVn&^rA_XqNrT+xPMcnkn;(*2dqOgE7rm&1uq1~=}p}TJQ zIpr0<>$9obQ{}~_M?Nla5rtdNbuB&Go>OdH#P@o`X&eW{CUAN=dM#G8%>vUh%&rJ$ z$&{&2oW;#Cm@X(be+n9r@siKj-wK1^FIQ>`&vuY&;EcUQH*YDlEpyV?y35UHjX?hI zm-OclME|w1q~KrMZngp^IX-1uTpcB@vzGzl*ZDs_FVx@cwJV!k9d zp7?^51Q~9NHyLp^b_Okzb{k_>v!Dmz6D-+H>|R+9|wrhXWI}BqUPc4Z-%X7(jWu2=&|Tx zW61=tU`1()%ek6&XP;k@?@$Wt){NeRr4l?9PWgit@bm`3YDd$9C;3RrU?HloAq9y^ z=}Rwkw%*L~E>Y+Bl(Hf8;(VFp9p~?vp3Gf8S$Ti%Y)ur+t3(AWB97J(c{k92a@JZt z-0IKnVg9iUgvZ}VyxPI>Zi4kxr`L4+T{4~PK0Ny9;5}A_yk*`(IYIMeb4UmT_CRBm z_BcQHNaSK+Ba)4K( znT{jZ9zOIfyXBpSITF8})Ec|2C2OlqsW_)@VETHgUHCHM328Ak*SlP&)LAtw-04No zyroZJ^U&DiM3E%7cZE5%3OY>%w&7Q`xGqH^9V%(UKwP|2Em~Lr)e5Pca>j8E={A+$ zcUf{NTr+Kn==MtO=7eDket*4@BilQ{XSWr6b`W=IO^9z;34XzfriCN#Dw`C{5}f5N zyPZ?trVCB#MR2m6?fCu5kJg^p>y5t*SXAFbM*&$x)y2QT^gwb4;A5Pmbc|Nz3aAWK zRup6$TF6M|q40sklOB8^a)`VZZEI6q}9QXN9Z zcjoYl{|Ua1!;_*l)PAJitZ+@W@HT?)$J(x{L?PVgqa;qId%x>X*;UjFlRn>C(2q*1c=^pgv{&Z7uSq_4h4-R&?D8kFaEvDXs&#(^ zR*TpxOr+T|4*ARoEg!pq-8hP#VH+C2aQL=d>Sf54O_NWj+reiWK7?}he4+nF`4oig%e^%H7 zq#?!Q!yM|I>rsCsq;KFwcuzK=dnaT0_Y3}e)j&>3zppyam~a) z{Mi*PCK(@SrdpPE>(NGPmdklL^(c2)dAL~W#uAv9es$q6aX$Q+MPL!{-{YeR=px4E zU?6V4HnkK;TW6r+`n$(>fMrhbppX(puQi7gQTuer7o^p`?V8~1MikV#-;B>}ld&@! zgIwwG@Ni(M^tjZ6&i!z4RJKcUF1+0tdx3nZQ=V#KLh;M>6^_}H=9R5dmoJ^MdEkWc zQ%Qc{PFwL~?prO(qUw%A<4fEZ$Q5akb!&|RdhgriC%;c(DW6g|+=um_t6bK6{WbuI zsUJ{goAB>p9O~i}jvuONk;vOc-MN3uN(ka@w$|c_sg{c`lzL>}+`Vw1$s58%=ZsnY zh;ObcAfl3Mcg8BvSphHcE!0U^3T=PKDeJV|f6^3apth(P@XtfXskIg-`}m?+>uE4< zkr0^qX&}ANz;nbh;fD#==Byw^Iewm50`%nmNV#u|f`w1qfpHT!!X`254ohf>)URK< zh->eER_gtGR7jACs31|{6LF^Uj8m6j_?~LUp@23uv5Y2qk_bG8YacX#vmhoESj1&b z*D^8aUddONPilE7vCn?`t5$NPo|C{8Qp7u}-STF@Uo6L0-(ZTB_c1AJ6H`AY_*fNm zq_1@vKXm_j?&?Co!S^cOaq2uVuBg}+0n;ZVO$6~OHHQav}!TYU_mlROP@lP+t$9U&E9&i z-Gp(%4BLfl@CzzDVfwL%bua+#F4)(?*DZaI2<~Cy_1w8lbaFr!*BoSw+SnLT51+P?}Dn`)npy6W4$y%Q!-&P3WRe3(JSt3 z8QT>H?X$lq%weWC{t%($uYUv3R1W$?0HP^%>$crm~6W8 z-`7&+#Xnw@eIU;(9;Z5@wj+VvTIq41PE5z%wa1suz_#B6tuGVXm(Q zuwOj+;gYvU)V9#k;*UX-M!f=RQmJA$1j+`2S)BP{Z~vilmW!C> zB>QE#d__o%=?=;XgNLqJ%9QWjwEn9v5=-~g=>urydly-r51I3N#O#-mEJaED-R{zd zj$bnu6?q{A_J}c3c!`@n(5ZH~)94;{Qcg{Qvs( z{|^e|O`?tA*u3z%D3O(grr9!tg_GQQjLB^TXN+cv^Vlt=mX7>E9f?Epm&x|*M0kar*RCEpCKt{k<)}Vo?gcPvn`N{LkKYj#+U1GzmB}nhWNxq4ZSwbP z)4%oAxsR@ja{%Rz@a+uyZnjYe}E$PG_T1f9QOT#j^0idXWa z4;`|`6}q{miuK#VUWn=%5AxjYePIJ!{Koh>4K<4)tZ>E3>D>XOxdW+;O0x+p%Ew7& zh}rw@$ZX1rM##9=bGyJebtt>8Wjx8wP(x;5y+1C=kH+z7nw@NTQ;E~^XI9*PRB4~ zkvMjm-NEJaLWNe`Q%M)>t$ppUI)>WT64Ui^_p+8HK! zG+BJl!kvy@-He%@Z6hc}!)|{0-4>v^dZIn_%IEK%iDWxQo$u!H)f|CuJ;^x7FN@{McFkdUa!kaA0Li~YE(S1{3N!67jM{Lt$xkCZhAe8spSrwk zY)R)^iXy&<^Enxgy71$W`*x#~^PX^oFqbUQx^n8uzD8}HGm`CkFx1+LdG)4TH3e68 zK2J#}p_kKuPr*>sA%XLP!E{fE=Rb4~a#1)&iZ&wt$0^$%EEACWS_igusRW>a1}|}u zZP0vv-r(|;ceifc@|CB2y#7grIk2~2u%8Ue8|$|bD(J3b+Vvnrp|bEG@X>690K=M^&RL)5((rp#?+*Mo)Zaf5E8y!`A4V}%bsn7%2j1YjP6dW? z7l1pbW(kTMzwh^Fw<^+_6NtGD0e>XGT$K~y3%X;a?{(iNRiNZ-v6`;KxWS9J0i8wb zndO#c7G<4cJ}b1d!H7=WH>Q(0Vt|OCjne zfp910&aZdSS80hIa1rs*1p{QAE>qu}O5NRto86T;rKcF~uYF&cwq$X!L6f*+LD;`p zpR2WgOp4BOWMy-CgKHt3=(S^v+D%tgVX+{epC0Q>T{w+!;}6%9RQRs98T?92xX(33 zGX~CA@uyt)D4-?C+D{YDnSj71c(-f!`)^|7_wc~Z(yC#LhQm63rMeoqp+-Qsg@;-} zJv@aiJ`F~XszS8bws0~4)E{eF{P$9uic0dcP9Pdr7yXT0I#R@d+uWR`MvCFgIbP2Y zJqc7yct;tz-v;=R+uF#T!!aArv<-TUVuFDOtFr!eEG@S2ch zBl_6OQU`m_;|p5%K-k&P=A5!Ul2I#!6 z+<+|%u1XbH070TXQ9{WVi%2HyE*TGx><4vxwoTOcpTJtbg})WYQ9m|L3iSO$XCv8i z+N;G^2aCoiR|yqph1NO!$)4;q^8PU^ayo_{mc7g*R>=!}P(ANOd+)~}8gtfNvI1j8 z+oho~ZvwOsncJ1N@wB16k)mbXq!5@QO=OM5$=M*m!xB{YlUNrL7|t-&QRoV(XYch( zwJxur=I%7gRwp@%fB^UE;=t*lyT_PYAZ6T$r0Qc%tzS|FCna+ z-Wn@c*Bny`mK&)PbR_gQXH4>mvw?lLS$D(T6BVB)G|e&QMBbTl62@7}orn!Vi-P{4 zdziNPa^^qc&uxa&QFl7(QJi~n;j=1fIwMM4gQ8=KCwBL1GJf6svJ<1wC629qWakqU zdMo99_}_xp?tjyS#3?ORkw`t_iQ^PlB?*)oGMSa%P!EQmOE>^|BtNhz^p+iEm)jiW zUa;pp`3pq=|5V!whbL)^fsAsg788Y4R0CxFn>QN$g8w0-uF^P-WAyYI(t@h$n{$Pl zV=$xyvaz(9K{!2hbNa?0{q?HNvuF9`e)jBNWCJWJnT)72^TLdORkK>^^KqI+b{&2= zezHl#-ru}>@Ifl`P|w}ED8(dRTeaA#t1e3s`ypOpvb3R=%}MaqYw(b{pkmxY@o`p? z`;m(@zNujb3Kn}KxlWkN5kT-fpx6s3Hw|ujR3Y_>UAgfSsUX)1&f43Dp#te-Kz3^I zf5=W(H0f!2IBG4KU`)~d`bGHi^sJFL@6hR}?05Z2u}Cp1^QWpmi^a}ge$mNrHO)nn z4WL92Tb}4qPFspr^Zph`t+n2QIkV@zHr#?vI9N<;ZW}h84^dstIQb;jB+R;(369k> z8{shlzO87gw+z-B^!i%3Y4)AO!t`0a$*58$`8($_JgvO|;G;Rt0v0?AeNPQI?%7#F z`DHf;WVgU>xx&sMUyy_+U?jW`9tNR){WJNMQ>wJ)YZ!BS{AH>3UWfQdM8!PGrw!PF5gO@on@8P zmMJbT&$+g+TwtEIA4>5E*NRh|@h9R=P;J(ZnZ*S;VS5Hj4_kPW``OpE9O51)9$v`8 z=6#1x#-iaR&chiK4LhC<3tNQ7ys2og6R?Cy*4r~cS$n7E)GWtW_y|5RLPd_MLoOgg-?NU)ziFEOQtW(ZCa2<+s>pbf`B*#t?5cHp4dO+Nk<3lGP~^kO-g@&h z*9(=&oCzEu9~5rgtr8&1R+k`EP7-Lsq!v+&QC}bii0iqB4$^CXGqPWC6_Pf1|I*}n zfA*i%rFCukX1Ag`o(joFMJ0V~o{$3!}O12c~BNnDSVz?FBP$1 z7LQwRt~=1n+@|?31V(N3Q2bz#>%*p2+2SMOe`s38t5@{gW$Np<6e>3U)V*Ikf4Xf} zu~>Aqp5>x3v&108&T#YRP#(^MjNeEvT(f1SjFyR~MwY{9?b1Dl(t{)%kd zC*ANv$Gy;VjMU%W*^vtI=s%*h_*%n@Q>(pfw0h-+k3ymj!B*70d3adx9co%RwWyUu z0uD3k@?7{Z#rP`%WqL_FX3g~qKV<&2a{Y8ZfX6DlWQ01i+71=b^v8BJE&-L?z`4U+ z-VKjI0eza{n5{_CCXbGYiPYpUKxj$lL)J4sPFT-ZlC}cqnWxU~iW?`da#r7na}i-| zDCeK~WWgP(YCo)cY*WtXL}GNgJ(y!ear|1+{wP3WD^c26tUaR<3u!;mPd%KqmeWYC;DtTRI*+TW8HuPQBg(S^6ew_>*87rE

Uoet0Q)Kw&z&~^bQ?oa!B>(4>Gn_tVo5}xj zlRRD>a~zvq=d^H&RM&DNRdBBvwxk|0K~osFT^e@Ar|Iam#K@}p;c=zk=S6dscJOV& z(W8Wm|5_>YP@CH)!%8YF5&rGgBcDx5R!zLUD1~K8EohLp_w_qViUiR)76Ves0bU2y zAvauUG1vfsx2PNm8x6o@txl)8{e{>lVY%>pDyoCOKU{23#fmD|k+52yCQq1&b{>)a zZF(VHAi#O%>`8wPYoq@Ws;l?OLyB%wE_Ln47(b{Z_CtM%2U2z{SR`O$DMSCGy7GRs zlzs)A2I1#W85&7Zp@;41CSY(}KQY&yj4hJo)u>XFT_rEZp zdyT4n)(t0{fK#>W*q6;5@AT2(8YP;lLNS-xOrr2-ipa`uXT?U4TrwaLnCp@Gewx^t z=k4kI(Vd?2XN@YSQuS*a=nWP)nvXSskkMJ7-B_7XbecL1i9pOBtDFj!&1r4q)Bp`g z;2=#k*}!{D?W06DQiYt-n-?b!%)l>FOHjCWxxG5z@MI5eebJB`+}w`74(4j(wd}^ORpG%` zsVLw?-R2gpM8%iW9+PKA7C--4^_+EiQm$Y%-KClbc5#iGKqP3MY{YD{Dggz*TCH}I z5EKK-enzij5{cu8YBPxGCka#al17$Xf(NeE8?*=6zbfroVjK3lr1YKy(gOoP#0|I3 zQ6b4eq(MF+v*XBt&@L@^-u2}X=(fK8LrrZ1*N!R11cC5*uYkrgbewr7TeM3HQwFfD zmLu`Xzi!0iQ$I+}&VckA+3;a4L8ROlL=VvzpO5(L`VZZBZNB?$XJv1j*{@>76zt;; z&Wh`hr|vjt3Eiey6W4dz4XWGRRs_FXH0{0%sh<;pH=zW@WDAYiQJ6pb$*E1D>o;v# zYoOidi~04VO7osOIc|O0%Q-tWx90LDhjw$64Bvl|q>O`I$b{EM8fM|1Hymnj2%f$= zlRcvSUkm4oha5|xsj;XeTFxByeR{F3o39uixcBT6e%A!kwG|_84XZO(A;#KgC5D{1 zNuxWDx!Go1mM-dj$aMzUS=b}yUprVSJarPiwyd(=@Ws}Wnyq2d9xOfzM;dq+*t%M$ z>*%5^aRU>75AZt+m(8EeYpB-gPG6;G7#+g)&w7G&7RKn`h|X9e~zcvgo! zebhkCFBS|qlbCK&t+WFVL28$46Hkl@PpA#0REyD_wiO9a;a)lEQKbW0xeq>*XdGbXiI;1ME9g1p}| zxxDtRTRE+`WAWGZl)Oa!>nQ`nVR{yfzrHVUT`ZW;8)Gx zS}-%B0k_l(KAsivdBrVdq+LXBBC{;w75hEbIL_|u6 zA<_c`f*>GWK;Q-hq)V3?dJ9EFKw6NJK!PBhgc=~^KHuM-IcInNGiPRZ&))lh$2yEA z*L8i~@7Jq{Z)SjEKyOk%urB4UlxYQq0jl^^&EpT+qKQi5I#Pqn48JFn=tDtLa&}S9{Z`2kG_3xoL<&={-%TL_Xs)Fh^(7*e4QrUOnvK3 zJl4E|CANyi(8UrjY_K6}`W7?C_}^jz35P3>AAOhmzN%3Z+AMNlQW8pGRRhZ5O$PY zD=&99m=jjdt}yLgM=#H}TuE&Lby%H`Q+2m@W6kptdHu8g(rzE;cX}uNK6x?P5e~+H{2Yser7$`|@+nu9N$AVdCS89LO3SP5TjzSrrE2-6Y1@cJ674{J(JnyjV z4}WT3fA-hMMWsg!FD*h0#EV90f->=B`WW^qGTJH;W_w?X9nzGg8fy^Md(}oQQAFg2 zdqa&7W25ABOVK}QTVXvI$IX$Yj|?_`A@D}2*?;J8>0v7>f?P31#P>D^O%Iil;Aoqy z`*r*XE0>@#_r=d~qBCcW9=(sc!zp5v^3ua1shn~K0I(U%XCe$nw#*I3x5`E9F>O-c z;c2~dijQeCNvf%5J@OL9b;w&J&4?f=hV0Rh98)tavaDI<+P3&L>?jE_5F@^@hc3nn zKWh0HQWQ`d;oj{cIbDvj&Ywe88j;791NO=_MhQo&lLPLHSk=c>N+hMs!LxY`iAvk& zbb-#`pI+IkP&zXeTL{$<*9pPbg4UQ~#d{8dZU?B#_@(gc?vL(o$|)4{O1-Ntm2$gs zMfWx#ht#U6HK8Hz3Snx2l&)E+ENgH_(jGNs_Ew1%d`geqCJZBdqcHoHGT#huJURP>%wr9ro)acIZ zF?Xg31s?nS``;Gj+lfA-1}3opcu1-V<{0@3ts*tiHY>ly+zR ziru3D6@gP)dt9vm5{4ZmPS$9Y#m=-}MV8vMwM7x7>(-Jgc(hCn&VqcuSe@0bZJVpT zU3wR8WB+J{W6q~-uLLdQ1evZ52&w|_(3`6l<_C}vJ&H`38UzTMNlcVGRJBtOkrnoF zF!lR3wb7SmupC#{_0lF^!&0Yh<3{2#w8vYNfz#oydcZsa1M0wHAW2(T=Yf)W?%4O4 z5nXv$gRnX*~wM3pqut2#&dj!~8}Pko_Bb8VdW$e4WgcpF@qZC%^W=tN6RSUCd3QOxn3 znFwMAO`DR8izwFF_iATq zE#5^|bGlM>5{qM>vvrzlQ4*K{CKs;z!U^}y&2EI`!^OafsQZ*ZJ%J7#8jAI}+6_10 zMP7Vnecd~oWyM$N1GC^$B!z$RohM$pQC?RpknV)qcT`Pbs2vVDAlw=WI)fb0B`agm zS6A5j7Nm8%R3!t-rQOyy>=tP&LehSV3RM!4JKs(vgtEwK^~0VT*(Mzp@deJ#u}#g{ zZMX5XE43LurehXoO6o9rEmVz3^HDYNvSH#J-v9;nJkF;+tVQpOrM1@Ok^2TOpk-3Q zx+cv&%b8f2E2^6Fnjzj>r>QbWlikII*fLk%rQ$Nsxg>9~i5B72ZR@aD$3%&={YVDU z-o_ggoAc}D)qNcrQllF*kuOM1@EFa!qz~a7C|0^*@}~Rq9k9e~#Ntb^bRrW=dTS_g zt{Z)YWd2Hf z2(x3<;_?PHIB0jt&M|5-!0QhGvW)i%Qi$EU&X}c zF&Z3}E?+ui0!^x!6Wf0sli~{Ilha!C0Epk!TISaU1#x%FpWIAfh|_L-DSxNi%_Hv; zUQ+c7zAZIzZ&a4-^r;26IUPShNTdPJDVX)OTwwZUK_OsXbYV(8hQ#;YTXjR<#&X6L zqijaftWlGSWUMvT`Q2->sPlcXzh69q3MQj_Rl?gB0LVa7UkvS*UxgJkJ+OdY8dwM} zXQ@`l)|RDE1{~Pr8ZL5kBUPC2P_c^V=3>veP;8N2AvU4-0__d#o8?V`BNX!uPX8aJvCB z@dAK2+Jeg#)Pt$A%y>`y7R8k~I`+!wv!BJ;;Kj_y{+AQt9q6-b1V*y$US*_-VT8rF z;-HB|3iHiXP$^Pp;x~qgcR)E`iNf3qPd3o?T4DH5$tN9DVMuUgM)!ECsGk$$(n|E924B6JIN4!E>F75^5W~*v#fm_0am6b zv#xV(38Cjz`$~--NGs}nTtU~cU}Kfk1Hg#OE7K8Sbpe0LW_0<7h1K;Yz`U;qSvG{= z^MsYXXPVES{e0u}5Kv|~Ne<$mnsgmuB817}5nH>`VACY??5FJ`8=@HYyK>J&wnH{z zqvCzC3*YtPOF)J|GMHWQcVBH(3yL& z{0^5*J+9h6f1}!TYZsGyT+g!8J`CBpwDUgb6xB9}mm1nJdGqL48@E;I%@-=&+dm4+ zNNseuo)C7c+Wb4~_YFIPYn6Jr`M&=CbAL{h{0#qeC{fObZqk%Vi1!*&6vvnYC1tt( zVzhIg6f?||zuVr5Ngs0#`BCo858XFfOZ6>AWW7$h3PoqLh6ERw>`ov+e?pU>Ry}3P zW@19=1_`v{t2AQ1n?c_h1_4-0ZuawI*gMMFvm3ye+_)r>8~krS z|1ZG=H|PMh^``tLuJ+$$iI2qamsiBfwy_F9uPlUKz2?Mz`F381e#5oK z4q37Gn0zw%es}O1sVZa`rn)4U)uWOvT;I{%&xHjGuUi7|m1WJU|etC_IOfqPSuxiBR zjw7z#O9!op*42Ng?J_X^>%0ik{@~%Ld0TS;=6GUy=kdwjN`s`w;o8B>BUZc34U=oJtG)ZTC6MQ-`b-QDg>U)x1$aEI``wJgzbDpuYuwq{Riu8cEr&jzBjWN3j2aAvKf~qPL$oOYPe(g zWmxp-&mWP(Zn|ctK3-?-vGMu{WPZ&~(D}E}SCr|9lX~+L%|hQSHEP&rl>EES^ClDCEKzpX zfqWd~Dy+{MN8>E8=pAq`UA0o|P4;$ra901r+)Qj=0!B`y>K;}=GMH+*uoX_=%;-JZ z=!0zG>7rUt|rBRp-~?HzPJicOH%xZ3!*3@=<+JKC}dmjrtM z@XJfkOuj+E6=F6_;$p+?n9JGfR0m>XkQBW?i=C{~3WTb&xu_0LM#M}=nk*0ty>kUl z_UVei^(yS_$YK4lO}F)>r!10Bm7b#a7msHMOM9@Ly@}l@0Qp!DhesKa1f!Mg6shi| zR?|rKJ~O5IR6DoKV#1siA9RXVoZIlWOy(l~?6>dbtj4XD7H*oaqLs%qI0!4FeXnJ_ z{$^lZGcy@>J#fPq_k4L8|HcsC(>;^#C^NGZWU&Kulpf+}BBXe3+H>k#7y?mZ2i>=N zZl(DSw`0v!pRy$xk|CW4&G&P&{Y&)5?UFsLT*m&3xZgBQoZF_t1_)%U-J`OUgSb*| zuNd1I0@w8u_6dJw!0sXc_44QWIEmOwS;L?`1eVfn51NON%>HKR0HRv_>e6#|$2|mv z8nVOk%YDMCjquGlh`|~ctnz8PJHR$y@G?}l*PO4`yhQI-{2FYHrvfkP$w?AiD z(K4_5(~jh9|MkOzYYa=dd~Jcrbk}~dwZY2IMfoP-n{!!}nNrCm$!N?nH}314Wp{M0qX0%$iY)Jd?G>k7~a=EyJ~!Grt7a z2Q7JS~?sjQ}@mh-{&%ozbY`3c(c7`N=Hc~A;xFz|0 zxG^)Ih9YZ}6Wdu~MP?17zGm%8+gDaj@~98k-* zvRhEH;~5u+_mx9waycv0pDz1Z9S+y`_K~p`&Z+e=Y{$faq|8woTxL@Xv)o< zKC7W-&9Gg#iFwUW%^HPcrc&TJv1m-TsCj!+4Cw$BNyt36r*q>jbHoeha?Y(2-=IJ* ztL3^0wl*$+#C1}AqH?tFv=_etCBCPbF8J+bEPSSlW7F;8J;nAb^9jFfJKY1kJx{S? zRixghMV&5lcy=a5$~<9JaGyRD!gdo-}Hw4>V<))f_WpRr)-tqmkLJEyj_`k8}M-I=X7YX!LVa1){cd|Pd#W; zqs0EU;~t}Vl9*+NAAB9dZ3b#T8QT!{v&{DsAc$uU*!-YFQlflxGr}!b{Z(D}04U!M zA}G>T(HXXaS*oPk5uEdjdLWk!{${u+d9&^eme}BsZQ5w+z*ya4=don-+G(4-_&nv( zvOeFW+MllWxU0wm;t*zm*;7BY)5qWNlmvc%Gv%Pi6B#x4tUBIM{_UT%mu!+2hfgf)zpXkrUdeOfc$q!p zGd=B3P@yHIWZ5F}Pm%+-Dhmn@R|u0BJ@kYBaUt-08v{*ZGKg)NezSHGW#UUpt5f$m zFbRhhU>HSG%)G_>G4K3hGl%XxSMsq(mdA%^+yHQ88o-{O9j`E8DAHYH=(#lgt5ZSl zf*DEY?K@9);gol}-5M99Jh(T*+jx$2>GhM82AH4ElFx24X5L#s6oZqgwf<7ew8nqe z-0?JF&A2*X068NfMl^Wo%=4`y!SBYO7{R+#bxPctDOIP8T1mQ+mj~_Bo=~)AI(aFxPm@JSEBj`md^ZI<;7u&UH4OQ9#4#A zm5l>t-Yh=xV3{}n)e)Zo^HNl)fcene+CeF0<0f>+1Isx|)l~Mh1M!CdCk~|-STURj zwNgmw|59I9Uz6B!FV1(-XBlf_?or*6Ax$1x)z|FqR918?m#H-K-YBOV6*$Tp?JwkJ1L z|7M7STrH<_Q*R!0vri2c8(jY|W3{s1eNkq!C|M|kQ#{ztlGRt>oPpYTn|yMQ!t!w#ffrF0MM$BSzS_6tYh9lgz3Ir7{BP*nS_O$k z!7U)cZdo><8rJI$HB;Fyb#TtNUh$V+$JFCe>Ngb9c7BI*`6hxQdE%uXhCPt?=*@F$ zAFa=-I6m}C+^08}&V8T6q^&+T($VjVlK6c3zxq>EmrXr_9Gu@#toe6(2*ZEGgiJiF zT!v66-t^z-!7pckXtVR&;SIC)y|L$j|7a$P0=~3T-+o@xUho1knz)yeIUmmsv+@mR zJGL6xZPsbbtdNlwO0-n&9+1iqPh}RaXG+4gnh*tJ)fDF;Q!|F`6iB2(HWSo?;Hrdu zhC{rp3)VltsG6fC#YMvup?EI!vgHRqqiG zocHeaF*V+Iqi$?^7v}^&p1Bg?bBg&7Vl%M6zwSW6c68BWi>`;5R}biJW2H`%&@?Ao zOuQG=6>Bf-9UGcIud55$9tT9ULLX;zIG)CCSF`da)OAXC@@8?5$OZ|msBA@j#_h2% zJ#0Sa_5wixn&*&!8os}?Y9Y&TjQhDG&Q2V4sa=VZ|A5y&2cY! z`qttq8_YLOpS~<8c{wJuQ#ii5`2>%kO6m;_w)P*JuN2LvE^X2m`hw0C7L$gj=!VXH z*;n`QrivC~DO=AP(#Jq5C^?XDRTS)=^z;o=`Jo^BokA%MJSh7GmQzThzKA+ovoUOz z5+y7=lE@G4@dOv+p(#n)$7>j68Ar!N{ro$kn|< zls13SI990!DxPKFq;&}U$ygE@8-@N6c%6wi8(=%?rrUpy zUe@^`B=&l$$u|n;jXQGHA3E-IGK`u(-8ybFHz?dXu+&Hm++{!T3q);rzoMU5ZR=O% z(`0s9luKL$6ela%B%ms9A@abV;FGmd`{JYA%#1c)#XR4ihg$sp4)G^RUI8pDsC$#O zt+#t;o{YVwK}dW7Fx7i05-(!CLBU_%e`b8fz;G&<(fddf%R+rXQ!JiBikr67PRP{r zRH|8ian%rt6K*+GO;)1m23dDoZ2(9g- ziFm3dgxf3Alf)7>lu2yAMvd1V+0E2@0v8^&z3&FBMdKc+Q2|AQO`yOoxjTgCu`4aF z*SG#*GgD@P_sXHzA%1xaz5z?lH{Zi+4m_PJvLwfo#3tiW;v|bb&8sU%gqp&~`;%|1 zkUl$F=|BDoE%UUp9h553R}I~q{;p*c2m5f6Lg!fKbzbkBzuzJUMF0+QOY(l2Z}Dmt z|JOQ9Q`-mY;+xJc)_!6cGP)FiboObojH*g>j%X8HQ7MQEL%1`ox{cXET)8KC!|*@C zPM=R9k@Qj?mXzdqeqv;JVSbG~H}6&htYTp*{|b9>Q!CUxbw|rKq`cPRnR?K~fu5+d zztpCP?Yvax%rs#C9m0tcE6HZOT#`&Ed|EGlfWL$sV0J8v|x4oTlQXZ z-vY-(tqa7+&|k6Dx_4;(d-Z9-4=f^Ii#1>21+dt;D~cPkkE`m(6lOHJso{j_p&_v- z9uZsP`P;%0r=A0n-xsIM*Xg{==$dvcvz_c|{M@n`j;t#^X`X6EQEV+KwKwAv@p#oa ztCxC4NVL-Clm$RawkEcpLkUsbiULXP8<6!t&~sdi_8Yoj%g9odUw-1g4qU_IfR!O} zQQJ+XLF9h<_1r)Ar8(P84>?GS7kXstis)y=j>?(Q)7U=VVQl-`^xnqLtEpB>1)Q51 zZn9;sM>k0lOYN9&lk2kAb7uQQg4?XGCj>v0RNl9v^tLaQqOZ;3sUZhFSsXPJZ9O?_ zyb~X}tn%AzTxEc&Z#d5*-TMc^5#jgmsiyK-HZuikcWKrNhPkcFc$K@sg(XX&`JvV$ z-qM`u76k^xSKO=*H#rw{zb_&?S9R>h0e~t^KD7rZs8tB7=w&$W4|;5KrR626A_2g{ zSurb}Sf8!u^717W`lhG38wUqZP)fAyxp7Fh(KEu|3}_I4rsv$%7Nhf_YTRWobKb)2 z+&<_jcXWxQddm}}@p4(&;Y$V`p}#)lB}xthp~pZ;Y!D~a96_wSEYtAXYbH9<&Jcl} z4v(_~MgDF;+*bWHF@0zB!v)!31}U)k2ns&m%1#mw+oGwHBsl>n&4iJ{<&A5H7AnbU2Kt*}k|wtk9&v1eOccCC(>aD0RA4HWxsP7Ym_T4^O!`i~R7q^wQ_yyFJ1+DkHhsnA}_JX`k0$xj~BBaO1 zu7x~K$w^N8_2|c7NS>qrUR>k6X1oCNczG=zqD>hNM{urJ45bBdE;j#0eY3lHL+OIL z$2~RkGiajVJ3AKgRxC}iBBh2*7*Ne-gK3COR)|KuT<78o$XLq=m5eRskyBmYUVMI| zEaOQlyETvkmev4y0r89%;$0G6MqK!-_2@#s!*L_?#g1S#!E2Y*No*uJk zi@U~laO#!v*kSm+5Be6t_qTI*QfqC{>`tjrD~WSXj9#b2rWUcPp!)_I>3^es(0j z9)lZ~uiu+3X|~`bW!TZO22wY1nwbR^8RZIMkQAj!!triOwq&`=RCDPk$U1Bx8hs6U zraPfBoX9 zD1xjr)GdV#a+<7H=s*98@|%45-9|LC!bTPqPPeaOl65 zvr7NZuo5K~=fdqY>P~>m(W`d8wIkh#%k@X%QQiYEX5k?&{pW2p3Rget8>KlIuXPCt zX)$zTjr&_J149B*|$u_*0O75-?v=`o=kl-*{-}Tow9ay51Doc=4A;uUkY=^wc1zDRHB2O`!_lC&1nHm~<` z>Hpk#cxoo(0;ySoCSIUN>Th{m-+)`HHoU*t(zk>c_2X3fgSfoz8M8CVQ+Qyu2|z=N z=!TU=gZIZ$K$YND2)R9_E#+_#jX<1n4Z4Oyl)oCQjV?vpB;X9KdsH~~%iZs;$2{J* z3hNBNcuGLbn-8x&+d+k*Wap5(m&)FAaHRCFtUNc9>X_F(*_n2Q| z4H8FW5%6`wwmbYahOOk<;*GDd@f0 ze^LR$_jbZa$J37C-!(AaE_Io=|GzXadLO(RM@MWXfeABGfR|d3GgwA7F^#qwB{gUD zRLq;PrsaI-lQ8aZJM}RZd)q%mPjPev@UAm*rjZP-*0e|5D$8nNTUYT9KNn^cwp?_- z|BXjmtxA{W{$Zx>sjasbf*0xHmNXl360F|et|0gQR>khhx}rVHv{2TxZ-^=4rh&*k z6e0{+x;<+keWf4#R$-tBG^1+u@NA#45<>sCI=_DnW5_$O}?a$^$F9UkD* z)oP3sRqPyF`BwhVO_?9{@@2|C{wbNBMYc0F5{^64n+|c$FXziAe!laYU3cCaIE?(8 zljOhYCAqG=4rnSxo%R1_sB8uD&7e)mZ)HI1aO{{70$9;-D&ffsN^v`m9}`-*4X=&o z`-zy!vY$&lO$_o9M`ACB+Liv#c}-FU0xEDoHzot~+Xit>7j*P%JN7*B)&%M<8d|hc zqY+(<48<~g69YwvZKXt2Nz;gD%Ey33a`(O>iTSif!J{km0UErW-?1x=0gLN zbSYHHWNKyqKv>eRoS-cjow`nzL={-Vryl8F_!ZNvR3W+1{=eZn!4ue41_xKmK2K(r zV*&++rnZZe(VLZh*;_F3I62dSNN6ucYA>ML&$Y-EQ)RJDg~^3lg;00_IIll2;Cgj^ zj+9bjhM$Nt#)UL@T&dWr?cUZ{LoQh}0wQ<=(&xTY;EJ$0=29f!lDXoIxS;Ji;+mjv zz^bP7+oT>gtS$NL`m7 zSN@CQuDr~t#gs->!RfmYa!*9mYc=hnU&v<27)=jOjOALux+`VF$_c}l`hS-UE9A0Y zl$RWt!=7y#dNU^ugRgcWRN!I1Khko!J52{K%tUTXY{e_qE?TdkJHu%M z&IF2y{-lP~FVxHCDsn^=FlxTs=^RYwr~OGDTcS^g;7`JLW(g ziZ;nKqAQyjTeix@8&`CFazFjGS<`b#scl1ddF`v0e&q4tJv=-5EALjFRJZWC6E{o% zbTv&UcN)5XF$i4?&oPlf@b>3EtdS1~g>6sGmf1wG$)8>@0B1c#99AL}lAzvG(ke1X z*Sa(YbtQ{d*V_eK_s8QG#5?xL@#}vxP}mKq_j9y~8v#}qy`|eeTsHKY@2=Tkl0vs8 zUYPQz2>a{z*Oyk+=vR=7dPKZ+k9mri*P#3nVGtOUtEk?^$cMc+7aD#?)ZF8nSjvOt z3d$$JTk>G5-L?2wr6U$>xk<0aZE|ljkx7+Hhs!ErO2*ACx?1!hE7V=(e!}lZMlEdJ zuTBkmrV7?+MC49Uo51WyNO#-SCUR?X?A~5hIcKS=^zTuun@A#4r0{)YoW(a*W#;vU zz?#ADzh_oXWT{NXZ4wf@?W^r}ZO*mIc=ffxc4u2nY?FCcp!`f%+to?6i@DN+#As~_ zhrCVz6JPO@xHZwZ&Q~6zG8T)r`W+p7fSDyFhZKLAu&Nxyg;Nu9XTzkz%M2W);*{Jh zIm_L|V~U3lYWg1UR0jKIsgJjvMLP6g0Q?69pfKv>|8kW*|30=Lwmiw;f}dJ;)s!S_ zD)H6q)1S(fqNUr#{kxcjfFSTs<)}ScDvf=l?KYBx2A)w_>e|_?mU)Y!+}3Z*or}+% zF>v?x7JBg|3efh+choSdKEL~7fpZbfygSDX@Xv<3Z9&~;LBhDo77#loDrEtyQjv0S z0p5}WcScCb{h;KF447PXc1V1>Ur|Hkj`psM%dVLNc#rO1`iX{!Zr<1C#&#}p-Gi>{ z9;kvwgAZi6ol z!oN#o!1qcPp+m9(K>#^1w!Jjjm-AZ1-wf&*kR)KDiqo5KYc2ya|J2k{y&~$IIr&_= z@gJ;zP%GT`X5$-?db}rx90A_sEzeMOafs9ttg4j0TMjlF1sHRDO|6qO&2p`rHGdHU z^k=-~kETQ|1@Rvkq|i+xCERUec?;z;>7fhp-2>V0G?}+hhK~6<6?Qt_j?T<62jQdl z1(r7X9Hk}V9+q70jJ(jt6k{s*PLs=9@V!c3%r3vDR^89NtxI#-jsYjB#Y%Y&LMe=C zsM7FoE*Z|=U6=7$SaK<;V@ zX>G^^-xlZoEW*QUTDHXskN)rli)+MNW{Dzme{P9oJWjHsH{-nv|p`>?e6 zhJ!o9_3LqUit5XCivU-rIT3S+#tLSkFDUqFC|FG)jR8TAHc2b+&0O^GRSP?0$Qjs$ z@!TIj@vb`tVoh%K+Z`?mc5gf-%fj2bsb|PsGxO=x6h{m>vvsM_n`2u%lqRpBsy})! zMG-7M{8!S4jZEr5*7^GdFv?Dsj}k$dBGXDVH0cr$B2QaRxu*EX)|E|vtoi}6?BSap zl>c6BaQC)EQiRVpoAiz`AQHe-F5U-Wt)M~j*RnW)Pw9wVe%@8-^Tze{DP&ulSwheI z>1hKqv%dMV`N>TyoQRLg6#)wGT4zT`CMN?+d8bY;rEjBFTGBdt`A=J0b3K%Mee_$6@n9?gyt-xCdH0iadyUXp+CzTPTIAUy-AQZQ~W76<(Ri)YGD6ltAA=N}a+=7UST})uV#k*nr z$Xy0$42z~5Y)F$2jL7PHlc8z`M3(nWzm-$Ca8{0S<#1$VfV(dTS0ZS!nZq>w5gf0J z#e6aALMyRsARw<3dZ=!R= z1M*M~)X!52!^V>+n!*U>UNRo!35-tEX7GQ6nR0gv|Nh`z#^h{%s%}*%jV-=#e znC({3(Lk&oW+%${xPW`7xjwp}?IljK z#!b^7?VY^0HD;(9|KD>tD`a2ro*9mZT;5wlMA~ux{B2(jSuyu#eP=t(Gv6S|t1mWN zedkhh#wpO{;B%5Av|IBh=R5qb^D2ke8Y*L()ELvHH4SRxa0L188qT;o9Iq0eo)=B8 zLqz9AVTOJf9=Bu`9D3^Q(O6VZ3Ta}pv9$BK&|8HzuDESv-lKq0m#HaDR$f7DPXkO5` z0|u`CZ#9G{=G`n;ZP!4b*V22lZx)DsfYbb)6O7>8`9p|N^1KQ?2J zQZ|B23_nKZ{?#QOAsQ+pANzYZM zCz-jxjrD_WH#|`(*e~jp*foe}fOt&1%P_Ovye2og3qnNmP~B{AdF_rXnEp}(3m?r} z&kUdWHQR1^=5L15kBN z;RNkK#oy}>ddD*T$%2D5-T7+!nVw52@b@^ zv($lw)HsbB(<}ZJ3B=|>ZqNuEUGFszt3=v&5p7DbG;Hk>EqO0v#F?f`61>L1j{ZN( z>53~s|CuA*e^zMnZsWju3);R$3o-16wT>O0ng zCA4FoAU@``0XC@1BCSrY`*$-j|3ENyf4Jvm_Cf=has3a^5DO=Gp}q*6j}oCM4y6$h zR707b`p#TG_>Bf#M{{Z3kkOL7yMO)UdJ|@z!Z`)?H%y5rn)wB-_c;oTZCVe<;l!dO zCPz#kFa%t}JW5Q2a%2{G&O@#sHG9&{Lxb)t`wNC|NqNOu)*3#=4R^I&Y9sg5O@#cY zT1}X-`o8|M0crHH*Y;JCY6wF|CfvHCQkZ6wN{qk`qPv3F+ec`MY`>|yrY;+saGYjXxxGLSVd`f=qzefv2imKdAT z45R3>FrXAE=fhFr#WPeTNmY>Txix+Ezv_zfn*xxh^FMslo&7EPx}`tn4nUE$quv2J zP#TSnWEi-H?1m|s(+PO9ul(khXf@+=KPHev0FTonzWAwr&qND3X}e|}X1vwk47l{5 zGi?|&E;1;hzwIW~nNqz&q}Kr9GB_`SE2QDY>MdUHiZ_ld1RgD1>n7ObeB(EY&SZC8En!T9*}mnN=pqYrD2nL z=UryVS&8jeQUPnLCAZWa27t1tC7sX5KTh7=cbCQsqv(ATyb>fpv%-+MV^Md@EVWB$ zMosNN1gpELFh@Nz1(WZG)ZdVOS&Np&DI#sTq`z%Rwckp%SfQztAwB=9Cl6!m3GBdF z6<)EWW*bNkKH9+78n0Bo>3tRMUbGo&>3-cqN>8FEBBkTho+F3)tKUbZL2~G0Hv*zj zRWwx(-B~#a*7-$YnbOmv0K<+XX-1PBY1h})PBB?Eo|=XpcntGB8mnSd8*tI|x_6=D z>RM>nitRxcBoZgcqs9U!1u8!s-_5YxlqnDDD|_&DwwG*Ua3(^>>CB(Vsv-B7d5Uf9 z^U>W5X%;Z%>)7j!-D5uQDdzGr5QkA^Zb>l1KF5*Rl-Pk}P)PMeMR|KG2GNayh_{ER z1&FW5QNTs|-v}16?1DeOicrD46RLBm(@zh0pO@wA z{IT0p^lQS~(^YPF?P|(s*Cy4tDcU_sbLVT{k!`HvBX$q%*1(Ca`J zkrkI6eeXUPy(1!ZPjQct13&ZhScy*Eo*64vK5!KHn_($?8I|$B^8|HsHA$!7^DiVOZ`c!R!ct@t0T#-A_!M|<(}+w?F%GRzIx z)T2!YtL^OjnTU5-EAlWFOfbwo5TqQt&+b<8Qf2mmZxi43q9U5ysJE&#lMT5%3y1?0 z_kDr-?_s8;#ll}a^5Nc`xmK=!vhc85N%zfzeel!)U7xe^#A`xxx1Q9JWHc^YJ4Y3d z#}VeT zh%ZH5bJw8e>08m2C@nZp)$&h%XT_X}%Px}1urIJum`S&oPlVd0fzlve6_9?NXDxr4 zk_?ix$@xL-WV_OW<>{WVkCIM`Ag6WacMyot6B zW|O@I4xXfbktWBg_6EQV|N3Vr^z`7FKB-6IL#t&PeudXVbohEaHV(X9=ahfY_I$@v zHwOWGyF`0ta%xKE6$h;58M+V^F|S)nKAIz$r8*Y(Ukn9NxKfFY@Wm?ggshh%bvuV~ z+VZ86y(Txdb<}|*TPDPU3N1oH%qRlU_5sA>V>k$Fl^TZ9yqVSH*nRExFvo$fhR?=O zWeQ-+3+zd<0?vX5(T2L*p8q;oFRR} znOt4cjGW4hs#(X+Trg}Mo6tPFJLkan(AB!RO@F#F@U9~8eYiunKdzXeZX7N<@iO~a z)^iiZ{LwB8$>2`W*VkhxKwBWV<$MA1-1O>)HQ{3{I}{ioM;p0klj0X0XS3 zoj`tUqwqkQp)n3E%NMTf7vSp|^XGhl-*C95vn{NnOopbuz<1BvVs{``<(4<|)mg1$ zysmYx^Lra1`^YB&+Qkb#!~=QBS&ONQx@M2NStG+M0p7|FQCmz{ z*m;=1R`G06AcYRKo=kxJ%^)^r>jiCi_KqXttoqL;RBI6*BiPhw1|dbucVN@`4-2(r$*zNTrsc0=UJ z*NM8hbFegm_zkFeuyS(iM_cx_YmRe3SruD&$)|GK8f5L*UP`CPVEjr3EyV6cr z-Ik0#u5`B(u}V>l)_u4-8^I#+K8-kpJhi`DnnDnw#v&HLQ5uXtHN>W=*`}jjv21Xq zo$hB-T4LorgFU|*46JZ?lR=kUu&kGumRw>S6L)i~-I`%5H+{zO4?blJ?zIJMAF?OS zChfpKSZzATRs_u|7F{&#SutC;TkkKBagv-rt(;gzn*KQ`o80Vn;2<=+ZXFjotm%k& z4-iJK0tH9GE`clKUbcMQ1lG~o4Vg{)_S#blXOarG>U&?|YCwmEHC(<$?}JbM1^&KH z@U>ZFs1~I@8u+ZZJ+7wx*(SqQmxZgduwbx8z3F>YWsz>mwus2NvyS2GN-Ug9i4dD# z=uXWbzK@OR15X?&BnxPR8YA$=eInQLQnRyUpP!^}Po~d_ zVzzh3ao>+%vOvfMt=&pR=dI3FLpq%5D2VsFm7L3VJk{Y$_obwSM#Nadr%@}F-e*p| zwDgm`z$23Qpfvlx@W04%?*G5VDaqqw{!!%wWQ$g}dJA>YCy{11KyP&0FC42X`u$pij4$;QK)D2NZYc;f1lD9`d^4mnM2o#%^>5@g;RW}05} z72wY{igd7jI0fRsmU22?F35XRz^{GlmD8!z`+WaN=}MVwG(qtzHGurbdeU3k_>XQq zCep!rK+-$QD@D&DmsPi;R8@buga$!kDB|6v{Cd6r zN_**7t*97VRV0YT;(K}ux@Hu%n;&f_ZGZpc9`!)*?Cm#7|0{|o*X^nO30RS# z*C=PB=;Yp(*nu~2Z*BUx8D z&-4HL9S27(a8qB&DmVX(#TxbhHWjyO8TagepKK162%ue~f4p}Sk){<)Fz2EulFE7+ zgGAyX2=b?4GopJU$i5`&{kX$vkxfeqp+EpiNWg?D`?0J2T>s&>zjv;!96G*$c(FfZ zANh2bkhPIBs-0hbkT0hQ=8&oEJ(u;wU$*@5M)B9~bF}Xl!z@q=tuCZP_yUjT;Mfij zSGS>DYnk2{$78n{*N*kG>j{++NyB1Zib!3KHT&lJrf9c;T?XJ)%s-Xj$H%2gaQMXHz#GMS`~f;}&+hMN`JuNGfnkG)oRo2xm?QkLuS0CHB_ zWK4bl3_p`MUT^P$=wxg4HjF^@6t_Lw*c=aRBBC~O@P*8O!gF3tKbRExsylOO?N}`V z{Mq@}?4Ls)fgfIoCrx&_>VdysNq|FMFKyAf5py>3@J{rd;ix#IkV&_FPyTkiJBj&` z2;180S%-UW9`SO7KLgG5f=&Lv)d#<#R9D*RPK&ibgtQnPX_Ck1(lvW{!qTMZ$aJSh z)XPw~daP}4Nlne=#M#+?A;($P9B;h~ELBda<{hl@qfn*=)?`;=K_OxD&YCXYn)Nj& zXQ-=HOUtX_pbf~CSJanazkqQC!A7voMYL61&J@8rt>V~W|B!R@2GZISDz@!JhW#KWHO zkPOvcR4vJ)`eYMsjz%`+L=Lncs$VZsexI>eQF}SMKz0tTNdSxV^53^FeOYO{9`07P zDzud!kaMY3oYPN;(ZVY0O)~K|L%J#KI$(v1GRd-w%9)F^gC_!Nm6ggyoZmm@C8h@e zI)BgmRAe50iUAgN^kcmh2PuVs{iVe7=yc^#3H2KYwBY30RccQAM`?{G+-blCs`&Nu zr-tYsJF@T1DubnR9R_61OLK%>HophBH(*?~q_{LB>!mgRnzFOV-)Z0y0Vgr)`u+U- z>g&KPp^`se7CB6%Uy{9uaUdrxZoe$hAgQHa`5Z>lQ5k&}42p0vG|#vRUd~>F zx&!fzx`x%|>$Lo@`5Ad#e`g9#Y6cpd&b5W90)dL4X)2?}j&XGZ1}6}uc4~IKc;H4f z-Arg`X(44TIm2wEebJ#cgCr9^Nnv$R=ja!SomZa8D|847JNc?B(ZpoB>RGVUBWqI| zo90QTweXlp>|M!#0bX^Ed&V^Q_m>PMd0bgT*88Mxbix}?>MbKSPOr} zSaWO9Ebl?I?0EZ$QJodtT=DE^eck7$cV4u#@htp)Q9@=th$g4t%^AF>a@C{3L0~b` zUYpX{=>B1gteRKR(j#XLpcZqp%y4?PobTm5m2HUNBlRO$owe?JL!rpRKbXC;VCVEyOO zaSNbdP|pLa#tEuIZwsO`uT9a2`fU^$8rSV1>#c=Ez1ZB`OY#VvKUkyXIrHVrwGR1p zO#L?HwJg9;u7IzCd!S`8!LlyN@Gohvv^0swhh`*9LW7fL7i;9FKgT6Sj$fw^xigJ9 z^Omg=O<$YDq~}PUU%#gdq0XM&*yRrtq^LRR^9PV!=BI3}9HTH1qmQu{$* z+&5>L`J?2eEYliC2fFzoq5Dz%FOz4q6E|2odT}XeV|*doPjZ(5Nf+4X%r;rn1omscD^CyquV6*dV*PIqh z;UL*`V%Rayqc~>P3V2#}a(DF_iMj`t_FYAVa&n=s9eVt%-cY);?%Z@QA&MmG0LPhM z=QX0uX;vyklau?^dwhw3N=GjDr z*tG1KRL4_fG3aSiFe+;<>(mYlwYf(en(lJpw4<;P2jQ$pZ+_h@*bOR|M^3b0QnlKx zE{_F4>^+TCRGJJC&@SFr$Qln)`AZLp0UBZDO<{+A3h9ICHF-^_RNs7ZSh% zim)6*R3o+3c6+Fon;OyeS?;k=tYwqTpEV;G1>S z_9)L%X#Z}PeN?8hmN!FDqXNg$NnAg0vDuvR1_9#pYt^{wId%bL~O?kbB^p`g*3Du zeJ3fT!2==620R-?7d^Quz1J5f44ws;U8B{qc?k_YfK3HODnMbki974gV@qScu0Uly z#cXEkw?pZ4Nn65V=5R72-P=-Tw}tqtVgUI`u1H4yIxgeA8&k~TQtEomK(NWee*LM8Vg^FNi zK-atQ#1$X)QDfi})I&3kWyWX9Z!HCo&(@1;jXKI*|54bIeyd4WtT&W-lY2W%wbf*} zo-&87+S)9q{%8|f%UMPYw9k`>{fGFhzOIv>?cAn-!cX4U-8!kG&i*t-QZ`5A&yjxM zYjeIO{vGpQ&cG}LUcZ$UNoYdKJ9OlxrajKRm@Jj%+!XtLp|eZOepT%iEQTvN)_q}l z!VMKk^bv_?BSU(&7t=P+G-TjYlepUs=qpRUywGDR{c>dv6Nd5VbnpN~S~tyq>WHMo59M;;j3)*4YGsCg$^!{>b{5 z<_j)Bs+J9=LDEeVBS~05qfac`QjcK%60fUrt1h4MzpZuNQcvze>vc{L6P?hV`j%u@ zgt~em6-$L|F~Y9atb`JW@x3X;!j8r$z7bciy>;&^Z^K^Dt7P==8g+|RB%_o4DmXoX zN>;Tl_wA3fWKYYa?$Om9a#;1OOKDYYp58efxQg-4v);hg1$oPSR!B+vfDq zpd}6sElpof(cOHyaVC*ql%bzxrB{_0ed|`Q;N$e~g^QO-J{09?IR0#X!-UqOWyPPH z+iK4s`JtN^@9@zYMzUEyooCbzlU1Vg+`#1jah0rCjbaf1#cXkHr6Z zR%p`JKJv6SV^p42NxLEKlC;>_B*2P$lpvnF67?_s#yM0qU{`cz8KJQKMRVS{5Pu?@ zRPAy{4N~UhV4}K%Y>m$x*dbi&?~^m|h~mkZH9h(h>Qntwn{V2i?sP%wtSb!SAWSGZ}^gTJGX!T0h#{N8v2XJfnOux`nx|;gI%2n;2sIF?{vm zsmA7^_Y9e}SL95vyl1zw2=O<7CssV`-Qt@Tc#14RCXClOJ77yts3V?%bF%TFQiJd? zU0R3i10eT!*rlU`LKk)ki;cky&*pd8JAN<5=?8te|A9LJa3?pNaW@xN-C5~IywXu4 zw*`|FALQXt2dZTW@@Odt_q)%|KTT9;?0o8mLKL`fI*VF!izpm2=iQR5OWI@Y#>5~9 z!whTu<^Y%pCRy%mdZx~Ydo_#^A}8~F$TigS`VrfMr;lkKoELriz9458$d$o$n?h_t zu;u^+12YXqBsj~DpjiPegdIudXh!bZQ6Tn6C(!XIS=@+QchQ?~>RMs9g!X_#W@f|C^9JvAxNGq4=$;#4>wRNvX!l*%p2{WweD$`qmz z>x0}45A)TQblaQWH$Jv=I@*YEM;CC_k<{8k>Ai^1SWR02n*wF_x$2e#=5zSCAD38f zlu~u5n$zk;5W(|RyBJi;f}|K5bfluq6|A|`1RA(or!*i~b*0&T*if{6rR&n|$1G4( zSK%*IAC->`BACZc^Uoy&R$zS?dUH!M*BA+!cM|!>ws4yXH?GHL(7#h_kmWs_WONSm zD(W2NK|9%%fMZ!NkR)!s3;PUhTz@pHr7hQp$~N^IQwg}!61%P7+OV-}S>Y}aWn6YJ zWuOlIO2FsK zuZ60ccAWrVW&9zIJ4#@6UV0*k9-o)@y~dRvKGXA)k*hmhB1xtq&W`KM^B2iCI>a-k zy9D5JkVAPLv*REZi0of9%9OdnxoOIeqV632o|>d!g%_@_pV!ttU}x5B5S|cmH#e>C zoK-LRZnB|7nFG^TaCB%_*TuA0je?J1K+wH|1XS#&>vTJ)UlhM2^mm{Nw=01zQ+C+9!VGU zWFH&HI)5tj1swpSt4OUB_LkJf!<;$qsK)8RZ7sGE>hK6z*J46T#FIFwC9k@PwwbmU zw1?J4lw>h8$#$#p-7VFAk-D(#|3kKs7?(t0TpV(JG=Y|{{+E9Q`PxZ`x^37Ry#}SL zzZPwioc(~e`F!`|Y=DA)4dgm3Ytg`|vCG#&Ry=>3ysfKwHQT-}-nsGM>8+aeyO?Ko|lqj{=B$f2o~T=Cd8hlQ<(nU|wu z^~fW(B=31abpikPE6Fx_)E~~GMAn3M5z|m2wsVAR*!6HNG^En?To!k3h6!h^`dd9- zUYi+SZra53*BUnO?V|jkN|6Kd>lpfJV0U}&UmcIX`{DYxscv=df07@-N%1(RO1_y1@e-PTxT{IEN`{$I9v$)1Au}4f03!^ z9H24N`{RQpzFy7G0yPvj5f_`wK$li$3}exz1R)@gYgo@sJ5OKTEE#YU5{tBJLqv3LXwO; zQC|%$V4FZIE>yNTSdgsH_FfS-&56of?{jx>-xc3J-%PBId^wd_IU&ws9DU7>HYbmIKU{Rrd8?h#l7!ekj z5MVYS!Q;SOcDpj#IvukD}>T-Q*&q_o{_S`_nfk~KX7QHc>mF0crjk#UH(h}(* zy$B%3w1OHomx+^eXEX<`pMqC*RJNm3$e0eyxgruGSxf4ZUYPt;&KWfg;a1hbfRefH zOJT`7Gk0Cxm9uv`n=bof-p5ibPK%1kzU`VjXn6&cVyuYX-DswzM3cqx*&|w;@Xb5< z2EV(68E+5y6h6PUCc>=BN)MV>C8;Mg{OV~!q9@M23bhY=k&gGWXR@7qCwya;&-#8A z-?wi!hfd`G@MP;qr9C2vBn0Q-*d14Gaf6)+Q*8_}|28sYHyHoA6(Ib6dIOVFeLSE-7{`Vy=AIu$-02sngF{|U`6Dwq_F1%6u&o%8EobmLXu zQq(K$&qUgEu&JIdy;d%N;`^oR=Id+yUu<#99;*``6z zuk_{)ci+k&a=%ziowap%`$R`d6;FEBl|g8z9DtspP{c- zk!R?&9wHR7yR1{?lKaZZ6`;3ICVDSl>mF&i)W>;6@}_Az4R5w+hVfK8`C;+83*$JR z+8kB^eQ84dk!GIrV4`MVjbp=#$#1uuVR*KJ`nY3Wo!QEK-h3Ig=!+xXU#)R)!c7xz zY(H;Tm_Q&4*~k&y;i%*qEfZHR`7E?yPE1C4taD`1CA39F`%z>I;M7aEB@{GS@?8t?c%U8+~- zodGD}Yt9lxGgR@P!^+aN(5Vau2OPJ%+TbE2w5^(N?&)GS)RcIQP%xhe?wsnks6n$}g z2v(0*WCMvXVqA5Z$tQXf+xu`{(3G$UC=bK4Hj`QpS(zIGGiSt?v>Y)U>otDMy=LS{ zJR2!4mC(@U;xvW63Jwu)s{azZMfg?ZCmy>n_`3bH)$Dil!{^2VVf5lUnhTg01yUr2 zjqOs{Rr2#jVUak)`Y|99nsy!}ALg(8OUpv8$G7UCnC3$AhOG4Ew;a9q4L4m*3IhUu zpXwHaJ}sLUopNCiyBdgp*yStOn)Xs2A1Tt^@`V&tQVA`xMyB@uMbp!Mr8)Ly)!uTz zn4Bzx`GH=ou%}aPjf;1Prhx{S)q;rYM#MeE;)heJtM}rw8( z#3ktqdg70Tule0>nYP9Z!!znO_N6wxKY^nd!*LE6dF_kl3k4_=Jpt7*UPX@UJ~n&z z*=G$vnRaQ2J7_;QcH$+h5tb!g>qWC@1N)JF_K@CfUb4;YiOo%RUwt&b>4P2KxIc`z5n$;p{V>M*B ztS8K!EnugQqsJrB+H_E0(B{bYMPjBYS@Q#Q8$XAO-A2PJq3dSI_GCMshXZA|b&^88 z$PaxFxJTpy^u+>ds&1b(nz{D|F@!jT{H|$k6KZJB+y0^$qv(>^SWt0{t;3>hih<3$ z#!BqIsYu`PL19JGr%$qo^Bs{N?j>}{wn5yp9Q;nc%Pg^@3TTR zp2sF*Rt_YWes{RRi1v!=cZNh{Ym`d`3J+gR02K8KXk0OZj6K%JCA+XIwDXXy$1Q6| zb@8HYt&`7G%AZ9|$-mT|?7vmzCiC^IlCM_4*)a7uI4H%_c2rgKdz63^a=AV0^dtC5 zF%C&VUCe#?bMQhjZMHS%46GaxSy{mk&P3GXNFP9WaybYAuH(CH&*C-Q*)=;N= z4hfSVS{uFv=NBherKdMM{;aF&DbS`hN6AqrJks^cK6J2y;nV;m6s@YfuGe-wMQ9Qh z2=~U%IaP0qjc>|PxCpwNP~R>0>>E#B{Wu_o1@O7+ySp7RNNLMdVH%{8f^Jg$OV=?h zhwD`Sag{lJKp9_QTp{@fT>#B_av~S-D(#!x<}x>Z)C9OFvfAMwcobMT#I>s5y0HFY>E^`)>5iRk0n{t2>{T1D2LDhbU5H-9;fi7t%^Ra?Z6k ziW5C8uQH?q#I>y2$EBv?ehK4etWBWHwF$hlXV^ZyzN4%Z`_!~mv!oQ4F>?xmXEn@* zOX8?PkY&ia>sS;IM&#tlmgM>=&JY5Ez--A*E2Gzx= zvs0>yKyS1TSZdi6`^@|(TU6xv<;9&=4$#rtCyNqyj*Uc5Zlx0JxK*v2ye}BA*;c&l zy}k)p5_H{(2e|Ito{BXc(P@g|wdRTaYS(XeTgA54yod7Whj%N=D?UhoX5VL+h8=dm z>)s)8Q+?-c1J%ta${+_SA89}yDLs}M{$((!_T6S(b+as5O zWCLsrqh$VLofyebXR`$qM7$4kC|73MKa%KyM-?N?h5+{L;lAdr5moP9Q{B0m`#Lqu zGX)>ku#Y-#wHYcaY9M?0(R;VGs6lqeG=R`v(p&V|C#j5F<~Y9jdlK=xz3Gx(`LLkT z`2B71O?|7gZ{O1n`9R_Ll*6tFbGG$x?ajV4Sa3xZlR^mr`?G4O+iyvq$=KVwPI^SE zitbjxkM5;fpUl5yCb|nolr08Bn!N!M)BX0dkl!w$vgX?%@K9GhLRks|#^8y^p7?to z2;>J0n@_m4vYfPr&GxjN7Y8x&E0`HDE;cPvS*fGhfEDs~nK3@e`w4L=SAS^p+eG!C zP3?VDp=Zp!xXV`EHmuQ%;saU%vW?_sBF2O~MBKI^hSUbbpFH_27g4jhPS_tIUBq+BGKK>PA(QfXK<5t(_rHH05sYP->Ctx{Q4v*J$h| z-u@FoCD>c3bW4H7xI{EPiG$!5b8=!p>3d56r=e8?~R-WCNqyaIo;^A|JUsl)>G=3+ z%JpLC^ErF1oZPIr+H6LT*h@8fhOIE~%u5#7Tj2-!x&#Bv$3GgqpBHfq!yo!UA+Ki) z@ue*!&K$p%tL$OcQ=hCJ4}Ke1{$lYe&i!)byQb4@6(=j$Z3Przm<#&y;j}@9Vlc~{ z-#?Au^))kVxTl76`n(EQyN5KQZZym9kAW+Q2M;(%<#KfsRfLqgbMGeC9Pqcj4}G9~ zwLeoZ(eiZ|gW!XMarn4-pZ}jFTp2YZ=XaU}IqAeeU+VdGVaHVXX)4A)qHI+Sr6W!( z_*~j?CI^*nU-hdMmEgWZnLFWpze%$oI0;tlYrjEcNYW7{YZteYKbL!j%g4nx{8F5m z=|5PzT3m3m`d#(rn8@|0!6BZl@i4#STf*+a<57d~3yZ{gWD#H%0V*&t3zK-G8ec8V z(%WUTuvCeJ?sT!&qu(mU3jF$6^uQ|tQX2fSEFf0nNwuZMjp_C{BCuZL5Iz%u`{htVlz% z&Om=FCm~o!cm`|w;xW%7`Eh-SH{G#Y1p_SqLu&zVYLdz6+bBWr+Vz*(aiN4A6LQ5C^(I>nr z7kwN|P4kv)diO5zg~%J8XHODKZ_A)P3bEj4lNesy3d!ymT)nbUe1co{h997?4o7xy z4;%-yzI&c&3fJ3`-&l#TB_}-^U&{S4_c+EvHrq0VlR4{l4D+w2=WH`f!+ZQ(7^BWZ zbr+)Ys%*)c1`VT|NYguDgCHa_mbTqM!r+Wi(ZH>c4>xB%FpsyNCyP6gLy0)E5sEQ^ z3Bv(mGYwRkiP@jc2}qak&M5Zqqx#Cag{Y;}K3mGXR&03@?cobDDr*Q`E0 zBaDiSD4*r?RWr+UoNXK6T}r-cn$i9s)y8MXXvnNGcg|+*KRDB?5>)HZQ&#c%(P9XQ@=IiI~%yueVIwpPw{V)7hVp5p+yU6FDb!VU$j&OW?z zg@wd(kep~vi_?8swSOWMML0Ac1N*`Z@!F3}qZt(;Vo1CCPzd|L@=@!-)tfW4UvE}J zVgMc8#Uv7_2Xhe#gz4wV?b^EczD#WdSKndsszJ9VD2Qb+>Nh;R8`9Ree3>)r^~?O$ zlp~CXZj3(}Vn5nYNDGB`5`BopHtNDc3QgXUGRO#`fE9wa<*Pl?}bA7y+%LyxbF=Dy66Bt ziCbXZ=qZEgO{MfAi`Mz0QWOgDZRbqy*wmhw7&2Rr06c}Y%wA5_ZqS=+3Oo{mG@Mbm zYTdS*cCaB1PCxo_!I>RQkYsI7eAAYyF-0xuG~u*Na7+*z=F+Sb zPaoE9eyW7q1tW~8UBvc6BEo($Nzn=X^e^F{_)27J52eNz3D(di{ zK=Lmd{aR$|mS;id8a?v&wKG=GH|X|&xA$e3lP;g{=Y1Yv-FWPT+Ks6?)lnRgjKF=D z+{xeGC7YigZ@=n{+E^i-TkKR`dtg|y&K(j+t~4cCtt3|S|1g%P{tA5(5!_<1^Ek{z z`pn%wKjkcQ)N^uht^TQr>zCg-ekGj z&bZ}Cn{iF_evC?*(76f?>;^^+w-G`R2cmVBtAKnj;qgw=qM50jH_QQ|AAe+uOMkfISGWMrje}i{PaW zJ|kV{p#?$^gSN3{i7W6)Cwm zlY$N=e(ahN(kaxBAr;J-J-l91Tr}=)o~vazl0FO7d|W}G+Yeh%M=bWE%fJTGeBkrs z|C`*qyj_~a+LNcqPq{H!4c1~@tQ2rCK>$tWZAdjs!v@uI)bZ97&zY@gH+Sp!&(2j< z>LPXed8>sNAVI6HjXWCg`2EVOE650x!{?_HQie@ewg?39m{JaSS642q+OfIprcUK9 zuwD$^|58Fx!JsjF?;N(xfPurG;nSunpg*hYaq2t0q1IAZSn;PeGV!PpJL@|MX2`kx zlWg#VwSSglrywi+L}FE~orA>MJtqv7>HC`7F)7vrr}4g}P*{SEx4y9jK5xlk=x6!O z-F8vng@Jw$>;zb`dwVYQjr44`O$=17`K>WA$4+8!7Z1!2AyzucJ$t;k=nP4u8YYx z1s8$lTP=_opBl%nbn0?|4iApACi6=gB}}h`px!gMn-U)1jVEy1r+1rl9l9rpFD6i|+bwm^gko*;#a)B0!3}KL#^PI@{`%GsVMip0q`= zJP3E(mD5PsEZLlW>TRK7$LMZtJ1Z!dY}KaM6CU-l0_HZ+&I85ROf>|Lz!W*i3Bj5v zPfbj2stPQ(70hqBiVup%lty+eo$q+wJ5;&vn@QUJdW?#t=-1@iFPZ@7*lC+jYP@so z-44QTt+zA1Eqdc?EfD3BC#ql?5G8P0x@QU;5^3?|=>D8%CHBSvPM|puzx#Y%7<1+T zv`%hhw!-Kf7MjQ^$BpX%57>hc-zjKH1I4-3-sbDHsqS70Dj!G|p)f=9a?=fYvcpO0 zy3AUUz{Wr|EgD=6GlbNbmk)^KRnHb_+X8~S&dYojP4L}kx)mRigFT3`@&H#ROLx?sR%=}sNkl_*>R~}5 zXUKsjqg!t6lY4nsrX~eN-$rIrN$7Ote`<}?roSCk_8p^o zMYv(IBxd*}n6hf)OYhJUXXlP{F(9u)HMX@&#*xDE`>hABBlF$lVmM@Y-Rm2xd09)xHN$L+P|8J$Zj(}Je%bl%*` zo_#0I-VP*dGmn^6;v%En9aWTi1Q6o zr?eb9i@Zc3&@*nQZ?Q)W`wf_3vs{VoNNC|tggY>?wF7=C!w1Bu!ZI?#Ds}$Hv5C!0 zDL&!W#x$gh*+CD%Z|R5#JFN5A%TL&!-A{d2S@!}G{Mk-> z84XU)AQsmuC%Zj1Lcb2|Wqn5xCiewbP{gJHYX-x^(T2s3Yq`}i)DlmoU%!s5Lj%4_ z{*tJx^R?{|Z4K~~3H`lyYO}wqYA?MC4~w!GUqQ^m`e6`+DKV}uR9JwVQ_}uUayyn# ztHVi-3nt|2-OqKhkgjoysH_aixGV?Z-Ej#>NxgvYFSMI_NkC zVO>4`w0gWe0BQolg7LqzRnQaQyHC<>q;t-{q^a^O34d`~sw3Eeck=8Go!K~6%PKN{ zmYW2!xB6YETHciI8f_R2&3GtKPa}z~kJbEAWq^ATbscI$P^>u4lTp zutE4EKHmdpNi_I$$Rljppjf<`YyB?xj4!#s>mB8GNSavh#Ywo_IrnExXU+OHEV&2% zC5^BC4{7`tl5-^&GHWjzfi&%6f8L>06d;n7pw(z3r{l9<_)prDvRD%>oN_5osUeNn z^~i*bL#ty=Dhmt|yj+6P<^~i;PyQ#Unezed-}(MOexqMiU{9(}&S?i_h~`1%F%Jdi z1aB7E_4#-0(FE;EVST?!A?>qK&U%%W4;P9g3L9troo(=n7uQ9&;s2VTGU$yf?xpd1 zsR@fXR%T4WD(Q^w$fLev%^Gs{Ek;M8et6*q08p2>FimaoDLi)YcfJbr zj;0q@HpKC)Y%ra=aWoqN3^F5jx&T_>950kIvZtq5$>a+8oqML+4!+pBBOrW~Wo6xb z8(qD#z4IS9j|#)k(VnG^FN87P6>HgzU!3jJHT5Kv^1MDJjJ8|f5w}oll57$O z1lN+=-P%%4BuoDJkN8#$TbTc+Fno?e%M%4)G;P${xmMf4*aH2y&ibT5xOy z0re5h?diPSQ>sx~;}L3n$EhU%OBJfmAc{m&mB_LOVG~+XPrMiA6nm%q8Z=aoLF(!u z&&KZm*fDA8VSbjl;`8c_GHolpSowFNcu($hmy@_Tb&$CI3TA`Pk78x_R)4T=qcLHh zLSW!9j+Dr59OHg#EK^Uj1Yy?sV?ROW&n-*R^*mB76o%mWuz7(= z6;}TBX%|kF{9A~35W19SEN#gA_a>az3|dOQTHbv?R}K^ozS1?M^(dN8x*YE_z}+z2|5~5#Q!Zi%06GFf z74@>0&(2pxEBylEB$IBSQujw($fZX{MLvaZD=yJ~mEsexhEiXi+#nZrHCjX#-6y6c zz5a8k5%}kLvb)kVV9aM{K4tSDOznkW((bdTLQ$(Us^N$}7a2X!wYKk`gG{PCog=jdDSCv2w zru$_491;&3-+XMLtkl(Ze#Ujz!OuUVF?;puzgQmw_^tcZLkO?a*<<)p_soBvXSWaW z-y>LR+{jxkX?xcC7flFub?PLiGR^ld8ZtYIdOxV}zeBp~oc_<7mc|17Q;ZKDfR+cx zryEZpWrKg(+>c#=_hX!fF4G@-+$%uw3%tDxFUf;9_f3X$2JR&p5_9K4Pp8J_mi->N z*O{uM$q&?@d3DyxxyeI0>Tj5>ADre@+Z}i{AaRg$Lv)jGg;XPc06ERurqV+zd)}gJ^Ey*N-tPDTlSpcCmFR%#^!xKO zOtbel)Y#9{iwXj)z0D_!DV})T*CAKOkzkW*0gJ>#QxwmXns=x_XP^tV>uM@b>VqxU z^sg@RsYYL=xbjXEp^Gl0NlfyVFXeUwVfca_FcKTtPx0wzlDBYCP~~|zi|t|-6Bj&5 z*Xt5|FEo%+^=tgZS45YRv*#V|CuXGqJ-O`zxvU$h z@H|(t`-l=Fm+i;L9mWr2YilA1Jc*)2z~P(XvuHWKXS*q?pt!H^iAqSj;KY?xD0l08 zu`)Ynfd18);bSW1avuTnZdW^JqiivxmP9ev$#I((1CriesCi%>@;my(tckq@JwDeh znLTfslyml;TTJ|-)CZEySKW9FJ47qEYQ3K9Vlb&1p-q3HZ2qOCxfPWdsdOBHQ6SjF zs%6~d8-Z9_&|mu*at=1fdhmrLp~FQ^I>4GZL7YYu_fm9Ca?LNU2@9mIIq8q_!q!dt z!qP1aB;TqD84kR(3^o^m_TgE(w-dwLTV_NOU=L4U;=!8ck!n+5ogdycNP!dR{dBE* z6(59}1H0Pt{gmPbdyLr{jxaWbafypm+eP=zW`H2$@1l67w~u_utqY3XX$k5DDwDw| zVq;cBjXwTubyd*GdS3iyj@iUg>wB$XIzA?GN|m^o+1Lk#gM-4PLZ+bMCtk~tdsN?3phJ!!!uxPs!B`Y=IG$p6E(OnI5*qu1 z(AgW*Jc)RGnV@{1bm@wJld+Vj+IYWB!#a*b%b57+>+wp0&J}a~sr8h=pQ2juIa`(I zm(wl5S^KgRapB(_eK{2NFWjLENyt%D%mVmpp;X$aL(L=js_fp#0{%2^Pw@iT!2w0A zspM*J_Lt1s%o^&83v!VD)KcG)x<&_tqz<@${BcXLdZ`Sn3V9w@lYzq{x=l`S!qDCw zMW$8iP13m>&kwfV>!CUyOT7=$wW`Ln(jXi^mTNrViUazZ;-+14`yJ4{gRb#*>3;>8 zw0InlV|72f_3>;~W_c~9+3S~uwal1IIk-%Uw|?DxpKvIvT}XLTLR8m{a~S{{ z9N&X>fB8tyQ@4Ppn>Fxf6$K?ujyMsYBlCRKi0g8Ia67NgpRb>+-p^;U7`GljdFaM4 zm@&V4r6D5B)hZtHlc`M@69O91Ey51Ft%7Qo&Fi*4j(HRA{f1R* z;8MDMU;opgM#Dz}(!m1Pinw0l&9NHe-8cr-w1h*`PvpR^X&aJP?%C4XNI@mZExK=z zvR!6>(bu&!fy?^8-O=3-6NqsK86y-PB2SNf??;llF{$w*h%m4zGi^VqTCOv=GZgR_ zjfc`b5jXCWfCc&&>_X2M=;kJkU4n9O;UUiE3mXRSE3j&R(OjLwC?>50&glGuqTV#^ zzo*Wb0U7mCuA|CiPzyY!0~8Aiz%~=Q(+)$Q<|0i)4?;<(uGUTG`Mw8J$Tkz3hW7f5 zr|DrWne*5<8Q0fvy7t~PFs#Ezgda&NHVDr92W78@DY0G8)t`CQ1OWcrno#dXGq z)0Y?&?4Lwc?$=hd6#+q;$P&mzGmru4BY+(`qQsDeMq_&}>^?d6;>P8}i$k8>aPQc@ z2dRH5RrfA`qzS_UN`SF|uIf-6C&u$eyCQVmwsp#P6Hh!ni1REv%dHkV&iJ7v_t{$r z*b^mlH<6x8?)(jG2STImv`k0rPdgncW!EeFxU{6i(F@?hw3Ac!T3m0@f%SRLi9Fu4dZf12Zwx?g;8{^cJ~)viO73L zPXbD>-7R?LUUw^5_-g;`C?*u*>;&I&$-#$BXIo=UPDv;#cI8mh^S@x;c1|OXe|45j zBk&}^;EOjJDup7fYU{`3_u9A*9Izl0hmhR+M>~2FGC4+5VKJgn{n<=m%t{l-cH3+p4dh$INx`t))AxjPqB0-VgnyDgu8 z?d{j2={iI2qPi|}asSk$Q$%2ytcp)D?}!qbRH;^CQ8od~L<*a%|6I;OGCpZ|gZ(a` z-D=4F7tLH)jgmmh{!n3zjeT0Dh_IcPnoW{-r861q(4`|x4y=UU5wK3OOekwgy!ksM z?7pFr2_x?%S?)!Z9Q5WqE|>Kz}BTX=NiaQ=OpXowR?qQmqCZ2q?^?ccg5!BE70r_W2Z7lkV$gwfWvJ==T8o- zpEpm^-thJWkR7?pV5Xe_aoMh^;zmcg{_TxInD%*XGNfC7Q z`@M@d80H?3ARgU%@b7DKLj##BS!nE5o#N~V=UX13np@D_P*sKB{QnJC&x@t;Q}Q~I z`q55PT6J%b+W;)=$WQa@?MqkYzy_`j3=f2@|HOw_yDwZKwsO*b_L?@43%?R)Eyl#i zSCzSPoJXjpCAhh+^e9(DuvJE1Q@WMM>}T1ohxctRW&YcpIv-E48M!o!?lHIMACCX3 z+aWTZOrr%z)tz|O{Vem|2lWk+2Pz&Yxmu=;ga_Lz58j*`@bwiLxNd3rxN+$0>)TTC z6d#g`Ef8Po$kGC4x^Yx%!NxoftAKP>|K3O(wEo37xxEzE>U#sN#gJ7Rib2AyUhAHH>JG`ux&{6)^u z$;Ba0p%h2_3$^KB8iaNx$Bi_lbDBlt@g&2zfC2A=y87@t-c9JH`k0C>OVFin)BLI8 zmx<~PycflS7cO;D7=iXVMS;K?=dZTI`Iiouv^uZb71k2@qe-VLNlI~pq8U|E9(x%L z@8~lm`F;J{c?W~R-KN(}NqE9xJ<-VFoCVoXugNdR~*_b7mmEOxldZsI8BSpeC54(4Ww#SvKQKgg7CEl1tUR*VSpe8#-_ z(hxV^nA5s5c0k1}1aWf;y_7c@a?sGyKnT>kh58f&E7Z57iuuT)w2HxeU4N+Jdq}Ws zL2k9t)e?2-aNNZ!*X2Cr&4C5=9`f;$3J805obq+ z^gsT-+O-*ZaRaSDVj=_-5E9H+I`vbn$IwoNGhzqZ1;sc=(_&EJ9~q=!QCfj)tFPoz zH2D244xGu= z4Ql^cS;cq4vB25}@(G6!ZPW1`0Y}K?@h3mBSxG-ewnPkwHWTVOn$Jvh>H-&KVb@mX ztXl?`_jZ83=}xG^O0#_{W_iyF95pF!I$clbNiEuN*;gy8E|K|wOc>m*2=ez2JmgL2 zE=lol^$^H=zr;Q*ESX~YAV!_(MBAMvO#v>%7grkd!BkZeJbm)0Zl*VGM{y%0y$a2lvO8!S5^P{1Y$Gq<>B`$eB+Zha;Wco{Y7OHY2>Ym#&f#3hWuk>%z z@S4a*6BQA0xI2{Z9)wdjT~fRw?_1-n17k_3Jg_7&igphNnUpA8wc1U~*PU~_l==GZ zKAyFhVoN#>1$EuQIeG@NXX#r*g-jd9T~pRw%?7S1lhIW-Ttpm74HCtMFBuEms{;<_ z0;r7{P`QTIDapxU(?%8OLG$un_2x5}RuBFHdYG58)1EDi^*{Uw5(q$C0xOp_E}Fkj zg?eGb_E7^LjJMge=h%D^gy;lK!2trE9XK^d7oY%Z%ydX5~3i?guUX(GiCoQr2kWMIWW;N)>bWjYlA-mDpnz+4N zuJM}PeIoJJ0z}q}bFis4#%?a8UJG%{3GGk_d)tH5J&HoT!fYAYa6GN8scnrFk$!Q8 zqcovM=ggc@>n*uBhzI9d0EWJ{E>k9e!Hsh-tU{s)Wtu&ky|<9VOW`wRq(oa#KuQ^1 zJYjgHt$ARd6bG6XZ_YaErw4jU23_Bw6*uTq12`j3gw~Gr;z*hUhNI>FGV%gy785ew zUI))(#G}@HicTIpyS3^Nck4w%8qKWnSy1Iko2DjKQ&=Z3sKBEMmwn@AN|s;eQPV&1 zFAOf#oAnGamWJnPKoU+rX)PI(txpqMMgG!_RSeo&OZnF8Qf%eYa+V}2l;n28JWY4T z$ZjZWF&|P+hZPOr{Mwa-0UsIiqGiBZ$eA6}zKt$gETb(*q zAtc+XEd1 zNb8wemnknpK&`Sn(=#$EeIE2)deb8Aj2{ahJWe}OYTm8~%V19`vs#T`u~zNS5FT<_ z^?yXRApeJU-tN;+<*Q?G)hk8~dggTSo&j4(bs(|b?qGeWZ}Q$q2CdVJu~arRg))fubqK$v$n2Ym456rgBj@Bt~mMY%-ByOg((g7qf-s2xQIIo(>?^q8#TY~1vhlyzGd<)aHJ zrNWI5tz7uu!JpF^1Lu9Iw1;?3#IFsa)~V{;NczzhqFb(8?X(LMwectAggASGtj7hX ze=WE1khc@t+G@$fnaEV66D@Vr^SRgxO@DSt3FLjgwO^!J;v!gZ`SZ~W*{_PG>H!Io zF^-ComFu7SEM;H6zs)39jFLSq&anJWvGPA<)IpQQYYBtqowl{u{gZ%f;$nZJ=^c@T zAlEyJ4d?bZ9Q{wEV9veAT1jYq7xK9ih-DM0_0#1{H=?lvPlDO}pxDyNE!NB5X+%NI zoe$jSt_^Ah)$G^OHlz?sGg>ka!Zx4S;qajcf5hAJ&1|8=VbEQDy;vX2z#o=)$vjM^SHAFF(|(H!8y-0ITu)3^W4 zhbVK4^Vh;5s|XGN_B0&?Y)AlmNkkpZluIn_Fs%%<#s;yn-U+BfMsO=UDB+56ih>cJ zHfMDzk46r8_P$e`^@-ubbmRFPVNzW)IT8M*m)C+>vQv(A2cwEgaGe@I!)?A~E2ay{ z8hw0V(th@8kUW>hftvUc-n5U3iwWd2oQBq~V8qHaODiF5LhR~FWFwtSTT*2OS9O7I zphlcSTe*mW&h09(tYI=B3R6!j@1*qCiLjgV;OW9fqQeuj z?4bb=Rvj%Gkn!D4D}93xEgQ$R6qpYF&|m(FCP7ydm)(m&k`_odZwl5YXNN)E*ka8icP*s;fSHvRB`aMI@x5 zpnN+;Ku3U;CJKWP)1#HE3C3135Tn@b5U%DoHhQj6I@i7$ooP64uEJche(~Crk>mA~ zo4;wdfcH2O4ss*T zGQQbDn-;FkWT!$jx+hS-4&HI`f5b7x2*3DU-UcTt-y6E~S@0GrO0FsH1nWcQwhdBl zUD=|DgmeL>vgq7-u&w(P?s`+Cwy}yajGgHB{&rN*vv@(jJ=OSg__N4ITUC*&$S;^I!IK+&?LLFUWP58tI=-x%}(0pv>9Ku>!tYI>ud|ftmOdPt)4jH*rd}xWNh~7% z0%x2r@*vA?VW@Ed1H`E6fZm!!IB^`VRn&iE2T%5>%ix9t`K~k%h(#_Lzi^gnM4nH6 z!|T*uxQTR_1-}Yv-Hw=@Pu)7M!GPP2RsJu!!og~Q5jLl1U^x1Cm?~Dk3;QmOs;RKU z8^qaFVM1za#)TV^oCY;U%nH3640GGOb@8%(j&Y;{Z@3G2pjYS$^i_+s0cn0EuHbha zW>(duC(}1Xk=?;ax)4WTw|vNbGxlemFKhhki^XNYMt#Af`5-tmUMJzIYPS$v0KR_OE^q< zy|T?Po)jD~sS6L8ei~8!($4n0O{e{NwMnZEI@OdA{PglaKOlp#*DfaHur#|y1E&wv($Zf+cS=D@$DJ3TUzgrUM9$sT z=SO${se1WBTUBCepk+I|B@MM2;uUjZT9=bTT}EV-{Gi^V#4HZS;h9{?tcOC;@ax6k zTYQEzY>v%4XmaulK|Rj=wgutw(B|%deOA&IFN*T4vs+p4`q-wr18R*XQb+2E^CdK7 zn$}M4xJ5qSwRA&1z8LX|>&eQGs}Fnm-^6=R+!hdBS}fEH6JbIi>LcuC?Y--_J;H8a zsVXw)I>}vypLWWvKnC5_(goK4T+pBhv$bz z^-sfFFsFf5cbkyi*!Pv^9MppRe^J z@}H`8+4X#AN?W?Et2i{tX$3dUbKSL(&F9|_3qmTyLAoI0mp#dSj94-dO$CA8f`mvfKce$3p`C< zxkp8N^UN=A%?~Mj7ED{!1KAVgy*9LBaCja8lesRdJ55Bw?{C}TcfsHzj{&O{V5r1eVm z_vepYibGRYR(?0%czB&FgCp;g;6q*hc4@u)*QW0Io;>*-ERz$LPgaSf8WEUKOw%@a zu)lx)%WUpcSq%#3&Y1os~I}3gC^7ZB@92_A1d3-YEXvRu>4C`hd;*8 z!Q~cZbh-t3TgJVqGUc!bL@^)PS(}u8+iPBPRZ@0yro2ybcH9!vR>5>T>LDfY3#8sS zZ*^1O#T+(RoZ+`|M^-j|BYu#0%9Y(9E$1pL5xI`OhO93>j)oKe3C|ISjPqli5PcxX z(@G0y@Jc(uP=uy%!EPOLTpM5kEjJ7^EOzm6Y6lYkPVrY|K6=DC208I->5tLN)awh* zt5)kFi%ci?C~xhjs7$4-S0L7!*D+&g-Et435=R~SC&nzb)R8WSr-^ruymb34?6ZCC zS36IItWHyC=af)!aQy-p>H(?y!)@C>C#TCXH{+GZR*gf7d6?J-`e66luca{9|0}K~*~wE&3{wOq3e!z_+5eaB>m=Nl^2v`BO=#JPDX)1~JMg2jyqxeon>3>@GB@Ap zRZzh8!&3X>o$EXV-&kO&Kpe^=Gun`|-&VRSHwm^7K)=0Eh^hneaj)lqrCl!V#YjhY zM*}W_FHO{+`C<#Xm!MJKvlDgH%G%NxJ2|ww-X9cyn7eY1ovFc_PdvUV%9`!!y}M_s z-^TO(rMnb%xt-*_2w;BILImo=y;oEM1o=VsvT155t~O$*}z@jrv=D zK>$G*D8g-F7U)|!p*s}8xc?o8_`tu%TSQ-(`fZ}IeCWp1;%dYu6zxNF20oZ>i8Fosj=QotmF z^|z|hxZULfC{$*lsj;yoj;*#PrM%*f(JM>#Z!Eq2fmV9aC!D>xYuUG}Y9`TIUpk4` z3vo;cCYbH30f@k(4umpp<)&_DNqm|ES##yt#XY*ae0CX|e?k@$AiWofrZHBkN%2a? zS`U+*v9I!L9c~!$H^;>pMb>#N2gEE(ET;`EUVW{3!J_gn-Bbno2ya}A8#{D38v9H4 z2pn0nGgiA{A2!ad$wLn8QUlnS6u{mo7pf zHCJE}F7B%ewC z6=itA_1v=)R2*8uc@fHGEM=DSq`odW?I%*N%)f9r?H*6|jKR{m@$>D!{dA^lF>6Is zwr1rWfZ39dngnF2w8x7(Ga$lt-a^O*>O3s9Lx|1)hmW*OdCh=;-3*!ikhpzQMl@p} z;AWZPyV<6MXrH@zrj%)-+`0Aadn0f^XQ7x{ALh06;N3ZjmN5iTXJfM4vzcCP|6`Wm zE+)-oCEFZu%eku7A2nUnS&!qG*pHKO>$W=L&VD!o_6(C4uk~~DrSH=KY=J?(l4YXb z^RAs~V98$?=K|AHpDe=$Y+A?@Rj`w;y1FK3$gxR0^vk!ZH=j#EAVc3$YH(5_C*cIt}HN z=~d3(bTT)T|B1f=Z@9dA>HPgtO|H`vssbSkKyD$|`SK`?Cl3U`dZRM6QnPAVf?GO4 zgPfZxObUA2@R5jwO6;|)HtB5k(^Rb7bz{JmsKMbjvxxV69ah$3=+ z_?GB%p--)32*F{C|9BcqZh%z$rTa9C-5%clJ`PJYY?@L8mGR5Co^(z00zt2EVjIXH=Dn1$=Xpi3%a zjwW5__-_CK|FzFv_7fU%hdLne*$qJfc^Ip9hFLRq+wP=2jKP>QpDQrgp6CxMQODwJ z&9v`l_FW1F7-yLa6-n{xp~bLhvkCvZGAP9m=*^im?jyVB>rM^nPQp!f$a{2}-q^Qv zTT7pb*;uQMSEu*9F}qMLlhRkqf%DL#G8*^ZC}bX(fBgFl<34j?KeI2kd{@q}c9ciQ z4aY9COeG#nXWw!b&Fk5M*(uX!o5hnqF91ueaPWWGvw{y263a?G`~KJVtZ=5BPmQ^% zkBkqj{@|3Ua`T}}{oA)>fkTj-4WBiEq8N3BJW8)_(`fCfWUoC|c3i9{rvxO{jqbl7 ztnPj3+YiR%@k?FB*AA68s`x=R={NJhx|VcjHYMk;(mmGwUq7srfg-Jt5p99yS_k>>+`sp){`ZF8 zV#`w|nx-sfF6mD#T@e0%YW5fwuXE4%P&s-DV{6B0v{YZ^41$qW6Lv?erom>p>3giM zVXn)oxy1fQ-|jj)HlC<&37zp82p?Ek|8(hv!3nfCcvt8R%7u_KZ8iIZ(#*Gxx#Ydy zB61?4H-Qsk`&f~`JBeegugA)K!iUTj)7!JRUFoE+N}4@*d-A#F5Af^H9ZUX$8QFm| zhH`i2Bne895|U#4jjh`!9r>c|T8#s3ax6mmHinXwGvlIz(p+MA4-J-BMbj=_9CjjT zoi9p6OO<=hP{zx>;kKfI|J11*@%hhJAg@4$ZNI>l-$neHw~QWE?0gTTNuty7m*Bnx z4RCuHPPBt!Q=Ro@cR&97<8yW_Jz44x$2zQz)-6Rayywzm~RE0I`U zc`zAh=ZO)mnH|J{rLrNUC&r}g)D!99N-kPLVE)JP#-v;1D-`oQ;Dy)CX~Q%3l1{9W^Zr%jXh^p_C7OMlUKa3D;?IyHptqM`OAlE$@3e)zKeUDvVJTzi6r}9?ApEP zTw7~iAsk>P{Lk6*cPqGo{?DXV#vk^r%{0s>#F{*Hhoazi_>L@&AzS*()oM+-u$Qi%GfTg=pa1V0$L= zt>JF;<*Owd%{(g&?|@dfA*}Pk_!m>keWeyY0VQv_Jn*+UP(ehM;)ZBm+7slEyBpb@6tzW+gdO=RPGO`rlZ9{B z=bD{I^L{!yWuAVyX5T32nZfE_^t}bfS!^W;7EM&bBxv5GaNnn7K!~B%hFC?zn%QAC z9T)oadTtf&X9O__$lp{cH%7f>B#pl3(Oqfq2vq_277o}^v?^`jvg7J!7$dN^7Sr}K zLqLPW@};_LAaIQ85z1q{(&2z`+T)6IMjjZ>I{A*0L-B7 z=1XK@?3s}*DW#N|kuSe_3H9eu2c1V|DE~a%kd$oA;sgDNkLO`a=l}Lg-5O~a>gNO$ zy-z9L<|_~x)kOo+L?z0fK7qfpa6l$M5Y=$jB8WwHMabXiTD)sZGa+rKQz|L?=sR3G z6L4VK&GlDszkObN!uQBpR%>)Oc2ziA;fK;vP8AwC1LNENeB*n`-&^}Py=k}^`78Ihgv^7|C+OmgTw7Xf01IyI@5s+&i zJZD4_+F~H{cVu54t5EczpZPtbySNtooQWYVyFkj}BK_kpm*PnU%?&)X^CEJojVJPm zADKkdi2xkfp%;OW75^q9lCk5iY3`}@a{b&tn5di}xej)4BCTE#;~~T)6y3^*MT2Dv z{0cpgT+Kyu>!$Q8Vj=n;wI%z8_->2O>GycMKIrN|aVCMuu&1S)yu`(QXq{(=| zsI8&tp*g_WJwImXWow)GoU4xfxn5)lPRG}hNu;$b?66SPCVb!sD8p(*UleY4a?viV!I$?Zng|cs%ZSA}?1s zSFEK}=La_V_uD_%jDOtrO3cv8%3PtHUQpKw?nthP?!-r{;+ji5GgOso(MEhYTTuC4 zewAwXl~`p4+Zlabvrcat??ol8POWG@l@7%DX^NY6Lf%+KKGJE0o*8Q-H7If=wp4!i zPDkzeMT#iG(Xn?R%?;D1!>VY!z{GpCY^i}f?ZQq%U+1#`Ull!#m zkhFD%%-AV-mD1=^Y`?(QlRtVM|v<6G+T44PQvlTF5{vxhlmrP`!zyIBjUjTDQ)X#pWQ|KyOc=7}TT-~Al!*tI*b9@`(=Z>h&y zPdom^n0?fi}5Bfi#*j-U)Tx1Pb1ys6ntQ0?e3W7VlW?n_Vkv4;!=~|nTli9+~ z&Qjx+-*R@TrLJh9b6!^rgs4PNLkKxSAe<>7iOoY(Bz%ZaA^RNbliOq?ZpQR*MOn@M ztb9>2@?{Hh`%OD;0(dfg;kN+oy9CkG5D@>?urnQ=AxmRQ3w7Xir3tws6 z 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 Date: Thu, 23 Jun 2022 14:35:15 +0800 Subject: [PATCH 05/26] app_match_rt-thread/sx1278/ sx1278 1.Kconfig is ok. 2.gcc is ok. --- .../app_match_rt-thread/sx1278/Kconfig | 38 +++++++++++++++++++ .../app_match_rt-thread/sx1278/SConscript | 7 ++++ .../sx1278/sx1278_source/SConscript | 19 ++++++++++ 3 files changed, 64 insertions(+) create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/Kconfig create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/SConscript create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/SConscript diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/Kconfig b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/Kconfig new file mode 100644 index 000000000..adbeee018 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/Kconfig @@ -0,0 +1,38 @@ + +menuconfig DRV_USING_SX1278 + bool "sx1278 driver" + default n + help + note: + lora connection + +if DRV_USING_SX1278 + config SX1278_SPI_DEVICE_NAME + string "SX1278 Lora Device Spi Name" + default "spi20" + config SX1278_DEVICE_NAME + string "SX1278 Lora Device Name" + default "spi2_lora" + config SX1278_DEVICE_RST_PIN + int + default 1 + config SX1278_DEVICE_DIO0_PIN + int + default 1 + config SX1278_DEVICE_DIO1_PIN + int + default 1 + config SX1278_DEVICE_DIO2_PIN + int + default 1 + config SX1278_DEVICE_DIO3_PIN + int + default 1 + config SX1278_DEVICE_DIO4_PIN + int + default 1 + config SX1278_DEVICE_DIO5_PIN + int + default 1 +endif + diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/SConscript b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/SConscript new file mode 100644 index 000000000..439998036 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/SConscript @@ -0,0 +1,7 @@ +Import('RTT_ROOT') +from building import * + +cwd = GetCurrentDir() +objs = SConscript(os.path.join(cwd, 'sx1278_source', 'SConscript')) + +Return('objs') diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/SConscript b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/SConscript new file mode 100644 index 000000000..614ddae45 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/SConscript @@ -0,0 +1,19 @@ +import os +from building import * +Import('RTT_ROOT') +Import('rtconfig') +cwd = GetCurrentDir() +DEPENDS = ["DRV_USING_SX1278"] + +SOURCES = [] +if GetDepend(['DRV_USING_SX1278']): + SOURCES += ['drv_sx1278.c'] + SOURCES += Glob('src/radio/sx1276*.c') + SOURCES += Glob('src/radio/radio.c') + SOURCES += Glob('port/*.c') + +path = [cwd + '/inc'] +path += ['src/radio'] +objs = DefineGroup('sx1278', src = SOURCES, depend = DEPENDS,CPPPATH = path) + +Return("objs") \ No newline at end of file From 2f4e67ae87dcbc63dfbbdd06ae94ac9fed5365b6 Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 14:37:37 +0800 Subject: [PATCH 06/26] app_match_rt-thread/sx1278/sx1278 1.transplant sx1278 source code 2.adapt for rtthread --- .../sx1278_source/inc/spi_lora_sx12xx.h | 96 ++ .../sx1278/sx1278_source/inc/type.h | 33 + .../sx1278_source/port/spi_sx1278_init.c | 17 + .../sx1278/sx1278_source/src/Makefile | 10 + .../sx1278/sx1278_source/src/radio/platform.h | 88 + .../sx1278/sx1278_source/src/radio/radio.c | 64 + .../sx1278/sx1278_source/src/radio/radio.h | 66 + .../sx1278_source/src/radio/sx1276-Fsk.c | 606 +++++++ .../sx1278_source/src/radio/sx1276-Fsk.h | 1460 +++++++++++++++++ .../sx1278_source/src/radio/sx1276-FskMisc.c | 521 ++++++ .../sx1278_source/src/radio/sx1276-FskMisc.h | 241 +++ .../sx1278_source/src/radio/sx1276-Hal.h | 162 ++ .../sx1278_source/src/radio/sx1276-LoRa.c | 797 +++++++++ .../sx1278_source/src/radio/sx1276-LoRa.h | 922 +++++++++++ .../sx1278_source/src/radio/sx1276-LoRaMisc.c | 411 +++++ .../sx1278_source/src/radio/sx1276-LoRaMisc.h | 315 ++++ .../sx1278/sx1278_source/src/radio/sx1276.c | 304 ++++ .../sx1278/sx1278_source/src/radio/sx1276.h | 157 ++ 18 files changed, 6270 insertions(+) create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/inc/spi_lora_sx12xx.h create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/inc/type.h create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/port/spi_sx1278_init.c create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/Makefile create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/platform.h create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/radio.c create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/radio.h create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Fsk.c create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Fsk.h create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-FskMisc.c create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-FskMisc.h create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Hal.h create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRa.c create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRa.h create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRaMisc.c create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRaMisc.h create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276.c create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276.h diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/inc/spi_lora_sx12xx.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/inc/spi_lora_sx12xx.h new file mode 100644 index 000000000..25e647f7e --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/inc/spi_lora_sx12xx.h @@ -0,0 +1,96 @@ +/* + * Original Copyright (c) 2006-2018, RT-Thread Development Team + * Modified Copyright (c) 2020 AIIT XUOS Lab + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + + * http://www.apache.org/licenses/LICENSE-2.0 + + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Change Logs: + * Date Author Notes + * 2019-02-25 XiaojieFan the first version + */ + +/* + * Modified by: AIIT XUOS Lab + * Modified date: 2020-09-01 + * Description: + */ +/************************************************* +File name: spi_lora_sx12xx.h +Description: support aiit board configure and register function +History: +1. Date: 2021-04-25 +Author: AIIT XUOS Lab +Modification: +1. replace original macro and basic date type with AIIT XUOS Lab's own defination +*************************************************/ + + +#ifndef __SPI_LORA_SX12XX_H_ +#define __SPI_LORA_SX12XX_H_ + +#include +#include +#include "type.h" + +/*! + * \brief Gets the SX1272 DIO0 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +rt_uint8_t SX1276ReadDio0(void); + +/*! + * \brief Gets the SX1272 DIO1 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +rt_uint8_t SX1276ReadDio1(void); + +/*! + * \brief Gets the SX1272 DIO2 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +rt_uint8_t SX1276ReadDio2(void); + +/*! + * \brief Gets the SX1272 DIO3 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +rt_uint8_t SX1276ReadDio3(void); + +/*! + * \brief Gets the SX1272 DIO4 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +rt_uint8_t SX1276ReadDio4(void); + +/*! + * \brief Gets the SX1272 DIO5 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +rt_uint8_t SX1276ReadDio5(void); + +void SX1276Write(rt_uint8_t addr, rt_uint8_t data); +void SX1276Read(rt_uint8_t addr, rt_uint8_t *data); +void SX1276WriteBuffer(rt_uint8_t addr, rt_uint8_t *buffer, rt_uint8_t size); +void SX1276ReadBuffer(rt_uint8_t addr, rt_uint8_t *buffer, rt_uint8_t size); +void SX1276WriteFifo(rt_uint8_t *buffer, rt_uint8_t size); +void SX1276ReadFifo(rt_uint8_t *buffer, rt_uint8_t size); +void SX1276SetReset(rt_uint8_t state); +rt_uint8_t SX1276_Spi_Check(void); +void SX1276WriteRxTx(rt_uint8_t txEnable); +#endif \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/inc/type.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/inc/type.h new file mode 100644 index 000000000..eb63cdf41 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/inc/type.h @@ -0,0 +1,33 @@ +/* +File Name : type.h +Author : Yichip +Version : V1.0 +Date : 2018/05/25 +Description : Data type definition. +*/ + +#ifndef __TYPE_H__ +#define __TYPE_H__ + +#if defined (__CC_ARM) || defined ( __ICCARM__ ) +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +typedef unsigned long long uint64_t; +typedef unsigned char byte; +typedef unsigned short word; + +typedef signed char int8_t; +typedef signed short int16_t; +typedef signed int int32_t; +typedef signed long long int64_t; +#else +#include "stdio.h" +typedef unsigned char byte; +typedef unsigned short word; +#endif + + + +#endif /*__TYPE_H__*/ + diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/port/spi_sx1278_init.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/port/spi_sx1278_init.c new file mode 100644 index 000000000..fe9e7d65f --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/port/spi_sx1278_init.c @@ -0,0 +1,17 @@ +#include + +#include "drv_spi.h" +#include +#include +#include +#include +#include +#include +#include + +static int sx12xx_spi_device_init(void) +{ + __HAL_RCC_GPIOC_CLK_ENABLE(); + rt_hw_spi_device_attach("spi2","spi20",GPIOC,GPIO_PIN_6); +} +INIT_APP_EXPORT(sx12xx_spi_device_init); \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/Makefile b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/Makefile new file mode 100644 index 000000000..ee5f169e2 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/Makefile @@ -0,0 +1,10 @@ + +SRC_FILES += radio/radio.c \ + radio/sx1276-Fsk.c \ + radio/sx1276-FskMisc.c \ + radio/sx1276-LoRa.c \ + radio/sx1276-LoRaMisc.c \ + radio/sx1276.c + + +include $(KERNEL_ROOT)/compiler.mk diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/platform.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/platform.h new file mode 100644 index 000000000..aa6a36171 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/platform.h @@ -0,0 +1,88 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file platform.h + * \brief + * + * \version 1.0 + * \date Nov 21 2012 + * \author Miguel Luis + */ +#ifndef __PLATFORM_H__ +#define __PLATFORM_H__ + +#ifndef __GNUC__ +#define inline +#endif + +/*! + * Platform definition + */ +#define Bleeper 3 +#define SX1243ska 2 +#define SX12xxEiger 1 +#define SX12000DVK 0 + +/*! + * Platform choice. Please uncoment the PLATFORM define and choose your platform + * or add/change the PLATFORM definition on the compiler Defines option + */ +#define PLATFORM SX12xxEiger + +#if( PLATFORM == SX12xxEiger ) +/*! + * Radio choice. Please uncomment the wanted radio and comment the others + * or add/change wanted radio definition on the compiler Defines option + */ +//#define USE_SX1232_RADIO +//#define USE_SX1272_RADIO +#define USE_SX1276_RADIO +//#define USE_SX1243_RADIO + +/*! + * Module choice. There are three existing module with the SX1276. + * Please set the connected module to the value 1 and set the others to 0 + */ +#ifdef USE_SX1276_RADIO +#define MODULE_SX1276RF1IAS 0 +#define MODULE_SX1276RF1JAS 0 +#define MODULE_SX1276RF1KAS 1 +#endif + + //#include "sx12xxEiger/sx12xxEiger.h" + #include "spi_lora_sx12xx.h" + #define USE_UART 0 + +#elif( PLATFORM == SX12000DVK ) +/*! + * Radio choice. Please uncomment the wanted radio and comment the others + * or add/change wanted radio definition on the compiler Defines option + */ +//#define USE_SX1232_RADIO +#define USE_SX1272_RADIO +//#define USE_SX1276_RADIO +//#define USE_SX1243_RADIO + + #include "sx1200dvk/sx1200dvk.h" + +#elif( PLATFORM == SX1243ska ) + +#elif( PLATFORM == Bleeper ) + #define USE_SX1272_RADIO + + #include "bleeper/bleeper.h" + #define USE_UART 0 + +#else + #error "Missing define: Platform (ie. SX12xxEiger)" +#endif + +#endif // __PLATFORM_H__ diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/radio.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/radio.c new file mode 100644 index 000000000..fb413d915 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/radio.c @@ -0,0 +1,64 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file radio.c + * \brief Generic radio driver ( radio abstraction ) + * + * \version 2.0.0 + * \date Nov 21 2012 + * \author Miguel Luis + * + * Last modified by Gregory Cristian on Apr 25 2013 + */ +#include "platform.h" + +#include "radio.h" + +#if defined( USE_SX1232_RADIO ) + #include "sx1232.h" +#elif defined( USE_SX1272_RADIO ) + #include "sx1272.h" +#elif defined( USE_SX1276_RADIO ) + #include "sx1276.h" +#else + #error "Missing define: USE_XXXXXX_RADIO (ie. USE_SX1272_RADIO)" +#endif + +tRadioDriver RadioDriver; + +tRadioDriver* RadioDriverInit( void ) +{ +#if defined( USE_SX1232_RADIO ) + RadioDriver.Init = SX1232Init; + RadioDriver.Reset = SX1232Reset; + RadioDriver.StartRx = SX1232StartRx; + RadioDriver.GetRxPacket = SX1232GetRxPacket; + RadioDriver.SetTxPacket = SX1232SetTxPacket; + RadioDriver.Process = SX1232Process; +#elif defined( USE_SX1272_RADIO ) + RadioDriver.Init = SX1272Init; + RadioDriver.Reset = SX1272Reset; + RadioDriver.StartRx = SX1272StartRx; + RadioDriver.GetRxPacket = SX1272GetRxPacket; + RadioDriver.SetTxPacket = SX1272SetTxPacket; + RadioDriver.Process = SX1272Process; +#elif defined( USE_SX1276_RADIO ) + RadioDriver.Init = SX1276Init; + RadioDriver.Reset = SX1276Reset; + RadioDriver.StartRx = SX1276StartRx; + RadioDriver.GetRxPacket = SX1276GetRxPacket; + RadioDriver.SetTxPacket = SX1276SetTxPacket; + RadioDriver.Process = SX1276Process; +#else + #error "Missing define: USE_XXXXXX_RADIO (ie. USE_SX1272_RADIO)" +#endif + return &RadioDriver; +} diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/radio.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/radio.h new file mode 100644 index 000000000..65b1a0912 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/radio.h @@ -0,0 +1,66 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file radio.h + * \brief Generic radio driver ( radio abstraction ) + * + * \version 2.0.B2 + * \date Nov 21 2012 + * \author Miguel Luis + * + * Last modified by Gregory Cristian on Apr 25 2013 + */ +#ifndef __RADIO_H__ +#define __RADIO_H__ + +/*! + * SX1272 and SX1276 General parameters definition + */ +#define LORA 1 // [0: OFF, 1: ON] + +/*! + * RF process function return codes + */ +typedef enum +{ + RF_IDLE, + RF_BUSY, + RF_RX_DONE, + RF_RX_TIMEOUT, + RF_TX_DONE, + RF_TX_TIMEOUT, + RF_LEN_ERROR, + RF_CHANNEL_EMPTY, + RF_CHANNEL_ACTIVITY_DETECTED, +}tRFProcessReturnCodes; + +/*! + * Radio driver structure defining the different function pointers + */ +typedef struct sRadioDriver +{ + void ( *Init )( void ); + void ( *Reset )( void ); + void ( *StartRx )( void ); + void ( *GetRxPacket )( void *buffer, uint16_t *size ); + void ( *SetTxPacket )( const void *buffer, uint16_t size ); + uint32_t ( *Process )( void ); +}tRadioDriver; + +/*! + * \brief Initializes the RadioDriver structure with specific radio + * functions. + * + * \retval radioDriver Pointer to the radio driver variable + */ +tRadioDriver* RadioDriverInit( void ); + +#endif // __RADIO_H__ diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Fsk.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Fsk.c new file mode 100644 index 000000000..29906c0fe --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Fsk.c @@ -0,0 +1,606 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file sx1276.c + * \brief SX1276 RF chip driver + * + * \version 2.0.0 + * \date May 6 2013 + * \author Gregory Cristian + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +#include +#include + +#include "platform.h" + +#if defined( USE_SX1276_RADIO ) + +#include "radio.h" + +#include "sx1276-Hal.h" +#include "sx1276.h" + +#include "sx1276-FskMisc.h" +#include "sx1276-Fsk.h" + +// Default settings +tFskSettings FskSettings = +{ + 870000000, // RFFrequency + 9600, // Bitrate + 50000, // Fdev + 20, // Power + 100000, // RxBw + 150000, // RxBwAfc + true, // CrcOn + true, // AfcOn + 255 // PayloadLength (set payload size to the maximum for variable mode, else set the exact payload length) +}; + +/*! + * SX1276 FSK registers variable + */ +tSX1276* SX1276; + +/*! + * Local RF buffer for communication support + */ +static uint8_t RFBuffer[RF_BUFFER_SIZE]; + +/*! + * Chunk size of data write in buffer + */ +static uint8_t DataChunkSize = 32; + + +/*! + * RF state machine variable + */ +static uint8_t RFState = RF_STATE_IDLE; + +/*! + * Rx management support variables + */ + +/*! + * PacketTimeout holds the RF packet timeout + * SyncSize = [0..8] + * VariableSize = [0;1] + * AddressSize = [0;1] + * PayloadSize = [0..RF_BUFFER_SIZE] + * CrcSize = [0;2] + * PacketTimeout = ( ( 8 * ( VariableSize + AddressSize + PayloadSize + CrcSize ) / BR ) * 1000.0 ) + 1 + * Computed timeout is in miliseconds + */ +static uint32_t PacketTimeout; + +/*! + * Preamble2SyncTimeout + * Preamble2SyncTimeout = ( ( 8 * ( PremableSize + SyncSize ) / RFBitrate ) * 1000.0 ) + 1 + * Computed timeout is in miliseconds + */ +static uint32_t Preamble2SyncTimeout; + +static bool PreambleDetected = false; +static bool SyncWordDetected = false; +static bool PacketDetected = false; +static uint16_t RxPacketSize = 0; +static uint8_t RxBytesRead = 0; +static uint8_t TxBytesSent = 0; +static double RxPacketRssiValue; +static uint32_t RxPacketAfcValue; +static uint8_t RxGain = 1; +static uint32_t RxTimeoutTimer = 0; +static uint32_t Preamble2SyncTimer = 0; + +/*! + * Tx management support variables + */ +static uint16_t TxPacketSize = 0; +static uint32_t TxTimeoutTimer = 0; + +void SX1276FskInit( void ) +{ + RFState = RF_STATE_IDLE; + + SX1276FskSetDefaults( ); + + SX1276ReadBuffer( REG_OPMODE, SX1276Regs + 1, 0x70 - 1 ); + + // Set the device in FSK mode and Sleep Mode + SX1276->RegOpMode = RF_OPMODE_MODULATIONTYPE_FSK | RF_OPMODE_SLEEP; + SX1276Write( REG_OPMODE, SX1276->RegOpMode ); + + SX1276->RegPaRamp = RF_PARAMP_MODULATIONSHAPING_01; + SX1276Write( REG_PARAMP, SX1276->RegPaRamp ); + + SX1276->RegLna = RF_LNA_GAIN_G1; + SX1276Write( REG_LNA, SX1276->RegLna ); + + if( FskSettings.AfcOn == true ) + { + SX1276->RegRxConfig = RF_RXCONFIG_RESTARTRXONCOLLISION_OFF | RF_RXCONFIG_AFCAUTO_ON | + RF_RXCONFIG_AGCAUTO_ON | RF_RXCONFIG_RXTRIGER_PREAMBLEDETECT; + } + else + { + SX1276->RegRxConfig = RF_RXCONFIG_RESTARTRXONCOLLISION_OFF | RF_RXCONFIG_AFCAUTO_OFF | + RF_RXCONFIG_AGCAUTO_ON | RF_RXCONFIG_RXTRIGER_PREAMBLEDETECT; + } + + SX1276->RegPreambleLsb = 8; + + SX1276->RegPreambleDetect = RF_PREAMBLEDETECT_DETECTOR_ON | RF_PREAMBLEDETECT_DETECTORSIZE_2 | + RF_PREAMBLEDETECT_DETECTORTOL_10; + + SX1276->RegRssiThresh = 0xFF; + + SX1276->RegSyncConfig = RF_SYNCCONFIG_AUTORESTARTRXMODE_WAITPLL_ON | RF_SYNCCONFIG_PREAMBLEPOLARITY_AA | + RF_SYNCCONFIG_SYNC_ON | + RF_SYNCCONFIG_SYNCSIZE_4; + + SX1276->RegSyncValue1 = 0x69; + SX1276->RegSyncValue2 = 0x81; + SX1276->RegSyncValue3 = 0x7E; + SX1276->RegSyncValue4 = 0x96; + + SX1276->RegPacketConfig1 = RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE | RF_PACKETCONFIG1_DCFREE_OFF | + ( FskSettings.CrcOn << 4 ) | RF_PACKETCONFIG1_CRCAUTOCLEAR_ON | + RF_PACKETCONFIG1_ADDRSFILTERING_OFF | RF_PACKETCONFIG1_CRCWHITENINGTYPE_CCITT; + SX1276FskGetPacketCrcOn( ); // Update CrcOn on FskSettings + + SX1276->RegPayloadLength = FskSettings.PayloadLength; + + // we can now update the registers with our configuration + SX1276WriteBuffer( REG_OPMODE, SX1276Regs + 1, 0x70 - 1 ); + + // then we need to set the RF settings + SX1276FskSetRFFrequency( FskSettings.RFFrequency ); + SX1276FskSetBitrate( FskSettings.Bitrate ); + SX1276FskSetFdev( FskSettings.Fdev ); + + SX1276FskSetDccBw( &SX1276->RegRxBw, 0, FskSettings.RxBw ); + SX1276FskSetDccBw( &SX1276->RegAfcBw, 0, FskSettings.RxBwAfc ); + SX1276FskSetRssiOffset( 0 ); + +#if( ( MODULE_SX1276RF1IAS == 1 ) || ( MODULE_SX1276RF1KAS == 1 ) ) + if( FskSettings.RFFrequency > 860000000 ) + { + SX1276FskSetPAOutput( RF_PACONFIG_PASELECT_RFO ); + SX1276FskSetPa20dBm( false ); + FskSettings.Power = 14; + SX1276FskSetRFPower( FskSettings.Power ); + } + else + { + SX1276FskSetPAOutput( RF_PACONFIG_PASELECT_PABOOST ); + SX1276FskSetPa20dBm( true ); + FskSettings.Power = 20; + SX1276FskSetRFPower( FskSettings.Power ); + } +#elif( MODULE_SX1276RF1JAS == 1 ) + if( FskSettings.RFFrequency > 860000000 ) + { + SX1276FskSetPAOutput( RF_PACONFIG_PASELECT_PABOOST ); + SX1276FskSetPa20dBm( true ); + FskSettings.Power = 20; + SX1276FskSetRFPower( FskSettings.Power ); + } + else + { + SX1276FskSetPAOutput( RF_PACONFIG_PASELECT_RFO ); + SX1276FskSetPa20dBm( false ); + FskSettings.Power = 14; + SX1276FskSetRFPower( FskSettings.Power ); + } +#endif + + SX1276FskSetOpMode( RF_OPMODE_STANDBY ); + + // Calibrate the HF + SX1276FskRxCalibrate( ); +} + +void SX1276FskSetDefaults( void ) +{ + // REMARK: See SX1276 datasheet for modified default values. + + SX1276Read( REG_VERSION, &SX1276->RegVersion ); +} + +void SX1276FskSetOpMode( uint8_t opMode ) +{ + static uint8_t opModePrev = RF_OPMODE_STANDBY; + static bool antennaSwitchTxOnPrev = true; + bool antennaSwitchTxOn = false; + + opModePrev = SX1276->RegOpMode & ~RF_OPMODE_MASK; + + if( opMode != opModePrev ) + { + if( opMode == RF_OPMODE_TRANSMITTER ) + { + antennaSwitchTxOn = true; + } + else + { + antennaSwitchTxOn = false; + } + if( antennaSwitchTxOn != antennaSwitchTxOnPrev ) + { + antennaSwitchTxOnPrev = antennaSwitchTxOn; + RXTX( antennaSwitchTxOn ); // Antenna switch control + } + SX1276->RegOpMode = ( SX1276->RegOpMode & RF_OPMODE_MASK ) | opMode; + + SX1276Write( REG_OPMODE, SX1276->RegOpMode ); + } +} + +uint8_t SX1276FskGetOpMode( void ) +{ + SX1276Read( REG_OPMODE, &SX1276->RegOpMode ); + + return SX1276->RegOpMode & ~RF_OPMODE_MASK; +} + +int32_t SX1276FskReadFei( void ) +{ + SX1276ReadBuffer( REG_FEIMSB, &SX1276->RegFeiMsb, 2 ); // Reads the FEI value + + return ( int32_t )( double )( ( ( uint16_t )SX1276->RegFeiMsb << 8 ) | ( uint16_t )SX1276->RegFeiLsb ) * ( double )FREQ_STEP; +} + +int32_t SX1276FskReadAfc( void ) +{ + SX1276ReadBuffer( REG_AFCMSB, &SX1276->RegAfcMsb, 2 ); // Reads the AFC value + return ( int32_t )( double )( ( ( uint16_t )SX1276->RegAfcMsb << 8 ) | ( uint16_t )SX1276->RegAfcLsb ) * ( double )FREQ_STEP; +} + +uint8_t SX1276FskReadRxGain( void ) +{ + SX1276Read( REG_LNA, &SX1276->RegLna ); + return( SX1276->RegLna >> 5 ) & 0x07; +} + +double SX1276FskReadRssi( void ) +{ + SX1276Read( REG_RSSIVALUE, &SX1276->RegRssiValue ); // Reads the RSSI value + + return -( double )( ( double )SX1276->RegRssiValue / 2.0 ); +} + +uint8_t SX1276FskGetPacketRxGain( void ) +{ + return RxGain; +} + +double SX1276FskGetPacketRssi( void ) +{ + return RxPacketRssiValue; +} + +uint32_t SX1276FskGetPacketAfc( void ) +{ + return RxPacketAfcValue; +} + +void SX1276FskStartRx( void ) +{ + SX1276FskSetRFState( RF_STATE_RX_INIT ); +} + +void SX1276FskGetRxPacket( void *buffer, uint16_t *size ) +{ + *size = RxPacketSize; + RxPacketSize = 0; + memcpy( ( void * )buffer, ( void * )RFBuffer, ( size_t )*size ); +} + +void SX1276FskSetTxPacket( const void *buffer, uint16_t size ) +{ + TxPacketSize = size; + memcpy( ( void * )RFBuffer, buffer, ( size_t )TxPacketSize ); + + RFState = RF_STATE_TX_INIT; +} + +// Remark: SX1276 must be fully initialized before calling this function +uint16_t SX1276FskGetPacketPayloadSize( void ) +{ + uint16_t syncSize; + uint16_t variableSize; + uint16_t addressSize; + uint16_t payloadSize; + uint16_t crcSize; + + syncSize = ( SX1276->RegSyncConfig & 0x07 ) + 1; + variableSize = ( ( SX1276->RegPacketConfig1 & 0x80 ) == 0x80 ) ? 1 : 0; + addressSize = ( ( SX1276->RegPacketConfig1 & 0x06 ) != 0x00 ) ? 1 : 0; + payloadSize = SX1276->RegPayloadLength; + crcSize = ( ( SX1276->RegPacketConfig1 & 0x10 ) == 0x10 ) ? 2 : 0; + + return syncSize + variableSize + addressSize + payloadSize + crcSize; +} + +// Remark: SX1276 must be fully initialized before calling this function +uint16_t SX1276FskGetPacketHeaderSize( void ) +{ + uint16_t preambleSize; + uint16_t syncSize; + + preambleSize = ( ( uint16_t )SX1276->RegPreambleMsb << 8 ) | ( uint16_t )SX1276->RegPreambleLsb; + syncSize = ( SX1276->RegSyncConfig & 0x07 ) + 1; + + return preambleSize + syncSize; +} + +uint8_t SX1276FskGetRFState( void ) +{ + return RFState; +} + +void SX1276FskSetRFState( uint8_t state ) +{ + RFState = state; +} + +uint32_t SX1276FskProcess( void ) +{ + uint32_t result = RF_BUSY; + + switch( RFState ) + { + case RF_STATE_IDLE: + break; + // Rx management + case RF_STATE_RX_INIT: + // DIO mapping setup + if( ( SX1276->RegPacketConfig1 & RF_PACKETCONFIG1_CRC_ON ) == RF_PACKETCONFIG1_CRC_ON ) + { + // CrcOk, FifoLevel, SyncAddr, FifoEmpty + SX1276->RegDioMapping1 = RF_DIOMAPPING1_DIO0_01 | RF_DIOMAPPING1_DIO1_00 | RF_DIOMAPPING1_DIO2_11 | RF_DIOMAPPING1_DIO3_00; + } + else + { + // PayloadReady, FifoLevel, SyncAddr, FifoEmpty + SX1276->RegDioMapping1 = RF_DIOMAPPING1_DIO0_00 | RF_DIOMAPPING1_DIO1_00 | RF_DIOMAPPING1_DIO2_11 | RF_DIOMAPPING1_DIO3_00; + } + // Preamble, Data + SX1276->RegDioMapping2 = RF_DIOMAPPING2_DIO4_11 | RF_DIOMAPPING2_DIO5_10 | RF_DIOMAPPING2_MAP_PREAMBLEDETECT; + SX1276WriteBuffer( REG_DIOMAPPING1, &SX1276->RegDioMapping1, 2 ); + + SX1276FskSetOpMode( RF_OPMODE_RECEIVER ); + + memset( RFBuffer, 0, ( size_t )RF_BUFFER_SIZE ); + + PacketTimeout = ( uint16_t )( round( ( 8.0 * ( ( double )SX1276FskGetPacketPayloadSize( ) ) / ( double )FskSettings.Bitrate ) * 1000.0 ) + 1.0 ); + PacketTimeout = PacketTimeout + ( PacketTimeout >> 1 ); // Set the Packet timeout as 1.5 times the full payload transmission time + + Preamble2SyncTimeout = PacketTimeout; + + Preamble2SyncTimer = RxTimeoutTimer = GET_TICK_COUNT( ); + + SX1276->RegFifoThresh = RF_FIFOTHRESH_TXSTARTCONDITION_FIFONOTEMPTY | 0x20; // 32 bytes of data + SX1276Write( REG_FIFOTHRESH, SX1276->RegFifoThresh ); + + PreambleDetected = false; + SyncWordDetected = false; + PacketDetected = false; + RxBytesRead = 0; + RxPacketSize = 0; + RFState = RF_STATE_RX_SYNC; + break; + case RF_STATE_RX_SYNC: + if( ( DIO4 == 1 ) && ( PreambleDetected == false ) )// Preamble + { + PreambleDetected = true; + Preamble2SyncTimer = GET_TICK_COUNT( ); + } + if( ( DIO2 == 1 ) && ( PreambleDetected == true ) && ( SyncWordDetected == false ) ) // SyncAddr + { + SyncWordDetected = true; + + RxPacketRssiValue = SX1276FskReadRssi( ); + + RxPacketAfcValue = SX1276FskReadAfc( ); + RxGain = SX1276FskReadRxGain( ); + + Preamble2SyncTimer = RxTimeoutTimer = GET_TICK_COUNT( ); + + RFState = RF_STATE_RX_RUNNING; + } + + // Preamble 2 SyncAddr timeout + if( ( SyncWordDetected == false ) && ( PreambleDetected == true ) && ( ( GET_TICK_COUNT( ) - Preamble2SyncTimer ) > Preamble2SyncTimeout ) ) + { + RFState = RF_STATE_RX_INIT; + SX1276Write( REG_RXCONFIG, SX1276->RegRxConfig | RF_RXCONFIG_RESTARTRXWITHPLLLOCK ); + } + if( ( SyncWordDetected == false ) && + ( PreambleDetected == false ) && + ( PacketDetected == false ) && + ( ( GET_TICK_COUNT( ) - RxTimeoutTimer ) > PacketTimeout ) ) + { + RFState = RF_STATE_RX_TIMEOUT; + } + break; + case RF_STATE_RX_RUNNING: + if( RxPacketSize > RF_BUFFER_SIZE_MAX ) + { + RFState = RF_STATE_RX_LEN_ERROR; + break; + } +#if 1 + if( DIO1 == 1 ) // FifoLevel + { + if( ( RxPacketSize == 0 ) && ( RxBytesRead == 0 ) ) // Read received packet size + { + if( ( SX1276->RegPacketConfig1 & RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE ) == RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE ) + { + SX1276ReadFifo( ( uint8_t* )&RxPacketSize, 1 ); + } + else + { + RxPacketSize = SX1276->RegPayloadLength; + } + } + + if( ( RxPacketSize - RxBytesRead ) > ( SX1276->RegFifoThresh & 0x3F ) ) + { + SX1276ReadFifo( ( RFBuffer + RxBytesRead ), ( SX1276->RegFifoThresh & 0x3F ) ); + RxBytesRead += ( SX1276->RegFifoThresh & 0x3F ); + } + else + { + SX1276ReadFifo( ( RFBuffer + RxBytesRead ), RxPacketSize - RxBytesRead ); + RxBytesRead += ( RxPacketSize - RxBytesRead ); + } + } +#endif + if( DIO0 == 1 ) // PayloadReady/CrcOk + { + RxTimeoutTimer = GET_TICK_COUNT( ); + if( ( RxPacketSize == 0 ) && ( RxBytesRead == 0 ) ) // Read received packet size + { + if( ( SX1276->RegPacketConfig1 & RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE ) == RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE ) + { + SX1276ReadFifo( ( uint8_t* )&RxPacketSize, 1 ); + } + else + { + RxPacketSize = SX1276->RegPayloadLength; + } + SX1276ReadFifo( RFBuffer + RxBytesRead, RxPacketSize - RxBytesRead ); + RxBytesRead += ( RxPacketSize - RxBytesRead ); + PacketDetected = true; + RFState = RF_STATE_RX_DONE; + } + else + { + SX1276ReadFifo( RFBuffer + RxBytesRead, RxPacketSize - RxBytesRead ); + RxBytesRead += ( RxPacketSize - RxBytesRead ); + PacketDetected = true; + RFState = RF_STATE_RX_DONE; + } + } + + // Packet timeout + if( ( PacketDetected == false ) && ( ( GET_TICK_COUNT( ) - RxTimeoutTimer ) > PacketTimeout ) ) + { + RFState = RF_STATE_RX_TIMEOUT; + } + break; + case RF_STATE_RX_DONE: + RxBytesRead = 0; + RFState = RF_STATE_RX_INIT; + result = RF_RX_DONE; + break; + case RF_STATE_RX_TIMEOUT: + RxBytesRead = 0; + RxPacketSize = 0; + SX1276Write( REG_RXCONFIG, SX1276->RegRxConfig | RF_RXCONFIG_RESTARTRXWITHPLLLOCK ); + RFState = RF_STATE_RX_INIT; + result = RF_RX_TIMEOUT; + break; + case RF_STATE_RX_LEN_ERROR: + RxBytesRead = 0; + RxPacketSize = 0; + SX1276Write( REG_RXCONFIG, SX1276->RegRxConfig | RF_RXCONFIG_RESTARTRXWITHPLLLOCK ); + RFState = RF_STATE_RX_INIT; + result = RF_LEN_ERROR; + break; + // Tx management + case RF_STATE_TX_INIT: + // Packet DIO mapping setup + // PacketSent, FifoLevel, FifoFull, TxReady + SX1276->RegDioMapping1 = RF_DIOMAPPING1_DIO0_00 | RF_DIOMAPPING1_DIO1_00 | RF_DIOMAPPING1_DIO2_00 | RF_DIOMAPPING1_DIO3_01; + // LowBat, Data + SX1276->RegDioMapping2 = RF_DIOMAPPING2_DIO4_00 | RF_DIOMAPPING2_DIO5_10; + SX1276WriteBuffer( REG_DIOMAPPING1, &SX1276->RegDioMapping1, 2 ); + + SX1276->RegFifoThresh = RF_FIFOTHRESH_TXSTARTCONDITION_FIFONOTEMPTY | 0x18; // 24 bytes of data + SX1276Write( REG_FIFOTHRESH, SX1276->RegFifoThresh ); + + SX1276FskSetOpMode( RF_OPMODE_TRANSMITTER ); + RFState = RF_STATE_TX_READY_WAIT; + TxBytesSent = 0; + break; + case RF_STATE_TX_READY_WAIT: + if( DIO3 == 1 ) // TxReady + { + if( ( SX1276->RegPacketConfig1 & RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE ) == RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE ) + { + SX1276WriteFifo( ( uint8_t* )&TxPacketSize, 1 ); + } + + if( ( TxPacketSize > 0 ) && ( TxPacketSize <= 64 ) ) + { + DataChunkSize = TxPacketSize; + } + else + { + DataChunkSize = 32; + } + + SX1276WriteFifo( RFBuffer, DataChunkSize ); + TxBytesSent += DataChunkSize; + TxTimeoutTimer = GET_TICK_COUNT( ); + RFState = RF_STATE_TX_RUNNING; + } + break; + + case RF_STATE_TX_RUNNING: + if( DIO1 == 0 ) // FifoLevel below thresold + { + if( ( TxPacketSize - TxBytesSent ) > DataChunkSize ) + { + SX1276WriteFifo( ( RFBuffer + TxBytesSent ), DataChunkSize ); + TxBytesSent += DataChunkSize; + } + else + { + // we write the last chunk of data + SX1276WriteFifo( RFBuffer + TxBytesSent, TxPacketSize - TxBytesSent ); + TxBytesSent += TxPacketSize - TxBytesSent; + } + } + + if( DIO0 == 1 ) // PacketSent + { + TxTimeoutTimer = GET_TICK_COUNT( ); + RFState = RF_STATE_TX_DONE; + SX1276FskSetOpMode( RF_OPMODE_STANDBY ); + } + + // Packet timeout + if( ( GET_TICK_COUNT( ) - TxTimeoutTimer ) > TICK_RATE_MS( 1000 ) ) + { + RFState = RF_STATE_TX_TIMEOUT; + } + break; + case RF_STATE_TX_DONE: + RFState = RF_STATE_IDLE; + result = RF_TX_DONE; + break; + case RF_STATE_TX_TIMEOUT: + RFState = RF_STATE_IDLE; + result = RF_TX_TIMEOUT; + break; + default: + break; + } + return result; +} + +#endif // USE_SX1276_RADIO diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Fsk.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Fsk.h new file mode 100644 index 000000000..a8a13c419 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Fsk.h @@ -0,0 +1,1460 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file sx1276-Fsk.h + * \brief SX1276 RF chip driver mode FSK + * + * \version 2.0.B2 + * \date May 6 2013 + * \author Gregory Cristian + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +#ifndef __SX1276_FSK_H__ +#define __SX1276_FSK_H__ + +/*! + * SX1276 FSK General parameters definition + */ + +typedef struct sFskSettings +{ + uint32_t RFFrequency; + uint32_t Bitrate; + uint32_t Fdev; + int8_t Power; + uint32_t RxBw; + uint32_t RxBwAfc; + bool CrcOn; + bool AfcOn; + uint8_t PayloadLength; +}tFskSettings; + +/*! + * RF packet definition + */ +#define RF_BUFFER_SIZE_MAX 256 +#define RF_BUFFER_SIZE 256 + +/*! + * RF state machine + */ +// FSK +typedef enum +{ + RF_STATE_IDLE, + RF_STATE_RX_INIT, + RF_STATE_RX_SYNC, + RF_STATE_RX_RUNNING, + RF_STATE_RX_DONE, + RF_STATE_RX_TIMEOUT, + RF_STATE_RX_LEN_ERROR, + RF_STATE_TX_INIT, + RF_STATE_TX_READY_WAIT, + RF_STATE_TX_RUNNING, + RF_STATE_TX_DONE, + RF_STATE_TX_TIMEOUT, +}tRFStates; + +/*! + * SX1276 definitions + */ +#define XTAL_FREQ 32000000 +#define FREQ_STEP 61.03515625 + +/*! + * SX1276 Internal registers Address + */ +#define REG_FIFO 0x00 +// Common settings +#define REG_OPMODE 0x01 +#define REG_BITRATEMSB 0x02 +#define REG_BITRATELSB 0x03 +#define REG_FDEVMSB 0x04 +#define REG_FDEVLSB 0x05 +#define REG_FRFMSB 0x06 +#define REG_FRFMID 0x07 +#define REG_FRFLSB 0x08 +// Tx settings +#define REG_PACONFIG 0x09 +#define REG_PARAMP 0x0A +#define REG_OCP 0x0B +// Rx settings +#define REG_LNA 0x0C +#define REG_RXCONFIG 0x0D +#define REG_RSSICONFIG 0x0E +#define REG_RSSICOLLISION 0x0F +#define REG_RSSITHRESH 0x10 +#define REG_RSSIVALUE 0x11 +#define REG_RXBW 0x12 +#define REG_AFCBW 0x13 +#define REG_OOKPEAK 0x14 +#define REG_OOKFIX 0x15 +#define REG_OOKAVG 0x16 +#define REG_RES17 0x17 +#define REG_RES18 0x18 +#define REG_RES19 0x19 +#define REG_AFCFEI 0x1A +#define REG_AFCMSB 0x1B +#define REG_AFCLSB 0x1C +#define REG_FEIMSB 0x1D +#define REG_FEILSB 0x1E +#define REG_PREAMBLEDETECT 0x1F +#define REG_RXTIMEOUT1 0x20 +#define REG_RXTIMEOUT2 0x21 +#define REG_RXTIMEOUT3 0x22 +#define REG_RXDELAY 0x23 +// Oscillator settings +#define REG_OSC 0x24 +// Packet handler settings +#define REG_PREAMBLEMSB 0x25 +#define REG_PREAMBLELSB 0x26 +#define REG_SYNCCONFIG 0x27 +#define REG_SYNCVALUE1 0x28 +#define REG_SYNCVALUE2 0x29 +#define REG_SYNCVALUE3 0x2A +#define REG_SYNCVALUE4 0x2B +#define REG_SYNCVALUE5 0x2C +#define REG_SYNCVALUE6 0x2D +#define REG_SYNCVALUE7 0x2E +#define REG_SYNCVALUE8 0x2F +#define REG_PACKETCONFIG1 0x30 +#define REG_PACKETCONFIG2 0x31 +#define REG_PAYLOADLENGTH 0x32 +#define REG_NODEADRS 0x33 +#define REG_BROADCASTADRS 0x34 +#define REG_FIFOTHRESH 0x35 +// SM settings +#define REG_SEQCONFIG1 0x36 +#define REG_SEQCONFIG2 0x37 +#define REG_TIMERRESOL 0x38 +#define REG_TIMER1COEF 0x39 +#define REG_TIMER2COEF 0x3A +// Service settings +#define REG_IMAGECAL 0x3B +#define REG_TEMP 0x3C +#define REG_LOWBAT 0x3D +// Status +#define REG_IRQFLAGS1 0x3E +#define REG_IRQFLAGS2 0x3F +// I/O settings +#define REG_DIOMAPPING1 0x40 +#define REG_DIOMAPPING2 0x41 +// Version +#define REG_VERSION 0x42 +// Additional settings +#define REG_PLLHOP 0x44 +#define REG_TCXO 0x4B +#define REG_PADAC 0x4D +#define REG_FORMERTEMP 0x5B +#define REG_BITRATEFRAC 0x5D +#define REG_AGCREF 0x61 +#define REG_AGCTHRESH1 0x62 +#define REG_AGCTHRESH2 0x63 +#define REG_AGCTHRESH3 0x64 + + +/*! + * SX1276 FSK bit control definition + */ + +/*! + * RegFifo + */ + +/*! + * RegOpMode + */ +#define RF_OPMODE_LONGRANGEMODE_MASK 0x7F +#define RF_OPMODE_LONGRANGEMODE_OFF 0x00 // Default +#define RF_OPMODE_LONGRANGEMODE_ON 0x80 + +#define RF_OPMODE_MODULATIONTYPE_MASK 0x9F +#define RF_OPMODE_MODULATIONTYPE_FSK 0x00 // Default +#define RF_OPMODE_MODULATIONTYPE_OOK 0x20 + +#define RF_OPMODE_FREQMODE_ACCESS_MASK 0xF7 +#define RF_OPMODE_FREQMODE_ACCESS_LF 0x08 // Default +#define RF_OPMODE_FREQMODE_ACCESS_HF 0x00 + +#define RF_OPMODE_MASK 0xF8 +#define RF_OPMODE_SLEEP 0x00 +#define RF_OPMODE_STANDBY 0x01 // Default +#define RF_OPMODE_SYNTHESIZER_TX 0x02 +#define RF_OPMODE_TRANSMITTER 0x03 +#define RF_OPMODE_SYNTHESIZER_RX 0x04 +#define RF_OPMODE_RECEIVER 0x05 + +/*! + * RegBitRate (bits/sec) + */ +#define RF_BITRATEMSB_1200_BPS 0x68 +#define RF_BITRATELSB_1200_BPS 0x2B +#define RF_BITRATEMSB_2400_BPS 0x34 +#define RF_BITRATELSB_2400_BPS 0x15 +#define RF_BITRATEMSB_4800_BPS 0x1A // Default +#define RF_BITRATELSB_4800_BPS 0x0B // Default +#define RF_BITRATEMSB_9600_BPS 0x0D +#define RF_BITRATELSB_9600_BPS 0x05 +#define RF_BITRATEMSB_15000_BPS 0x08 +#define RF_BITRATELSB_15000_BPS 0x55 +#define RF_BITRATEMSB_19200_BPS 0x06 +#define RF_BITRATELSB_19200_BPS 0x83 +#define RF_BITRATEMSB_38400_BPS 0x03 +#define RF_BITRATELSB_38400_BPS 0x41 +#define RF_BITRATEMSB_76800_BPS 0x01 +#define RF_BITRATELSB_76800_BPS 0xA1 +#define RF_BITRATEMSB_153600_BPS 0x00 +#define RF_BITRATELSB_153600_BPS 0xD0 +#define RF_BITRATEMSB_57600_BPS 0x02 +#define RF_BITRATELSB_57600_BPS 0x2C +#define RF_BITRATEMSB_115200_BPS 0x01 +#define RF_BITRATELSB_115200_BPS 0x16 +#define RF_BITRATEMSB_12500_BPS 0x0A +#define RF_BITRATELSB_12500_BPS 0x00 +#define RF_BITRATEMSB_25000_BPS 0x05 +#define RF_BITRATELSB_25000_BPS 0x00 +#define RF_BITRATEMSB_50000_BPS 0x02 +#define RF_BITRATELSB_50000_BPS 0x80 +#define RF_BITRATEMSB_100000_BPS 0x01 +#define RF_BITRATELSB_100000_BPS 0x40 +#define RF_BITRATEMSB_150000_BPS 0x00 +#define RF_BITRATELSB_150000_BPS 0xD5 +#define RF_BITRATEMSB_200000_BPS 0x00 +#define RF_BITRATELSB_200000_BPS 0xA0 +#define RF_BITRATEMSB_250000_BPS 0x00 +#define RF_BITRATELSB_250000_BPS 0x80 +#define RF_BITRATEMSB_32768_BPS 0x03 +#define RF_BITRATELSB_32768_BPS 0xD1 + +/*! + * RegFdev (Hz) + */ + +#define RF_FDEVMSB_BANDREG_MASK 0x3F +#define RF_FDEVMSB_BANDREG_AUTO 0x00 // Default +#define RF_FDEVMSB_BANDREG_DIV_BY_1 0x40 +#define RF_FDEVMSB_BANDREG_DIV_BY_2 0x80 +#define RF_FDEVMSB_BANDREG_DIV_BY_6 0xC0 + +#define RF_FDEVMSB_FDEV_MASK 0xC0 + +#define RF_FDEVMSB_2000_HZ 0x00 +#define RF_FDEVLSB_2000_HZ 0x21 +#define RF_FDEVMSB_5000_HZ 0x00 // Default +#define RF_FDEVLSB_5000_HZ 0x52 // Default +#define RF_FDEVMSB_10000_HZ 0x00 +#define RF_FDEVLSB_10000_HZ 0xA4 +#define RF_FDEVMSB_15000_HZ 0x00 +#define RF_FDEVLSB_15000_HZ 0xF6 +#define RF_FDEVMSB_20000_HZ 0x01 +#define RF_FDEVLSB_20000_HZ 0x48 +#define RF_FDEVMSB_25000_HZ 0x01 +#define RF_FDEVLSB_25000_HZ 0x9A +#define RF_FDEVMSB_30000_HZ 0x01 +#define RF_FDEVLSB_30000_HZ 0xEC +#define RF_FDEVMSB_35000_HZ 0x02 +#define RF_FDEVLSB_35000_HZ 0x3D +#define RF_FDEVMSB_40000_HZ 0x02 +#define RF_FDEVLSB_40000_HZ 0x8F +#define RF_FDEVMSB_45000_HZ 0x02 +#define RF_FDEVLSB_45000_HZ 0xE1 +#define RF_FDEVMSB_50000_HZ 0x03 +#define RF_FDEVLSB_50000_HZ 0x33 +#define RF_FDEVMSB_55000_HZ 0x03 +#define RF_FDEVLSB_55000_HZ 0x85 +#define RF_FDEVMSB_60000_HZ 0x03 +#define RF_FDEVLSB_60000_HZ 0xD7 +#define RF_FDEVMSB_65000_HZ 0x04 +#define RF_FDEVLSB_65000_HZ 0x29 +#define RF_FDEVMSB_70000_HZ 0x04 +#define RF_FDEVLSB_70000_HZ 0x7B +#define RF_FDEVMSB_75000_HZ 0x04 +#define RF_FDEVLSB_75000_HZ 0xCD +#define RF_FDEVMSB_80000_HZ 0x05 +#define RF_FDEVLSB_80000_HZ 0x1F +#define RF_FDEVMSB_85000_HZ 0x05 +#define RF_FDEVLSB_85000_HZ 0x71 +#define RF_FDEVMSB_90000_HZ 0x05 +#define RF_FDEVLSB_90000_HZ 0xC3 +#define RF_FDEVMSB_95000_HZ 0x06 +#define RF_FDEVLSB_95000_HZ 0x14 +#define RF_FDEVMSB_100000_HZ 0x06 +#define RF_FDEVLSB_100000_HZ 0x66 +#define RF_FDEVMSB_110000_HZ 0x07 +#define RF_FDEVLSB_110000_HZ 0x0A +#define RF_FDEVMSB_120000_HZ 0x07 +#define RF_FDEVLSB_120000_HZ 0xAE +#define RF_FDEVMSB_130000_HZ 0x08 +#define RF_FDEVLSB_130000_HZ 0x52 +#define RF_FDEVMSB_140000_HZ 0x08 +#define RF_FDEVLSB_140000_HZ 0xF6 +#define RF_FDEVMSB_150000_HZ 0x09 +#define RF_FDEVLSB_150000_HZ 0x9A +#define RF_FDEVMSB_160000_HZ 0x0A +#define RF_FDEVLSB_160000_HZ 0x3D +#define RF_FDEVMSB_170000_HZ 0x0A +#define RF_FDEVLSB_170000_HZ 0xE1 +#define RF_FDEVMSB_180000_HZ 0x0B +#define RF_FDEVLSB_180000_HZ 0x85 +#define RF_FDEVMSB_190000_HZ 0x0C +#define RF_FDEVLSB_190000_HZ 0x29 +#define RF_FDEVMSB_200000_HZ 0x0C +#define RF_FDEVLSB_200000_HZ 0xCD + +/*! + * RegFrf (MHz) + */ +#define RF_FRFMSB_863_MHZ 0xD7 +#define RF_FRFMID_863_MHZ 0xC0 +#define RF_FRFLSB_863_MHZ 0x00 +#define RF_FRFMSB_864_MHZ 0xD8 +#define RF_FRFMID_864_MHZ 0x00 +#define RF_FRFLSB_864_MHZ 0x00 +#define RF_FRFMSB_865_MHZ 0xD8 +#define RF_FRFMID_865_MHZ 0x40 +#define RF_FRFLSB_865_MHZ 0x00 +#define RF_FRFMSB_866_MHZ 0xD8 +#define RF_FRFMID_866_MHZ 0x80 +#define RF_FRFLSB_866_MHZ 0x00 +#define RF_FRFMSB_867_MHZ 0xD8 +#define RF_FRFMID_867_MHZ 0xC0 +#define RF_FRFLSB_867_MHZ 0x00 +#define RF_FRFMSB_868_MHZ 0xD9 +#define RF_FRFMID_868_MHZ 0x00 +#define RF_FRFLSB_868_MHZ 0x00 +#define RF_FRFMSB_869_MHZ 0xD9 +#define RF_FRFMID_869_MHZ 0x40 +#define RF_FRFLSB_869_MHZ 0x00 +#define RF_FRFMSB_870_MHZ 0xD9 +#define RF_FRFMID_870_MHZ 0x80 +#define RF_FRFLSB_870_MHZ 0x00 + +#define RF_FRFMSB_902_MHZ 0xE1 +#define RF_FRFMID_902_MHZ 0x80 +#define RF_FRFLSB_902_MHZ 0x00 +#define RF_FRFMSB_903_MHZ 0xE1 +#define RF_FRFMID_903_MHZ 0xC0 +#define RF_FRFLSB_903_MHZ 0x00 +#define RF_FRFMSB_904_MHZ 0xE2 +#define RF_FRFMID_904_MHZ 0x00 +#define RF_FRFLSB_904_MHZ 0x00 +#define RF_FRFMSB_905_MHZ 0xE2 +#define RF_FRFMID_905_MHZ 0x40 +#define RF_FRFLSB_905_MHZ 0x00 +#define RF_FRFMSB_906_MHZ 0xE2 +#define RF_FRFMID_906_MHZ 0x80 +#define RF_FRFLSB_906_MHZ 0x00 +#define RF_FRFMSB_907_MHZ 0xE2 +#define RF_FRFMID_907_MHZ 0xC0 +#define RF_FRFLSB_907_MHZ 0x00 +#define RF_FRFMSB_908_MHZ 0xE3 +#define RF_FRFMID_908_MHZ 0x00 +#define RF_FRFLSB_908_MHZ 0x00 +#define RF_FRFMSB_909_MHZ 0xE3 +#define RF_FRFMID_909_MHZ 0x40 +#define RF_FRFLSB_909_MHZ 0x00 +#define RF_FRFMSB_910_MHZ 0xE3 +#define RF_FRFMID_910_MHZ 0x80 +#define RF_FRFLSB_910_MHZ 0x00 +#define RF_FRFMSB_911_MHZ 0xE3 +#define RF_FRFMID_911_MHZ 0xC0 +#define RF_FRFLSB_911_MHZ 0x00 +#define RF_FRFMSB_912_MHZ 0xE4 +#define RF_FRFMID_912_MHZ 0x00 +#define RF_FRFLSB_912_MHZ 0x00 +#define RF_FRFMSB_913_MHZ 0xE4 +#define RF_FRFMID_913_MHZ 0x40 +#define RF_FRFLSB_913_MHZ 0x00 +#define RF_FRFMSB_914_MHZ 0xE4 +#define RF_FRFMID_914_MHZ 0x80 +#define RF_FRFLSB_914_MHZ 0x00 +#define RF_FRFMSB_915_MHZ 0xE4 // Default +#define RF_FRFMID_915_MHZ 0xC0 // Default +#define RF_FRFLSB_915_MHZ 0x00 // Default +#define RF_FRFMSB_916_MHZ 0xE5 +#define RF_FRFMID_916_MHZ 0x00 +#define RF_FRFLSB_916_MHZ 0x00 +#define RF_FRFMSB_917_MHZ 0xE5 +#define RF_FRFMID_917_MHZ 0x40 +#define RF_FRFLSB_917_MHZ 0x00 +#define RF_FRFMSB_918_MHZ 0xE5 +#define RF_FRFMID_918_MHZ 0x80 +#define RF_FRFLSB_918_MHZ 0x00 +#define RF_FRFMSB_919_MHZ 0xE5 +#define RF_FRFMID_919_MHZ 0xC0 +#define RF_FRFLSB_919_MHZ 0x00 +#define RF_FRFMSB_920_MHZ 0xE6 +#define RF_FRFMID_920_MHZ 0x00 +#define RF_FRFLSB_920_MHZ 0x00 +#define RF_FRFMSB_921_MHZ 0xE6 +#define RF_FRFMID_921_MHZ 0x40 +#define RF_FRFLSB_921_MHZ 0x00 +#define RF_FRFMSB_922_MHZ 0xE6 +#define RF_FRFMID_922_MHZ 0x80 +#define RF_FRFLSB_922_MHZ 0x00 +#define RF_FRFMSB_923_MHZ 0xE6 +#define RF_FRFMID_923_MHZ 0xC0 +#define RF_FRFLSB_923_MHZ 0x00 +#define RF_FRFMSB_924_MHZ 0xE7 +#define RF_FRFMID_924_MHZ 0x00 +#define RF_FRFLSB_924_MHZ 0x00 +#define RF_FRFMSB_925_MHZ 0xE7 +#define RF_FRFMID_925_MHZ 0x40 +#define RF_FRFLSB_925_MHZ 0x00 +#define RF_FRFMSB_926_MHZ 0xE7 +#define RF_FRFMID_926_MHZ 0x80 +#define RF_FRFLSB_926_MHZ 0x00 +#define RF_FRFMSB_927_MHZ 0xE7 +#define RF_FRFMID_927_MHZ 0xC0 +#define RF_FRFLSB_927_MHZ 0x00 +#define RF_FRFMSB_928_MHZ 0xE8 +#define RF_FRFMID_928_MHZ 0x00 +#define RF_FRFLSB_928_MHZ 0x00 + +/*! + * RegPaConfig + */ +#define RF_PACONFIG_PASELECT_MASK 0x7F +#define RF_PACONFIG_PASELECT_PABOOST 0x80 +#define RF_PACONFIG_PASELECT_RFO 0x00 // Default + +#define RF_PACONFIG_MAX_POWER_MASK 0x8F + +#define RF_PACONFIG_OUTPUTPOWER_MASK 0xF0 + +/*! + * RegPaRamp + */ +#define RF_PARAMP_MODULATIONSHAPING_MASK 0x9F +#define RF_PARAMP_MODULATIONSHAPING_00 0x00 // Default +#define RF_PARAMP_MODULATIONSHAPING_01 0x20 +#define RF_PARAMP_MODULATIONSHAPING_10 0x40 +#define RF_PARAMP_MODULATIONSHAPING_11 0x60 + +#define RF_PARAMP_TXBANDFORCE_MASK 0xEF +#define RF_PARAMP_TXBANDFORCE_BAND_SEL 0x10 +#define RF_PARAMP_TXBANDFORCE_AUTO 0x00 // Default + +#define RF_PARAMP_MASK 0xF0 +#define RF_PARAMP_3400_US 0x00 +#define RF_PARAMP_2000_US 0x01 +#define RF_PARAMP_1000_US 0x02 +#define RF_PARAMP_0500_US 0x03 +#define RF_PARAMP_0250_US 0x04 +#define RF_PARAMP_0125_US 0x05 +#define RF_PARAMP_0100_US 0x06 +#define RF_PARAMP_0062_US 0x07 +#define RF_PARAMP_0050_US 0x08 +#define RF_PARAMP_0040_US 0x09 // Default +#define RF_PARAMP_0031_US 0x0A +#define RF_PARAMP_0025_US 0x0B +#define RF_PARAMP_0020_US 0x0C +#define RF_PARAMP_0015_US 0x0D +#define RF_PARAMP_0012_US 0x0E +#define RF_PARAMP_0010_US 0x0F + +/*! + * RegOcp + */ +#define RF_OCP_MASK 0xDF +#define RF_OCP_ON 0x20 // Default +#define RF_OCP_OFF 0x00 + +#define RF_OCP_TRIM_MASK 0xE0 +#define RF_OCP_TRIM_045_MA 0x00 +#define RF_OCP_TRIM_050_MA 0x01 +#define RF_OCP_TRIM_055_MA 0x02 +#define RF_OCP_TRIM_060_MA 0x03 +#define RF_OCP_TRIM_065_MA 0x04 +#define RF_OCP_TRIM_070_MA 0x05 +#define RF_OCP_TRIM_075_MA 0x06 +#define RF_OCP_TRIM_080_MA 0x07 +#define RF_OCP_TRIM_085_MA 0x08 +#define RF_OCP_TRIM_090_MA 0x09 +#define RF_OCP_TRIM_095_MA 0x0A +#define RF_OCP_TRIM_100_MA 0x0B // Default +#define RF_OCP_TRIM_105_MA 0x0C +#define RF_OCP_TRIM_110_MA 0x0D +#define RF_OCP_TRIM_115_MA 0x0E +#define RF_OCP_TRIM_120_MA 0x0F +#define RF_OCP_TRIM_130_MA 0x10 +#define RF_OCP_TRIM_140_MA 0x11 +#define RF_OCP_TRIM_150_MA 0x12 +#define RF_OCP_TRIM_160_MA 0x13 +#define RF_OCP_TRIM_170_MA 0x14 +#define RF_OCP_TRIM_180_MA 0x15 +#define RF_OCP_TRIM_190_MA 0x16 +#define RF_OCP_TRIM_200_MA 0x17 +#define RF_OCP_TRIM_210_MA 0x18 +#define RF_OCP_TRIM_220_MA 0x19 +#define RF_OCP_TRIM_230_MA 0x1A +#define RF_OCP_TRIM_240_MA 0x1B + +/*! + * RegLna + */ +#define RF_LNA_GAIN_MASK 0x1F +#define RF_LNA_GAIN_G1 0x20 // Default +#define RF_LNA_GAIN_G2 0x40 +#define RF_LNA_GAIN_G3 0x60 +#define RF_LNA_GAIN_G4 0x80 +#define RF_LNA_GAIN_G5 0xA0 +#define RF_LNA_GAIN_G6 0xC0 + +#define RF_LNA_BOOST_LF_MASK 0xE7 +#define RF_LNA_BOOST_LF_DEFAULT 0x00 // Default +#define RF_LNA_BOOST_LF_GAIN 0x08 +#define RF_LNA_BOOST_LF_IP3 0x10 +#define RF_LNA_BOOST_LF_BOOST 0x18 + +#define RF_LNA_RXBANDFORCE_MASK 0xFB +#define RF_LNA_RXBANDFORCE_BAND_SEL 0x04 +#define RF_LNA_RXBANDFORCE_AUTO 0x00 // Default + +#define RF_LNA_BOOST_HF_MASK 0xFC +#define RF_LNA_BOOST_HF_OFF 0x00 // Default +#define RF_LNA_BOOST_HF_ON 0x03 + +/*! + * RegRxConfig + */ +#define RF_RXCONFIG_RESTARTRXONCOLLISION_MASK 0x7F +#define RF_RXCONFIG_RESTARTRXONCOLLISION_ON 0x80 +#define RF_RXCONFIG_RESTARTRXONCOLLISION_OFF 0x00 // Default + +#define RF_RXCONFIG_RESTARTRXWITHOUTPLLLOCK 0x40 // Write only + +#define RF_RXCONFIG_RESTARTRXWITHPLLLOCK 0x20 // Write only + +#define RF_RXCONFIG_AFCAUTO_MASK 0xEF +#define RF_RXCONFIG_AFCAUTO_ON 0x10 +#define RF_RXCONFIG_AFCAUTO_OFF 0x00 // Default + +#define RF_RXCONFIG_AGCAUTO_MASK 0xF7 +#define RF_RXCONFIG_AGCAUTO_ON 0x08 // Default +#define RF_RXCONFIG_AGCAUTO_OFF 0x00 + +#define RF_RXCONFIG_RXTRIGER_MASK 0xF8 +#define RF_RXCONFIG_RXTRIGER_OFF 0x00 +#define RF_RXCONFIG_RXTRIGER_RSSI 0x01 +#define RF_RXCONFIG_RXTRIGER_PREAMBLEDETECT 0x06 // Default +#define RF_RXCONFIG_RXTRIGER_RSSI_PREAMBLEDETECT 0x07 + +/*! + * RegRssiConfig + */ +#define RF_RSSICONFIG_OFFSET_MASK 0x07 +#define RF_RSSICONFIG_OFFSET_P_00_DB 0x00 // Default +#define RF_RSSICONFIG_OFFSET_P_01_DB 0x08 +#define RF_RSSICONFIG_OFFSET_P_02_DB 0x10 +#define RF_RSSICONFIG_OFFSET_P_03_DB 0x18 +#define RF_RSSICONFIG_OFFSET_P_04_DB 0x20 +#define RF_RSSICONFIG_OFFSET_P_05_DB 0x28 +#define RF_RSSICONFIG_OFFSET_P_06_DB 0x30 +#define RF_RSSICONFIG_OFFSET_P_07_DB 0x38 +#define RF_RSSICONFIG_OFFSET_P_08_DB 0x40 +#define RF_RSSICONFIG_OFFSET_P_09_DB 0x48 +#define RF_RSSICONFIG_OFFSET_P_10_DB 0x50 +#define RF_RSSICONFIG_OFFSET_P_11_DB 0x58 +#define RF_RSSICONFIG_OFFSET_P_12_DB 0x60 +#define RF_RSSICONFIG_OFFSET_P_13_DB 0x68 +#define RF_RSSICONFIG_OFFSET_P_14_DB 0x70 +#define RF_RSSICONFIG_OFFSET_P_15_DB 0x78 +#define RF_RSSICONFIG_OFFSET_M_16_DB 0x80 +#define RF_RSSICONFIG_OFFSET_M_15_DB 0x88 +#define RF_RSSICONFIG_OFFSET_M_14_DB 0x90 +#define RF_RSSICONFIG_OFFSET_M_13_DB 0x98 +#define RF_RSSICONFIG_OFFSET_M_12_DB 0xA0 +#define RF_RSSICONFIG_OFFSET_M_11_DB 0xA8 +#define RF_RSSICONFIG_OFFSET_M_10_DB 0xB0 +#define RF_RSSICONFIG_OFFSET_M_09_DB 0xB8 +#define RF_RSSICONFIG_OFFSET_M_08_DB 0xC0 +#define RF_RSSICONFIG_OFFSET_M_07_DB 0xC8 +#define RF_RSSICONFIG_OFFSET_M_06_DB 0xD0 +#define RF_RSSICONFIG_OFFSET_M_05_DB 0xD8 +#define RF_RSSICONFIG_OFFSET_M_04_DB 0xE0 +#define RF_RSSICONFIG_OFFSET_M_03_DB 0xE8 +#define RF_RSSICONFIG_OFFSET_M_02_DB 0xF0 +#define RF_RSSICONFIG_OFFSET_M_01_DB 0xF8 + +#define RF_RSSICONFIG_SMOOTHING_MASK 0xF8 +#define RF_RSSICONFIG_SMOOTHING_2 0x00 +#define RF_RSSICONFIG_SMOOTHING_4 0x01 +#define RF_RSSICONFIG_SMOOTHING_8 0x02 // Default +#define RF_RSSICONFIG_SMOOTHING_16 0x03 +#define RF_RSSICONFIG_SMOOTHING_32 0x04 +#define RF_RSSICONFIG_SMOOTHING_64 0x05 +#define RF_RSSICONFIG_SMOOTHING_128 0x06 +#define RF_RSSICONFIG_SMOOTHING_256 0x07 + +/*! + * RegRssiCollision + */ +#define RF_RSSICOLISION_THRESHOLD 0x0A // Default + +/*! + * RegRssiThresh + */ +#define RF_RSSITHRESH_THRESHOLD 0xFF // Default + +/*! + * RegRssiValue (Read Only) + */ + +/*! + * RegRxBw + */ +#define RF_RXBW_MANT_MASK 0xE7 +#define RF_RXBW_MANT_16 0x00 +#define RF_RXBW_MANT_20 0x08 +#define RF_RXBW_MANT_24 0x10 // Default + +#define RF_RXBW_EXP_MASK 0xF8 +#define RF_RXBW_EXP_0 0x00 +#define RF_RXBW_EXP_1 0x01 +#define RF_RXBW_EXP_2 0x02 +#define RF_RXBW_EXP_3 0x03 +#define RF_RXBW_EXP_4 0x04 +#define RF_RXBW_EXP_5 0x05 // Default +#define RF_RXBW_EXP_6 0x06 +#define RF_RXBW_EXP_7 0x07 + +/*! + * RegAfcBw + */ +#define RF_AFCBW_MANTAFC_MASK 0xE7 +#define RF_AFCBW_MANTAFC_16 0x00 +#define RF_AFCBW_MANTAFC_20 0x08 // Default +#define RF_AFCBW_MANTAFC_24 0x10 + +#define RF_AFCBW_EXPAFC_MASK 0xF8 +#define RF_AFCBW_EXPAFC_0 0x00 +#define RF_AFCBW_EXPAFC_1 0x01 +#define RF_AFCBW_EXPAFC_2 0x02 +#define RF_AFCBW_EXPAFC_3 0x03 // Default +#define RF_AFCBW_EXPAFC_4 0x04 +#define RF_AFCBW_EXPAFC_5 0x05 +#define RF_AFCBW_EXPAFC_6 0x06 +#define RF_AFCBW_EXPAFC_7 0x07 + +/*! + * RegOokPeak + */ +#define RF_OOKPEAK_BITSYNC_MASK 0xDF // Default +#define RF_OOKPEAK_BITSYNC_ON 0x20 // Default +#define RF_OOKPEAK_BITSYNC_OFF 0x00 + +#define RF_OOKPEAK_OOKTHRESHTYPE_MASK 0xE7 +#define RF_OOKPEAK_OOKTHRESHTYPE_FIXED 0x00 +#define RF_OOKPEAK_OOKTHRESHTYPE_PEAK 0x08 // Default +#define RF_OOKPEAK_OOKTHRESHTYPE_AVERAGE 0x10 + +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_MASK 0xF8 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_0_5_DB 0x00 // Default +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_1_0_DB 0x01 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_1_5_DB 0x02 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_2_0_DB 0x03 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_3_0_DB 0x04 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_4_0_DB 0x05 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_5_0_DB 0x06 +#define RF_OOKPEAK_OOKPEAKTHRESHSTEP_6_0_DB 0x07 + +/*! + * RegOokFix + */ +#define RF_OOKFIX_OOKFIXEDTHRESHOLD 0x0C // Default + +/*! + * RegOokAvg + */ +#define RF_OOKAVG_OOKPEAKTHRESHDEC_MASK 0x1F +#define RF_OOKAVG_OOKPEAKTHRESHDEC_000 0x00 // Default +#define RF_OOKAVG_OOKPEAKTHRESHDEC_001 0x20 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_010 0x40 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_011 0x60 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_100 0x80 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_101 0xA0 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_110 0xC0 +#define RF_OOKAVG_OOKPEAKTHRESHDEC_111 0xE0 + +#define RF_OOKAVG_AVERAGEOFFSET_MASK 0xF3 +#define RF_OOKAVG_AVERAGEOFFSET_0_DB 0x00 // Default +#define RF_OOKAVG_AVERAGEOFFSET_2_DB 0x04 +#define RF_OOKAVG_AVERAGEOFFSET_4_DB 0x08 +#define RF_OOKAVG_AVERAGEOFFSET_6_DB 0x0C + +#define RF_OOKAVG_OOKAVERAGETHRESHFILT_MASK 0xFC +#define RF_OOKAVG_OOKAVERAGETHRESHFILT_00 0x00 +#define RF_OOKAVG_OOKAVERAGETHRESHFILT_01 0x01 +#define RF_OOKAVG_OOKAVERAGETHRESHFILT_10 0x02 // Default +#define RF_OOKAVG_OOKAVERAGETHRESHFILT_11 0x03 + +/*! + * RegAfcFei + */ +#define RF_AFCFEI_AGCSTART 0x10 + +#define RF_AFCFEI_AFCCLEAR 0x02 + +#define RF_AFCFEI_AFCAUTOCLEAR_MASK 0xFE +#define RF_AFCFEI_AFCAUTOCLEAR_ON 0x01 +#define RF_AFCFEI_AFCAUTOCLEAR_OFF 0x00 // Default + +/*! + * RegAfcMsb (Read Only) + */ + +/*! + * RegAfcLsb (Read Only) + */ + +/*! + * RegFeiMsb (Read Only) + */ + +/*! + * RegFeiLsb (Read Only) + */ + +/*! + * RegPreambleDetect + */ +#define RF_PREAMBLEDETECT_DETECTOR_MASK 0x7F +#define RF_PREAMBLEDETECT_DETECTOR_ON 0x80 // Default +#define RF_PREAMBLEDETECT_DETECTOR_OFF 0x00 + +#define RF_PREAMBLEDETECT_DETECTORSIZE_MASK 0x9F +#define RF_PREAMBLEDETECT_DETECTORSIZE_1 0x00 +#define RF_PREAMBLEDETECT_DETECTORSIZE_2 0x20 // Default +#define RF_PREAMBLEDETECT_DETECTORSIZE_3 0x40 +#define RF_PREAMBLEDETECT_DETECTORSIZE_4 0x60 + +#define RF_PREAMBLEDETECT_DETECTORTOL_MASK 0xE0 +#define RF_PREAMBLEDETECT_DETECTORTOL_0 0x00 +#define RF_PREAMBLEDETECT_DETECTORTOL_1 0x01 +#define RF_PREAMBLEDETECT_DETECTORTOL_2 0x02 +#define RF_PREAMBLEDETECT_DETECTORTOL_3 0x03 +#define RF_PREAMBLEDETECT_DETECTORTOL_4 0x04 +#define RF_PREAMBLEDETECT_DETECTORTOL_5 0x05 +#define RF_PREAMBLEDETECT_DETECTORTOL_6 0x06 +#define RF_PREAMBLEDETECT_DETECTORTOL_7 0x07 +#define RF_PREAMBLEDETECT_DETECTORTOL_8 0x08 +#define RF_PREAMBLEDETECT_DETECTORTOL_9 0x09 +#define RF_PREAMBLEDETECT_DETECTORTOL_10 0x0A // Default +#define RF_PREAMBLEDETECT_DETECTORTOL_11 0x0B +#define RF_PREAMBLEDETECT_DETECTORTOL_12 0x0C +#define RF_PREAMBLEDETECT_DETECTORTOL_13 0x0D +#define RF_PREAMBLEDETECT_DETECTORTOL_14 0x0E +#define RF_PREAMBLEDETECT_DETECTORTOL_15 0x0F +#define RF_PREAMBLEDETECT_DETECTORTOL_16 0x10 +#define RF_PREAMBLEDETECT_DETECTORTOL_17 0x11 +#define RF_PREAMBLEDETECT_DETECTORTOL_18 0x12 +#define RF_PREAMBLEDETECT_DETECTORTOL_19 0x13 +#define RF_PREAMBLEDETECT_DETECTORTOL_20 0x14 +#define RF_PREAMBLEDETECT_DETECTORTOL_21 0x15 +#define RF_PREAMBLEDETECT_DETECTORTOL_22 0x16 +#define RF_PREAMBLEDETECT_DETECTORTOL_23 0x17 +#define RF_PREAMBLEDETECT_DETECTORTOL_24 0x18 +#define RF_PREAMBLEDETECT_DETECTORTOL_25 0x19 +#define RF_PREAMBLEDETECT_DETECTORTOL_26 0x1A +#define RF_PREAMBLEDETECT_DETECTORTOL_27 0x1B +#define RF_PREAMBLEDETECT_DETECTORTOL_28 0x1C +#define RF_PREAMBLEDETECT_DETECTORTOL_29 0x1D +#define RF_PREAMBLEDETECT_DETECTORTOL_30 0x1E +#define RF_PREAMBLEDETECT_DETECTORTOL_31 0x1F + +/*! + * RegRxTimeout1 + */ +#define RF_RXTIMEOUT1_TIMEOUTRXRSSI 0x00 // Default + +/*! + * RegRxTimeout2 + */ +#define RF_RXTIMEOUT2_TIMEOUTRXPREAMBLE 0x00 // Default + +/*! + * RegRxTimeout3 + */ +#define RF_RXTIMEOUT3_TIMEOUTSIGNALSYNC 0x00 // Default + +/*! + * RegRxDelay + */ +#define RF_RXDELAY_INTERPACKETRXDELAY 0x00 // Default + +/*! + * RegOsc + */ +#define RF_OSC_RCCALSTART 0x08 + +#define RF_OSC_CLKOUT_MASK 0xF8 +#define RF_OSC_CLKOUT_32_MHZ 0x00 +#define RF_OSC_CLKOUT_16_MHZ 0x01 +#define RF_OSC_CLKOUT_8_MHZ 0x02 +#define RF_OSC_CLKOUT_4_MHZ 0x03 +#define RF_OSC_CLKOUT_2_MHZ 0x04 +#define RF_OSC_CLKOUT_1_MHZ 0x05 // Default +#define RF_OSC_CLKOUT_RC 0x06 +#define RF_OSC_CLKOUT_OFF 0x07 + +/*! + * RegPreambleMsb/RegPreambleLsb + */ +#define RF_PREAMBLEMSB_SIZE 0x00 // Default +#define RF_PREAMBLELSB_SIZE 0x03 // Default + +/*! + * RegSyncConfig + */ +#define RF_SYNCCONFIG_AUTORESTARTRXMODE_MASK 0x3F +#define RF_SYNCCONFIG_AUTORESTARTRXMODE_WAITPLL_ON 0x80 // Default +#define RF_SYNCCONFIG_AUTORESTARTRXMODE_WAITPLL_OFF 0x40 +#define RF_SYNCCONFIG_AUTORESTARTRXMODE_OFF 0x00 + + +#define RF_SYNCCONFIG_PREAMBLEPOLARITY_MASK 0xDF +#define RF_SYNCCONFIG_PREAMBLEPOLARITY_55 0x20 +#define RF_SYNCCONFIG_PREAMBLEPOLARITY_AA 0x00 // Default + +#define RF_SYNCCONFIG_SYNC_MASK 0xEF +#define RF_SYNCCONFIG_SYNC_ON 0x10 // Default +#define RF_SYNCCONFIG_SYNC_OFF 0x00 + + +#define RF_SYNCCONFIG_SYNCSIZE_MASK 0xF8 +#define RF_SYNCCONFIG_SYNCSIZE_1 0x00 +#define RF_SYNCCONFIG_SYNCSIZE_2 0x01 +#define RF_SYNCCONFIG_SYNCSIZE_3 0x02 +#define RF_SYNCCONFIG_SYNCSIZE_4 0x03 // Default +#define RF_SYNCCONFIG_SYNCSIZE_5 0x04 +#define RF_SYNCCONFIG_SYNCSIZE_6 0x05 +#define RF_SYNCCONFIG_SYNCSIZE_7 0x06 +#define RF_SYNCCONFIG_SYNCSIZE_8 0x07 + +/*! + * RegSyncValue1-8 + */ +#define RF_SYNCVALUE1_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE2_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE3_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE4_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE5_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE6_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE7_SYNCVALUE 0x01 // Default +#define RF_SYNCVALUE8_SYNCVALUE 0x01 // Default + +/*! + * RegPacketConfig1 + */ +#define RF_PACKETCONFIG1_PACKETFORMAT_MASK 0x7F +#define RF_PACKETCONFIG1_PACKETFORMAT_FIXED 0x00 +#define RF_PACKETCONFIG1_PACKETFORMAT_VARIABLE 0x80 // Default + +#define RF_PACKETCONFIG1_DCFREE_MASK 0x9F +#define RF_PACKETCONFIG1_DCFREE_OFF 0x00 // Default +#define RF_PACKETCONFIG1_DCFREE_MANCHESTER 0x20 +#define RF_PACKETCONFIG1_DCFREE_WHITENING 0x40 + +#define RF_PACKETCONFIG1_CRC_MASK 0xEF +#define RF_PACKETCONFIG1_CRC_ON 0x10 // Default +#define RF_PACKETCONFIG1_CRC_OFF 0x00 + +#define RF_PACKETCONFIG1_CRCAUTOCLEAR_MASK 0xF7 +#define RF_PACKETCONFIG1_CRCAUTOCLEAR_ON 0x00 // Default +#define RF_PACKETCONFIG1_CRCAUTOCLEAR_OFF 0x08 + +#define RF_PACKETCONFIG1_ADDRSFILTERING_MASK 0xF9 +#define RF_PACKETCONFIG1_ADDRSFILTERING_OFF 0x00 // Default +#define RF_PACKETCONFIG1_ADDRSFILTERING_NODE 0x02 +#define RF_PACKETCONFIG1_ADDRSFILTERING_NODEBROADCAST 0x04 + +#define RF_PACKETCONFIG1_CRCWHITENINGTYPE_MASK 0xFE +#define RF_PACKETCONFIG1_CRCWHITENINGTYPE_CCITT 0x00 // Default +#define RF_PACKETCONFIG1_CRCWHITENINGTYPE_IBM 0x01 + +/*! + * RegPacketConfig2 + */ + +#define RF_PACKETCONFIG2_WMBUS_CRC_ENABLE_MASK 0x7F +#define RF_PACKETCONFIG2_WMBUS_CRC_ENABLE 0x80 +#define RF_PACKETCONFIG2_WMBUS_CRC_DISABLE 0x00 // Default + +#define RF_PACKETCONFIG2_DATAMODE_MASK 0xBF +#define RF_PACKETCONFIG2_DATAMODE_CONTINUOUS 0x00 +#define RF_PACKETCONFIG2_DATAMODE_PACKET 0x40 // Default + +#define RF_PACKETCONFIG2_IOHOME_MASK 0xDF +#define RF_PACKETCONFIG2_IOHOME_ON 0x20 +#define RF_PACKETCONFIG2_IOHOME_OFF 0x00 // Default + +#define RF_PACKETCONFIG2_BEACON_MASK 0xF7 +#define RF_PACKETCONFIG2_BEACON_ON 0x08 +#define RF_PACKETCONFIG2_BEACON_OFF 0x00 // Default + +#define RF_PACKETCONFIG2_PAYLOADLENGTH_MSB_MASK 0xF8 + +/*! + * RegPayloadLength + */ +#define RF_PAYLOADLENGTH_LENGTH 0x40 // Default + +/*! + * RegNodeAdrs + */ +#define RF_NODEADDRESS_ADDRESS 0x00 + +/*! + * RegBroadcastAdrs + */ +#define RF_BROADCASTADDRESS_ADDRESS 0x00 + +/*! + * RegFifoThresh + */ +#define RF_FIFOTHRESH_TXSTARTCONDITION_MASK 0x7F +#define RF_FIFOTHRESH_TXSTARTCONDITION_FIFOTHRESH 0x00 // Default +#define RF_FIFOTHRESH_TXSTARTCONDITION_FIFONOTEMPTY 0x80 + +#define RF_FIFOTHRESH_FIFOTHRESHOLD_MASK 0xC0 +#define RF_FIFOTHRESH_FIFOTHRESHOLD_THRESHOLD 0x0F // Default + +/*! + * RegSeqConfig1 + */ +#define RF_SEQCONFIG1_SEQUENCER_START 0x80 + +#define RF_SEQCONFIG1_SEQUENCER_STOP 0x40 + +#define RF_SEQCONFIG1_IDLEMODE_MASK 0xDF +#define RF_SEQCONFIG1_IDLEMODE_SLEEP 0x20 +#define RF_SEQCONFIG1_IDLEMODE_STANDBY 0x00 // Default + +#define RF_SEQCONFIG1_FROMSTART_MASK 0xE7 +#define RF_SEQCONFIG1_FROMSTART_TOLPS 0x00 // Default +#define RF_SEQCONFIG1_FROMSTART_TORX 0x08 +#define RF_SEQCONFIG1_FROMSTART_TOTX 0x10 +#define RF_SEQCONFIG1_FROMSTART_TOTX_ONFIFOLEVEL 0x18 + +#define RF_SEQCONFIG1_LPS_MASK 0xFB +#define RF_SEQCONFIG1_LPS_SEQUENCER_OFF 0x00 // Default +#define RF_SEQCONFIG1_LPS_IDLE 0x04 + +#define RF_SEQCONFIG1_FROMIDLE_MASK 0xFD +#define RF_SEQCONFIG1_FROMIDLE_TOTX 0x00 // Default +#define RF_SEQCONFIG1_FROMIDLE_TORX 0x02 + +#define RF_SEQCONFIG1_FROMTX_MASK 0xFE +#define RF_SEQCONFIG1_FROMTX_TOLPS 0x00 // Default +#define RF_SEQCONFIG1_FROMTX_TORX 0x01 + +/*! + * RegSeqConfig2 + */ +#define RF_SEQCONFIG2_FROMRX_MASK 0x1F +#define RF_SEQCONFIG2_FROMRX_TOUNUSED_000 0x00 // Default +#define RF_SEQCONFIG2_FROMRX_TORXPKT_ONPLDRDY 0x20 +#define RF_SEQCONFIG2_FROMRX_TOLPS_ONPLDRDY 0x40 +#define RF_SEQCONFIG2_FROMRX_TORXPKT_ONCRCOK 0x60 +#define RF_SEQCONFIG2_FROMRX_TOSEQUENCEROFF_ONRSSI 0x80 +#define RF_SEQCONFIG2_FROMRX_TOSEQUENCEROFF_ONSYNC 0xA0 +#define RF_SEQCONFIG2_FROMRX_TOSEQUENCEROFF_ONPREAMBLE 0xC0 +#define RF_SEQCONFIG2_FROMRX_TOUNUSED_111 0xE0 + +#define RF_SEQCONFIG2_FROMRXTIMEOUT_MASK 0xE7 +#define RF_SEQCONFIG2_FROMRXTIMEOUT_TORXRESTART 0x00 // Default +#define RF_SEQCONFIG2_FROMRXTIMEOUT_TOTX 0x08 +#define RF_SEQCONFIG2_FROMRXTIMEOUT_TOLPS 0x10 +#define RF_SEQCONFIG2_FROMRXTIMEOUT_TOSEQUENCEROFF 0x18 + +#define RF_SEQCONFIG2_FROMRXPKT_MASK 0xF8 +#define RF_SEQCONFIG2_FROMRXPKT_TOSEQUENCEROFF 0x00 // Default +#define RF_SEQCONFIG2_FROMRXPKT_TOTX_ONFIFOEMPTY 0x01 +#define RF_SEQCONFIG2_FROMRXPKT_TOLPS 0x02 +#define RF_SEQCONFIG2_FROMRXPKT_TOSYNTHESIZERRX 0x03 +#define RF_SEQCONFIG2_FROMRXPKT_TORX 0x04 + +/*! + * RegTimerResol + */ +#define RF_TIMERRESOL_TIMER1RESOL_MASK 0xF3 +#define RF_TIMERRESOL_TIMER1RESOL_OFF 0x00 // Default +#define RF_TIMERRESOL_TIMER1RESOL_000064_US 0x04 +#define RF_TIMERRESOL_TIMER1RESOL_004100_US 0x08 +#define RF_TIMERRESOL_TIMER1RESOL_262000_US 0x0C + +#define RF_TIMERRESOL_TIMER2RESOL_MASK 0xFC +#define RF_TIMERRESOL_TIMER2RESOL_OFF 0x00 // Default +#define RF_TIMERRESOL_TIMER2RESOL_000064_US 0x01 +#define RF_TIMERRESOL_TIMER2RESOL_004100_US 0x02 +#define RF_TIMERRESOL_TIMER2RESOL_262000_US 0x03 + +/*! + * RegTimer1Coef + */ +#define RF_TIMER1COEF_TIMER1COEFFICIENT 0xF5 // Default + +/*! + * RegTimer2Coef + */ +#define RF_TIMER2COEF_TIMER2COEFFICIENT 0x20 // Default + +/*! + * RegImageCal + */ +#define RF_IMAGECAL_AUTOIMAGECAL_MASK 0x7F +#define RF_IMAGECAL_AUTOIMAGECAL_ON 0x80 +#define RF_IMAGECAL_AUTOIMAGECAL_OFF 0x00 // Default + +#define RF_IMAGECAL_IMAGECAL_MASK 0xBF +#define RF_IMAGECAL_IMAGECAL_START 0x40 + +#define RF_IMAGECAL_IMAGECAL_RUNNING 0x20 +#define RF_IMAGECAL_IMAGECAL_DONE 0x00 // Default + +#define RF_IMAGECAL_TEMPCHANGE_HIGHER 0x08 +#define RF_IMAGECAL_TEMPCHANGE_LOWER 0x00 + +#define RF_IMAGECAL_TEMPTHRESHOLD_MASK 0xF9 +#define RF_IMAGECAL_TEMPTHRESHOLD_05 0x00 +#define RF_IMAGECAL_TEMPTHRESHOLD_10 0x02 // Default +#define RF_IMAGECAL_TEMPTHRESHOLD_15 0x04 +#define RF_IMAGECAL_TEMPTHRESHOLD_20 0x06 + +#define RF_IMAGECAL_TEMPMONITOR_MASK 0xFE +#define RF_IMAGECAL_TEMPMONITOR_ON 0x00 // Default +#define RF_IMAGECAL_TEMPMONITOR_OFF 0x01 + +/*! + * RegTemp (Read Only) + */ + +/*! + * RegLowBat + */ +#define RF_LOWBAT_MASK 0xF7 +#define RF_LOWBAT_ON 0x08 +#define RF_LOWBAT_OFF 0x00 // Default + +#define RF_LOWBAT_TRIM_MASK 0xF8 +#define RF_LOWBAT_TRIM_1695 0x00 +#define RF_LOWBAT_TRIM_1764 0x01 +#define RF_LOWBAT_TRIM_1835 0x02 // Default +#define RF_LOWBAT_TRIM_1905 0x03 +#define RF_LOWBAT_TRIM_1976 0x04 +#define RF_LOWBAT_TRIM_2045 0x05 +#define RF_LOWBAT_TRIM_2116 0x06 +#define RF_LOWBAT_TRIM_2185 0x07 + +/*! + * RegIrqFlags1 + */ +#define RF_IRQFLAGS1_MODEREADY 0x80 + +#define RF_IRQFLAGS1_RXREADY 0x40 + +#define RF_IRQFLAGS1_TXREADY 0x20 + +#define RF_IRQFLAGS1_PLLLOCK 0x10 + +#define RF_IRQFLAGS1_RSSI 0x08 + +#define RF_IRQFLAGS1_TIMEOUT 0x04 + +#define RF_IRQFLAGS1_PREAMBLEDETECT 0x02 + +#define RF_IRQFLAGS1_SYNCADDRESSMATCH 0x01 + +/*! + * RegIrqFlags2 + */ +#define RF_IRQFLAGS2_FIFOFULL 0x80 + +#define RF_IRQFLAGS2_FIFOEMPTY 0x40 + +#define RF_IRQFLAGS2_FIFOLEVEL 0x20 + +#define RF_IRQFLAGS2_FIFOOVERRUN 0x10 + +#define RF_IRQFLAGS2_PACKETSENT 0x08 + +#define RF_IRQFLAGS2_PAYLOADREADY 0x04 + +#define RF_IRQFLAGS2_CRCOK 0x02 + +#define RF_IRQFLAGS2_LOWBAT 0x01 + +/*! + * RegDioMapping1 + */ +#define RF_DIOMAPPING1_DIO0_MASK 0x3F +#define RF_DIOMAPPING1_DIO0_00 0x00 // Default +#define RF_DIOMAPPING1_DIO0_01 0x40 +#define RF_DIOMAPPING1_DIO0_10 0x80 +#define RF_DIOMAPPING1_DIO0_11 0xC0 + +#define RF_DIOMAPPING1_DIO1_MASK 0xCF +#define RF_DIOMAPPING1_DIO1_00 0x00 // Default +#define RF_DIOMAPPING1_DIO1_01 0x10 +#define RF_DIOMAPPING1_DIO1_10 0x20 +#define RF_DIOMAPPING1_DIO1_11 0x30 + +#define RF_DIOMAPPING1_DIO2_MASK 0xF3 +#define RF_DIOMAPPING1_DIO2_00 0x00 // Default +#define RF_DIOMAPPING1_DIO2_01 0x04 +#define RF_DIOMAPPING1_DIO2_10 0x08 +#define RF_DIOMAPPING1_DIO2_11 0x0C + +#define RF_DIOMAPPING1_DIO3_MASK 0xFC +#define RF_DIOMAPPING1_DIO3_00 0x00 // Default +#define RF_DIOMAPPING1_DIO3_01 0x01 +#define RF_DIOMAPPING1_DIO3_10 0x02 +#define RF_DIOMAPPING1_DIO3_11 0x03 + +/*! + * RegDioMapping2 + */ +#define RF_DIOMAPPING2_DIO4_MASK 0x3F +#define RF_DIOMAPPING2_DIO4_00 0x00 // Default +#define RF_DIOMAPPING2_DIO4_01 0x40 +#define RF_DIOMAPPING2_DIO4_10 0x80 +#define RF_DIOMAPPING2_DIO4_11 0xC0 + +#define RF_DIOMAPPING2_DIO5_MASK 0xCF +#define RF_DIOMAPPING2_DIO5_00 0x00 // Default +#define RF_DIOMAPPING2_DIO5_01 0x10 +#define RF_DIOMAPPING2_DIO5_10 0x20 +#define RF_DIOMAPPING2_DIO5_11 0x30 + +#define RF_DIOMAPPING2_MAP_MASK 0xFE +#define RF_DIOMAPPING2_MAP_PREAMBLEDETECT 0x01 +#define RF_DIOMAPPING2_MAP_RSSI 0x00 // Default + +/*! + * RegVersion (Read Only) + */ + +/*! + * RegAgcRef + */ + +/*! + * RegAgcThresh1 + */ + +/*! + * RegAgcThresh2 + */ + +/*! + * RegAgcThresh3 + */ + +/*! + * RegPllHop + */ +#define RF_PLLHOP_FASTHOP_MASK 0x7F +#define RF_PLLHOP_FASTHOP_ON 0x80 +#define RF_PLLHOP_FASTHOP_OFF 0x00 // Default + +/*! + * RegTcxo + */ +#define RF_TCXO_TCXOINPUT_MASK 0xEF +#define RF_TCXO_TCXOINPUT_ON 0x10 +#define RF_TCXO_TCXOINPUT_OFF 0x00 // Default + +/*! + * RegPaDac + */ +#define RF_PADAC_20DBM_MASK 0xF8 +#define RF_PADAC_20DBM_ON 0x07 +#define RF_PADAC_20DBM_OFF 0x04 // Default + +/*! + * RegPll + */ +#define RF_PLL_BANDWIDTH_MASK 0x3F +#define RF_PLL_BANDWIDTH_75 0x00 +#define RF_PLL_BANDWIDTH_150 0x40 +#define RF_PLL_BANDWIDTH_225 0x80 +#define RF_PLL_BANDWIDTH_300 0xC0 // Default + +/*! + * RegPllLowPn + */ +#define RF_PLLLOWPN_BANDWIDTH_MASK 0x3F +#define RF_PLLLOWPN_BANDWIDTH_75 0x00 +#define RF_PLLLOWPN_BANDWIDTH_150 0x40 +#define RF_PLLLOWPN_BANDWIDTH_225 0x80 +#define RF_PLLLOWPN_BANDWIDTH_300 0xC0 // Default + +/*! + * RegFormerTemp + */ + +/*! + * RegBitrateFrac + */ +#define RF_BITRATEFRAC_MASK 0xF0 + +typedef struct sSX1276 +{ + uint8_t RegFifo; // 0x00 + // Common settings + uint8_t RegOpMode; // 0x01 + uint8_t RegBitrateMsb; // 0x02 + uint8_t RegBitrateLsb; // 0x03 + uint8_t RegFdevMsb; // 0x04 + uint8_t RegFdevLsb; // 0x05 + uint8_t RegFrfMsb; // 0x06 + uint8_t RegFrfMid; // 0x07 + uint8_t RegFrfLsb; // 0x08 + // Tx settings + uint8_t RegPaConfig; // 0x09 + uint8_t RegPaRamp; // 0x0A + uint8_t RegOcp; // 0x0B + // Rx settings + uint8_t RegLna; // 0x0C + uint8_t RegRxConfig; // 0x0D + uint8_t RegRssiConfig; // 0x0E + uint8_t RegRssiCollision; // 0x0F + uint8_t RegRssiThresh; // 0x10 + uint8_t RegRssiValue; // 0x11 + uint8_t RegRxBw; // 0x12 + uint8_t RegAfcBw; // 0x13 + uint8_t RegOokPeak; // 0x14 + uint8_t RegOokFix; // 0x15 + uint8_t RegOokAvg; // 0x16 + uint8_t RegRes17; // 0x17 + uint8_t RegRes18; // 0x18 + uint8_t RegRes19; // 0x19 + uint8_t RegAfcFei; // 0x1A + uint8_t RegAfcMsb; // 0x1B + uint8_t RegAfcLsb; // 0x1C + uint8_t RegFeiMsb; // 0x1D + uint8_t RegFeiLsb; // 0x1E + uint8_t RegPreambleDetect; // 0x1F + uint8_t RegRxTimeout1; // 0x20 + uint8_t RegRxTimeout2; // 0x21 + uint8_t RegRxTimeout3; // 0x22 + uint8_t RegRxDelay; // 0x23 + // Oscillator settings + uint8_t RegOsc; // 0x24 + // Packet handler settings + uint8_t RegPreambleMsb; // 0x25 + uint8_t RegPreambleLsb; // 0x26 + uint8_t RegSyncConfig; // 0x27 + uint8_t RegSyncValue1; // 0x28 + uint8_t RegSyncValue2; // 0x29 + uint8_t RegSyncValue3; // 0x2A + uint8_t RegSyncValue4; // 0x2B + uint8_t RegSyncValue5; // 0x2C + uint8_t RegSyncValue6; // 0x2D + uint8_t RegSyncValue7; // 0x2E + uint8_t RegSyncValue8; // 0x2F + uint8_t RegPacketConfig1; // 0x30 + uint8_t RegPacketConfig2; // 0x31 + uint8_t RegPayloadLength; // 0x32 + uint8_t RegNodeAdrs; // 0x33 + uint8_t RegBroadcastAdrs; // 0x34 + uint8_t RegFifoThresh; // 0x35 + // Sequencer settings + uint8_t RegSeqConfig1; // 0x36 + uint8_t RegSeqConfig2; // 0x37 + uint8_t RegTimerResol; // 0x38 + uint8_t RegTimer1Coef; // 0x39 + uint8_t RegTimer2Coef; // 0x3A + // Service settings + uint8_t RegImageCal; // 0x3B + uint8_t RegTemp; // 0x3C + uint8_t RegLowBat; // 0x3D + // Status + uint8_t RegIrqFlags1; // 0x3E + uint8_t RegIrqFlags2; // 0x3F + // I/O settings + uint8_t RegDioMapping1; // 0x40 + uint8_t RegDioMapping2; // 0x41 + // Version + uint8_t RegVersion; // 0x42 + // Additional settings + uint8_t RegAgcRef; // 0x43 + uint8_t RegAgcThresh1; // 0x44 + uint8_t RegAgcThresh2; // 0x45 + uint8_t RegAgcThresh3; // 0x46 + // Test + uint8_t RegTestReserved47[0x4B - 0x47]; // 0x47-0x4A + // Additional settings + uint8_t RegPllHop; // 0x4B + uint8_t RegTestReserved4C; // 0x4C + uint8_t RegPaDac; // 0x4D + // Test + uint8_t RegTestReserved4E[0x58-0x4E]; // 0x4E-0x57 + // Additional settings + uint8_t RegTcxo; // 0x58 + // Test + uint8_t RegTestReserved59; // 0x59 + // Test + uint8_t RegTestReserved5B; // 0x5B + // Additional settings + uint8_t RegPll; // 0x5C + // Test + uint8_t RegTestReserved5D; // 0x5D + // Additional settings + uint8_t RegPllLowPn; // 0x5E + // Test + uint8_t RegTestReserved5F[0x6C - 0x5F]; // 0x5F-0x6B + // Additional settings + uint8_t RegFormerTemp; // 0x6C + // Test + uint8_t RegTestReserved6D[0x70 - 0x6D]; // 0x6D-0x6F + // Additional settings + uint8_t RegBitrateFrac; // 0x70 +}tSX1276; + +extern tSX1276* SX1276; + +/*! + * \brief Initializes the SX1276 + */ +void SX1276FskInit( void ); + +/*! + * \brief Sets the SX1276 to datasheet default values + */ +void SX1276FskSetDefaults( void ); + +/*! + * \brief Resets the SX1276 + */ +void SX1276FskReset( void ); + +/*! + * \brief Enables/Disables the LoRa modem + * + * \param [IN]: enable [true, false] + */ +void SX1276FskSetLoRaOn( bool enable ); + +/*! + * \brief Sets the SX1276 operating mode + * + * \param [IN] opMode New operating mode + */ +void SX1276FskSetOpMode( uint8_t opMode ); + +/*! + * \brief Gets the SX1276 operating mode + * + * \retval opMode Current operating mode + */ +uint8_t SX1276FskGetOpMode( void ); + +/*! + * \brief Trigs and reads the FEI + * + * \retval feiValue Frequency error value. + */ +int32_t SX1276FskReadFei( void ); + +/*! + * \brief Reads the current AFC value + * + * \retval afcValue Frequency offset value. + */ +int32_t SX1276FskReadAfc( void ); + +/*! + * \brief Reads the current Rx gain setting + * + * \retval rxGain Current gain setting + */ +uint8_t SX1276FskReadRxGain( void ); + +/*! + * \brief Trigs and reads the current RSSI value + * + * \retval rssiValue Current RSSI value in [dBm] + */ +double SX1276FskReadRssi( void ); + +/*! + * \brief Gets the Rx gain value measured while receiving the packet + * + * \retval rxGainValue Current Rx gain value + */ +uint8_t SX1276FskGetPacketRxGain( void ); + +/*! + * \brief Gets the RSSI value measured while receiving the packet + * + * \retval rssiValue Current RSSI value in [dBm] + */ +double SX1276FskGetPacketRssi( void ); + +/*! + * \brief Gets the AFC value measured while receiving the packet + * + * \retval afcValue Current AFC value in [Hz] + */ +uint32_t SX1276FskGetPacketAfc( void ); + +/*! + * \brief Sets the radio in Rx mode. Waiting for a packet + */ +void SX1276FskStartRx( void ); + +/*! + * \brief Gets a copy of the current received buffer + * + * \param [IN]: buffer Buffer pointer + * \param [IN]: size Buffer size + */ +void SX1276FskGetRxPacket( void *buffer, uint16_t *size ); + +/*! + * \brief Sets a copy of the buffer to be transmitted and starts the + * transmission + * + * \param [IN]: buffer Buffer pointer + * \param [IN]: size Buffer size + */ +void SX1276FskSetTxPacket( const void *buffer, uint16_t size ); + +/*! + * \brief Gets the current RFState + * + * \retval rfState Current RF state [RF_IDLE, RF_BUSY, + * RF_RX_DONE, RF_RX_TIMEOUT, + * RF_TX_DONE, RF_TX_TIMEOUT] + */ +uint8_t SX1276FskGetRFState( void ); + +/*! + * \brief Sets the new state of the RF state machine + * + * \param [IN]: state New RF state machine state + */ +void SX1276FskSetRFState( uint8_t state ); + +/*! + * \brief Process the FSK modem Rx and Tx state machines depending on the + * SX1276 operating mode. + * + * \retval rfState Current RF state [RF_IDLE, RF_BUSY, + * RF_RX_DONE, RF_RX_TIMEOUT, + * RF_TX_DONE, RF_TX_TIMEOUT] + */ +uint32_t SX1276FskProcess( void ); + +#endif //__SX1276_FSK_H__ \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-FskMisc.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-FskMisc.c new file mode 100644 index 000000000..d98aa49c8 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-FskMisc.c @@ -0,0 +1,521 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file sx1276-FskMisc.c + * \brief SX1276 RF chip high level functions driver + * + * \remark Optional support functions. + * These functions are defined only to easy the change of the + * parameters. + * For a final firmware the radio parameters will be known so + * there is no need to support all possible parameters. + * Removing these functions will greatly reduce the final firmware + * size. + * + * \version 2.0.0 + * \date May 6 2013 + * \author Gregory Cristian + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +#include + +#include "platform.h" + +#if defined( USE_SX1276_RADIO ) + +#include "sx1276-Hal.h" +#include "sx1276.h" + +#include "sx1276-Fsk.h" +#include "sx1276-FskMisc.h" + +extern tFskSettings FskSettings; + +void SX1276FskSetRFFrequency( uint32_t freq ) +{ + FskSettings.RFFrequency = freq; + + freq = ( uint32_t )( ( double )freq / ( double )FREQ_STEP ); + SX1276->RegFrfMsb = ( uint8_t )( ( freq >> 16 ) & 0xFF ); + SX1276->RegFrfMid = ( uint8_t )( ( freq >> 8 ) & 0xFF ); + SX1276->RegFrfLsb = ( uint8_t )( freq & 0xFF ); + SX1276WriteBuffer( REG_FRFMSB, &SX1276->RegFrfMsb, 3 ); +} + +uint32_t SX1276FskGetRFFrequency( void ) +{ + SX1276ReadBuffer( REG_FRFMSB, &SX1276->RegFrfMsb, 3 ); + FskSettings.RFFrequency = ( ( uint32_t )SX1276->RegFrfMsb << 16 ) | ( ( uint32_t )SX1276->RegFrfMid << 8 ) | ( ( uint32_t )SX1276->RegFrfLsb ); + FskSettings.RFFrequency = ( uint32_t )( ( double )FskSettings.RFFrequency * ( double )FREQ_STEP ); + + return FskSettings.RFFrequency; +} + +void SX1276FskRxCalibrate( void ) +{ + // the function RadioRxCalibrate is called just after the reset so all register are at their default values + uint8_t regPaConfigInitVal; + uint32_t initialFreq; + + // save register values; + SX1276Read( REG_PACONFIG, ®PaConfigInitVal ); + initialFreq = SX1276FskGetRFFrequency( ); + + // Cut the PA just in case + SX1276->RegPaConfig = 0x00; // RFO output, power = -1 dBm + SX1276Write( REG_PACONFIG, SX1276->RegPaConfig ); + + // Set Frequency in HF band + SX1276FskSetRFFrequency( 860000000 ); + + // Rx chain re-calibration workaround + SX1276Read( REG_IMAGECAL, &SX1276->RegImageCal ); + SX1276->RegImageCal = ( SX1276->RegImageCal & RF_IMAGECAL_IMAGECAL_MASK ) | RF_IMAGECAL_IMAGECAL_START; + SX1276Write( REG_IMAGECAL, SX1276->RegImageCal ); + + SX1276Read( REG_IMAGECAL, &SX1276->RegImageCal ); + // rx_cal_run goes low when calibration in finished + while( ( SX1276->RegImageCal & RF_IMAGECAL_IMAGECAL_RUNNING ) == RF_IMAGECAL_IMAGECAL_RUNNING ) + { + SX1276Read( REG_IMAGECAL, &SX1276->RegImageCal ); + } + + // reload saved values into the registers + SX1276->RegPaConfig = regPaConfigInitVal; + SX1276Write( REG_PACONFIG, SX1276->RegPaConfig ); + + SX1276FskSetRFFrequency( initialFreq ); + +} + +void SX1276FskSetBitrate( uint32_t bitrate ) +{ + FskSettings.Bitrate = bitrate; + + bitrate = ( uint16_t )( ( double )XTAL_FREQ / ( double )bitrate ); + SX1276->RegBitrateMsb = ( uint8_t )( bitrate >> 8 ); + SX1276->RegBitrateLsb = ( uint8_t )( bitrate & 0xFF ); + SX1276WriteBuffer( REG_BITRATEMSB, &SX1276->RegBitrateMsb, 2 ); +} + +uint32_t SX1276FskGetBitrate( void ) +{ + SX1276ReadBuffer( REG_BITRATEMSB, &SX1276->RegBitrateMsb, 2 ); + FskSettings.Bitrate = ( ( ( uint32_t )SX1276->RegBitrateMsb << 8 ) | ( ( uint32_t )SX1276->RegBitrateLsb ) ); + FskSettings.Bitrate = ( uint16_t )( ( double )XTAL_FREQ / ( double )FskSettings.Bitrate ); + + return FskSettings.Bitrate; +} + +void SX1276FskSetFdev( uint32_t fdev ) +{ + FskSettings.Fdev = fdev; + + SX1276Read( REG_FDEVMSB, &SX1276->RegFdevMsb ); + + fdev = ( uint16_t )( ( double )fdev / ( double )FREQ_STEP ); + SX1276->RegFdevMsb = ( ( SX1276->RegFdevMsb & RF_FDEVMSB_FDEV_MASK ) | ( ( ( uint8_t )( fdev >> 8 ) ) & ~RF_FDEVMSB_FDEV_MASK ) ); + SX1276->RegFdevLsb = ( uint8_t )( fdev & 0xFF ); + SX1276WriteBuffer( REG_FDEVMSB, &SX1276->RegFdevMsb, 2 ); +} + +uint32_t SX1276FskGetFdev( void ) +{ + SX1276ReadBuffer( REG_FDEVMSB, &SX1276->RegFdevMsb, 2 ); + FskSettings.Fdev = ( ( ( uint32_t )( ( SX1276->RegFdevMsb << 8 ) & ~RF_FDEVMSB_FDEV_MASK ) ) | ( ( uint32_t )SX1276->RegFdevLsb ) ); + FskSettings.Fdev = ( uint16_t )( ( double )FskSettings.Fdev * ( double )FREQ_STEP ); + + return FskSettings.Fdev; +} + +void SX1276FskSetRFPower( int8_t power ) +{ + SX1276Read( REG_PACONFIG, &SX1276->RegPaConfig ); + SX1276Read( REG_PADAC, &SX1276->RegPaDac ); + + if( ( SX1276->RegPaConfig & RF_PACONFIG_PASELECT_PABOOST ) == RF_PACONFIG_PASELECT_PABOOST ) + { + if( ( SX1276->RegPaDac & 0x87 ) == 0x87 ) + { + if( power < 5 ) + { + power = 5; + } + if( power > 20 ) + { + power = 20; + } + SX1276->RegPaConfig = ( SX1276->RegPaConfig & RF_PACONFIG_MAX_POWER_MASK ) | 0x70; + SX1276->RegPaConfig = ( SX1276->RegPaConfig & RF_PACONFIG_OUTPUTPOWER_MASK ) | ( uint8_t )( ( uint16_t )( power - 5 ) & 0x0F ); + } + else + { + if( power < 2 ) + { + power = 2; + } + if( power > 17 ) + { + power = 17; + } + SX1276->RegPaConfig = ( SX1276->RegPaConfig & RF_PACONFIG_MAX_POWER_MASK ) | 0x70; + SX1276->RegPaConfig = ( SX1276->RegPaConfig & RF_PACONFIG_OUTPUTPOWER_MASK ) | ( uint8_t )( ( uint16_t )( power - 2 ) & 0x0F ); + } + } + else + { + if( power < -1 ) + { + power = -1; + } + if( power > 14 ) + { + power = 14; + } + SX1276->RegPaConfig = ( SX1276->RegPaConfig & RF_PACONFIG_MAX_POWER_MASK ) | 0x70; + SX1276->RegPaConfig = ( SX1276->RegPaConfig & RF_PACONFIG_OUTPUTPOWER_MASK ) | ( uint8_t )( ( uint16_t )( power + 1 ) & 0x0F ); + } + SX1276Write( REG_PACONFIG, SX1276->RegPaConfig ); + FskSettings.Power = power; +} + +int8_t SX1276FskGetRFPower( void ) +{ + SX1276Read( REG_PACONFIG, &SX1276->RegPaConfig ); + SX1276Read( REG_PADAC, &SX1276->RegPaDac ); + + if( ( SX1276->RegPaConfig & RF_PACONFIG_PASELECT_PABOOST ) == RF_PACONFIG_PASELECT_PABOOST ) + { + if( ( SX1276->RegPaDac & 0x07 ) == 0x07 ) + { + FskSettings.Power = 5 + ( SX1276->RegPaConfig & ~RF_PACONFIG_OUTPUTPOWER_MASK ); + } + else + { + FskSettings.Power = 2 + ( SX1276->RegPaConfig & ~RF_PACONFIG_OUTPUTPOWER_MASK ); + } + } + else + { + FskSettings.Power = -1 + ( SX1276->RegPaConfig & ~RF_PACONFIG_OUTPUTPOWER_MASK ); + } + return FskSettings.Power; +} + +/*! + * \brief Computes the Rx bandwidth with the mantisse and exponent + * + * \param [IN] mantisse Mantisse of the bandwidth value + * \param [IN] exponent Exponent of the bandwidth value + * \retval bandwidth Computed bandwidth + */ +static uint32_t SX1276FskComputeRxBw( uint8_t mantisse, uint8_t exponent ) +{ + // rxBw + if( ( SX1276->RegOpMode & RF_OPMODE_MODULATIONTYPE_FSK ) == RF_OPMODE_MODULATIONTYPE_FSK ) + { + return ( uint32_t )( ( double )XTAL_FREQ / ( mantisse * ( double )pow( 2, exponent + 2 ) ) ); + } + else + { + return ( uint32_t )( ( double )XTAL_FREQ / ( mantisse * ( double )pow( 2, exponent + 3 ) ) ); + } +} + +/*! + * \brief Computes the mantisse and exponent from the bandwitdh value + * + * \param [IN] rxBwValue Bandwidth value + * \param [OUT] mantisse Mantisse of the bandwidth value + * \param [OUT] exponent Exponent of the bandwidth value + */ +static void SX1276FskComputeRxBwMantExp( uint32_t rxBwValue, uint8_t* mantisse, uint8_t* exponent ) +{ + uint8_t tmpExp = 0; + uint8_t tmpMant = 0; + + double tmpRxBw = 0; + double rxBwMin = 10e6; + + for( tmpExp = 0; tmpExp < 8; tmpExp++ ) + { + for( tmpMant = 16; tmpMant <= 24; tmpMant += 4 ) + { + if( ( SX1276->RegOpMode & RF_OPMODE_MODULATIONTYPE_FSK ) == RF_OPMODE_MODULATIONTYPE_FSK ) + { + tmpRxBw = ( double )XTAL_FREQ / ( tmpMant * ( double )pow( 2, tmpExp + 2 ) ); + } + else + { + tmpRxBw = ( double )XTAL_FREQ / ( tmpMant * ( double )pow( 2, tmpExp + 3 ) ); + } + if( fabs( tmpRxBw - rxBwValue ) < rxBwMin ) + { + rxBwMin = fabs( tmpRxBw - rxBwValue ); + *mantisse = tmpMant; + *exponent = tmpExp; + } + } + } +} + +void SX1276FskSetDccBw( uint8_t* reg, uint32_t dccValue, uint32_t rxBwValue ) +{ + uint8_t mantisse = 0; + uint8_t exponent = 0; + + if( reg == &SX1276->RegRxBw ) + { + *reg = ( uint8_t )dccValue & 0x60; + } + else + { + *reg = 0; + } + + SX1276FskComputeRxBwMantExp( rxBwValue, &mantisse, &exponent ); + + switch( mantisse ) + { + case 16: + *reg |= ( uint8_t )( 0x00 | ( exponent & 0x07 ) ); + break; + case 20: + *reg |= ( uint8_t )( 0x08 | ( exponent & 0x07 ) ); + break; + case 24: + *reg |= ( uint8_t )( 0x10 | ( exponent & 0x07 ) ); + break; + default: + // Something went terribely wrong + break; + } + + if( reg == &SX1276->RegRxBw ) + { + SX1276Write( REG_RXBW, *reg ); + FskSettings.RxBw = rxBwValue; + } + else + { + SX1276Write( REG_AFCBW, *reg ); + FskSettings.RxBwAfc = rxBwValue; + } +} + +uint32_t SX1276FskGetBw( uint8_t* reg ) +{ + uint32_t rxBwValue = 0; + uint8_t mantisse = 0; + switch( ( *reg & 0x18 ) >> 3 ) + { + case 0: + mantisse = 16; + break; + case 1: + mantisse = 20; + break; + case 2: + mantisse = 24; + break; + default: + break; + } + rxBwValue = SX1276FskComputeRxBw( mantisse, ( uint8_t )*reg & 0x07 ); + if( reg == &SX1276->RegRxBw ) + { + return FskSettings.RxBw = rxBwValue; + } + else + { + return FskSettings.RxBwAfc = rxBwValue; + } +} + +void SX1276FskSetPacketCrcOn( bool enable ) +{ + SX1276Read( REG_PACKETCONFIG1, &SX1276->RegPacketConfig1 ); + SX1276->RegPacketConfig1 = ( SX1276->RegPacketConfig1 & RF_PACKETCONFIG1_CRC_MASK ) | ( enable << 4 ); + SX1276Write( REG_PACKETCONFIG1, SX1276->RegPacketConfig1 ); + FskSettings.CrcOn = enable; +} + +bool SX1276FskGetPacketCrcOn( void ) +{ + SX1276Read( REG_PACKETCONFIG1, &SX1276->RegPacketConfig1 ); + FskSettings.CrcOn = ( SX1276->RegPacketConfig1 & RF_PACKETCONFIG1_CRC_ON ) >> 4; + return FskSettings.CrcOn; +} + +void SX1276FskSetAfcOn( bool enable ) +{ + SX1276Read( REG_RXCONFIG, &SX1276->RegRxConfig ); + SX1276->RegRxConfig = ( SX1276->RegRxConfig & RF_RXCONFIG_AFCAUTO_MASK ) | ( enable << 4 ); + SX1276Write( REG_RXCONFIG, SX1276->RegRxConfig ); + FskSettings.AfcOn = enable; +} + +bool SX1276FskGetAfcOn( void ) +{ + SX1276Read( REG_RXCONFIG, &SX1276->RegRxConfig ); + FskSettings.AfcOn = ( SX1276->RegRxConfig & RF_RXCONFIG_AFCAUTO_ON ) >> 4; + return FskSettings.AfcOn; +} + +void SX1276FskSetPayloadLength( uint8_t value ) +{ + SX1276->RegPayloadLength = value; + SX1276Write( REG_PAYLOADLENGTH, SX1276->RegPayloadLength ); + FskSettings.PayloadLength = value; +} + +uint8_t SX1276FskGetPayloadLength( void ) +{ + SX1276Read( REG_PAYLOADLENGTH, &SX1276->RegPayloadLength ); + FskSettings.PayloadLength = SX1276->RegPayloadLength; + return FskSettings.PayloadLength; +} + +void SX1276FskSetPa20dBm( bool enale ) +{ + SX1276Read( REG_PADAC, &SX1276->RegPaDac ); + SX1276Read( REG_PACONFIG, &SX1276->RegPaConfig ); + + if( ( SX1276->RegPaConfig & RF_PACONFIG_PASELECT_PABOOST ) == RF_PACONFIG_PASELECT_PABOOST ) + { + if( enale == true ) + { + SX1276->RegPaDac = 0x87; + } + } + else + { + SX1276->RegPaDac = 0x84; + } + SX1276Write( REG_PADAC, SX1276->RegPaDac ); +} + +bool SX1276FskGetPa20dBm( void ) +{ + SX1276Read( REG_PADAC, &SX1276->RegPaDac ); + + return ( ( SX1276->RegPaDac & 0x07 ) == 0x07 ) ? true : false; +} + +void SX1276FskSetPAOutput( uint8_t outputPin ) +{ + SX1276Read( REG_PACONFIG, &SX1276->RegPaConfig ); + SX1276->RegPaConfig = (SX1276->RegPaConfig & RF_PACONFIG_PASELECT_MASK ) | outputPin; + SX1276Write( REG_PACONFIG, SX1276->RegPaConfig ); +} + +uint8_t SX1276FskGetPAOutput( void ) +{ + SX1276Read( REG_PACONFIG, &SX1276->RegPaConfig ); + return SX1276->RegPaConfig & ~RF_PACONFIG_PASELECT_MASK; +} + + +void SX1276FskSetPaRamp( uint8_t value ) +{ + SX1276Read( REG_PARAMP, &SX1276->RegPaRamp ); + SX1276->RegPaRamp = ( SX1276->RegPaRamp & RF_PARAMP_MASK ) | ( value & ~RF_PARAMP_MASK ); + SX1276Write( REG_PARAMP, SX1276->RegPaRamp ); +} + +uint8_t SX1276FskGetPaRamp( void ) +{ + SX1276Read( REG_PARAMP, &SX1276->RegPaRamp ); + return SX1276->RegPaRamp & ~RF_PARAMP_MASK; +} + +void SX1276FskSetRssiOffset( int8_t offset ) +{ + SX1276Read( REG_RSSICONFIG, &SX1276->RegRssiConfig ); + if( offset < 0 ) + { + offset = ( ~offset & 0x1F ); + offset += 1; + offset = -offset; + } + SX1276->RegRssiConfig |= ( uint8_t )( ( offset & 0x1F ) << 3 ); + SX1276Write( REG_RSSICONFIG, SX1276->RegRssiConfig ); +} + +int8_t SX1276FskGetRssiOffset( void ) +{ + SX1276Read( REG_RSSICONFIG, &SX1276->RegRssiConfig ); + int8_t offset = SX1276->RegRssiConfig >> 3; + if( ( offset & 0x10 ) == 0x10 ) + { + offset = ( ~offset & 0x1F ); + offset += 1; + offset = -offset; + } + return offset; +} + +int8_t SX1276FskGetRawTemp( void ) +{ + int8_t temp = 0; + uint8_t previousOpMode; + uint32_t startTick; + + // Enable Temperature reading + SX1276Read( REG_IMAGECAL, &SX1276->RegImageCal ); + SX1276->RegImageCal = ( SX1276->RegImageCal & RF_IMAGECAL_TEMPMONITOR_MASK ) | RF_IMAGECAL_TEMPMONITOR_ON; + SX1276Write( REG_IMAGECAL, SX1276->RegImageCal ); + + // save current Op Mode + SX1276Read( REG_OPMODE, &SX1276->RegOpMode ); + previousOpMode = SX1276->RegOpMode; + + // put device in FSK RxSynth + SX1276->RegOpMode = RF_OPMODE_SYNTHESIZER_RX; + SX1276Write( REG_OPMODE, SX1276->RegOpMode ); + + // Wait 1ms + startTick = GET_TICK_COUNT( ); + while( ( GET_TICK_COUNT( ) - startTick ) < TICK_RATE_MS( 1 ) ); + + // Disable Temperature reading + SX1276Read( REG_IMAGECAL, &SX1276->RegImageCal ); + SX1276->RegImageCal = ( SX1276->RegImageCal & RF_IMAGECAL_TEMPMONITOR_MASK ) | RF_IMAGECAL_TEMPMONITOR_OFF; + SX1276Write( REG_IMAGECAL, SX1276->RegImageCal ); + + // Read temperature + SX1276Read( REG_TEMP, &SX1276->RegTemp ); + + temp = SX1276->RegTemp & 0x7F; + + if( ( SX1276->RegTemp & 0x80 ) == 0x80 ) + { + temp *= -1; + } + + // Reload previous Op Mode + SX1276Write( REG_OPMODE, previousOpMode ); + + return temp; +} + +int8_t SX1276FskCalibreateTemp( int8_t actualTemp ) +{ + return actualTemp - SX1276FskGetRawTemp( ); +} + +int8_t SX1276FskGetTemp( int8_t compensationFactor ) +{ + return SX1276FskGetRawTemp( ) + compensationFactor; +} + +#endif // USE_SX1276_RADIO diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-FskMisc.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-FskMisc.h new file mode 100644 index 000000000..7ada359a0 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-FskMisc.h @@ -0,0 +1,241 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file sx1276-FskMisc.h + * \brief SX1276 RF chip high level functions driver + * + * \remark Optional support functions. + * These functions are defined only to easy the change of the + * parameters. + * For a final firmware the radio parameters will be known so + * there is no need to support all possible parameters. + * Removing these functions will greatly reduce the final firmware + * size. + * + * \version 2.0.B2 + * \date May 6 2013 + * \author Gregory Cristian + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +#ifndef __SX1276_FSK_MISC_H__ +#define __SX1276_FSK_MISC_H__ + +/*! + * \brief Writes the new RF frequency value + * + * \param [IN] freq New RF frequency value in [Hz] + */ +void SX1276FskSetRFFrequency( uint32_t freq ); + +/*! + * \brief Reads the current RF frequency value + * + * \retval freq Current RF frequency value in [Hz] + */ +uint32_t SX1276FskGetRFFrequency( void ); + +/*! + * \brief Calibrate RSSI and I/Q mismatch for HF + * + * \retval none + */ +void SX1276FskRxCalibrate( void ); + +/*! + * \brief Writes the new bitrate value + * + * \param [IN] bitrate New bitrate value in [bps] + */ +void SX1276FskSetBitrate( uint32_t bitrate ); + +/*! + * \brief Reads the current bitrate value + * + * \retval bitrate Current bitrate value in [bps] + */ +uint32_t SX1276FskGetBitrate( void ); + +/*! + * \brief Writes the new frequency deviation value + * + * \param [IN] fdev New frequency deviation value in [Hz] + */ +void SX1276FskSetFdev( uint32_t fdev ); + +/*! + * \brief Reads the current frequency deviation value + * + * \retval fdev Current frequency deviation value in [Hz] + */ +uint32_t SX1276FskGetFdev( void ); + +/*! + * \brief Writes the new RF output power value + * + * \param [IN] power New output power value in [dBm] + */ +void SX1276FskSetRFPower( int8_t power ); + +/*! + * \brief Reads the current RF output power value + * + * \retval power Current output power value in [dBm] + */ +int8_t SX1276FskGetRFPower( void ); + +/*! + * \brief Writes the DC offset canceller and Rx bandwidth values + * + * \remark For SX1276 there is no DCC setting. dccValue should be 0 + * ie: SX1276SetDccBw( &SX1276.RegRxBw, 0, 62500 ); + * + * \param [IN] reg Register pointer to either SX1231.RegRxBw or SX1231.RegAfcBw + * \param [IN] dccValue New DC offset canceller value in [Hz] ( SX1231 only ) + * \param [IN] rxBwValue New Rx bandwidth value in [Hz] + */ +void SX1276FskSetDccBw( uint8_t* reg, uint32_t dccValue, uint32_t rxBwValue ); + +/*! + * \brief Reads the current bandwidth setting + * + * \param [IN] reg Register pointer to either SX1231.RegRxBw or SX1231.RegAfcBw + * + * \retval bandwidth Bandwidth value + */ +uint32_t SX1276FskGetBw( uint8_t* reg ); + +/*! + * \brief Enables/Disables CRC + * + * \param [IN] enable CRC enable/disable + */ +void SX1276FskSetPacketCrcOn( bool enable ); + +/*! + * \brief Reads the current CRC Enable/Disbale value + * + * \retval enable Current CRC Enable/Disbale value + */ +bool SX1276FskGetPacketCrcOn( void ); + +/*! + * \brief Enables/Disables AFC + * + * \param [IN] enable AFC enable/disable + */ +void SX1276FskSetAfcOn( bool enable ); + +/*! + * \brief Reads the current AFC Enable/Disbale value + * + * \retval enable Current AFC Enable/Disbale value + */ +bool SX1276FskGetAfcOn( void ); + +/*! + * \brief Writes the new payload length value + * + * \param [IN] value New payload length value + */ +void SX1276FskSetPayloadLength( uint8_t value ); + +/*! + * \brief Reads the current payload length value + * + * \retval value Current payload length value + */ +uint8_t SX1276FskGetPayloadLength( void ); + +/*! + * \brief Enables/Disables the 20 dBm PA + * + * \param [IN] enable [true, false] + */ +void SX1276FskSetPa20dBm( bool enale ); + +/*! + * \brief Gets the current 20 dBm PA status + * + * \retval enable [true, false] + */ +bool SX1276FskGetPa20dBm( void ); + +/*! + * \brief Set the RF Output pin + * + * \param [IN] RF_PACONFIG_PASELECT_PABOOST or RF_PACONFIG_PASELECT_RFO + */ +void SX1276FskSetPAOutput( uint8_t outputPin ); + +/*! + * \brief Gets the used RF Ouptu pin + * + * \retval RF_PACONFIG_PASELECT_PABOOST or RF_PACONFIG_PASELECT_RFO + */ +uint8_t SX1276FskGetPAOutput( void ); + +/*! + * \brief Writes the new PA rise/fall time of ramp up/down value + * + * \param [IN] value New PaRamp value + */ +void SX1276FskSetPaRamp( uint8_t value ); + +/*! + * \brief Reads the current PA rise/fall time of ramp up/down value + * + * \retval value Current PaRamp value + */ +uint8_t SX1276FskGetPaRamp( void ); + +/*! + * \brief Applies an offset to the RSSI. Compensates board components + * + * \param [IN] offset Offset to be applied (+/-) + */ +void SX1276FskSetRssiOffset( int8_t offset ); + +/*! + * \brief Gets the current RSSI offset. + * + * \retval offset Current offset (+/-) + */ +int8_t SX1276FskGetRssiOffset( void ); + +/*! + * \brief Writes the new value for the preamble size + * + * \param [IN] size New value of pramble size + */ +void SX1276FskSetPreambleSize( uint16_t size ); + +/*! + * Reads the raw temperature + * \retval temperature New raw temperature reading in 2's complement format + */ +int8_t SX1276FskGetRawTemp( void ); + +/*! + * Computes the temperature compensation factor + * \param [IN] actualTemp Actual temperature measured by an external device + * \retval compensationFactor Computed compensation factor + */ +int8_t SX1276FskCalibreateTemp( int8_t actualTemp ); + +/*! + * Gets the actual compensated temperature + * \param [IN] compensationFactor Return value of the calibration function + * \retval New compensated temperature value + */ +int8_t SX1276FskGetTemp( int8_t compensationFactor ); + +#endif //__SX1276_FSK_MISC_H__ \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Hal.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Hal.h new file mode 100644 index 000000000..43cdcc471 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-Hal.h @@ -0,0 +1,162 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file sx1276-Hal.h + * \brief SX1276 Hardware Abstraction Layer + * + * \version 2.0.B2 + * \date May 6 2013 + * \author Gregory Cristian + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +#ifndef __SX1276_HAL_H__ +#define __SX1276_HAL_H__ + +//#include "ioe.h" +#include "platform.h" + +/*! + * DIO state read functions mapping + */ +#define DIO0 SX1276ReadDio0( ) +#define DIO1 SX1276ReadDio1( ) +#define DIO2 SX1276ReadDio2( ) +#define DIO3 SX1276ReadDio3( ) +#define DIO4 SX1276ReadDio4( ) +#define DIO5 SX1276ReadDio5( ) + +// RXTX pin control see errata note +#define RXTX( txEnable ) SX1276WriteRxTx( txEnable ); + +#define GET_TICK_COUNT( ) rt_tick_get()//( TickCounter ) +#define TICK_RATE_MS( ms ) ( ms ) + +typedef enum +{ + RADIO_RESET_OFF, + RADIO_RESET_ON, +}tRadioResetState; + +/*! + * \brief Initializes the radio interface I/Os + */ +void SX1276InitIo( void ); + +/*! + * \brief Set the radio reset pin state + * + * \param state New reset pin state + */ +void SX1276SetReset( rt_uint8_t state ); + +/*! + * \brief Writes the radio register at the specified address + * + * \param [IN]: addr Register address + * \param [IN]: data New register value + */ +void SX1276Write( rt_uint8_t addr, rt_uint8_t data ); + +/*! + * \brief Reads the radio register at the specified address + * + * \param [IN]: addr Register address + * \param [OUT]: data Register value + */ +void SX1276Read( rt_uint8_t addr, rt_uint8_t *data ); + +/*! + * \brief Writes multiple radio registers starting at address + * + * \param [IN] addr First Radio register address + * \param [IN] buffer Buffer containing the new register's values + * \param [IN] size Number of registers to be written + */ +void SX1276WriteBuffer( rt_uint8_t addr, rt_uint8_t *buffer, rt_uint8_t size ); + +/*! + * \brief Reads multiple radio registers starting at address + * + * \param [IN] addr First Radio register address + * \param [OUT] buffer Buffer where to copy the registers data + * \param [IN] size Number of registers to be read + */ +void SX1276ReadBuffer( rt_uint8_t addr, rt_uint8_t *buffer, rt_uint8_t size ); + +/*! + * \brief Writes the buffer contents to the radio FIFO + * + * \param [IN] buffer Buffer containing data to be put on the FIFO. + * \param [IN] size Number of bytes to be written to the FIFO + */ +void SX1276WriteFifo( rt_uint8_t *buffer, rt_uint8_t size ); + +/*! + * \brief Reads the contents of the radio FIFO + * + * \param [OUT] buffer Buffer where to copy the FIFO read data. + * \param [IN] size Number of bytes to be read from the FIFO + */ +void SX1276ReadFifo( rt_uint8_t *buffer, rt_uint8_t size ); + +/*! + * \brief Gets the SX1276 DIO0 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +inline rt_uint8_t SX1276ReadDio0( void ); + +/*! + * \brief Gets the SX1276 DIO1 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +inline rt_uint8_t SX1276ReadDio1( void ); + +/*! + * \brief Gets the SX1276 DIO2 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +inline rt_uint8_t SX1276ReadDio2( void ); + +/*! + * \brief Gets the SX1276 DIO3 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +inline rt_uint8_t SX1276ReadDio3( void ); + +/*! + * \brief Gets the SX1276 DIO4 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +inline rt_uint8_t SX1276ReadDio4( void ); + +/*! + * \brief Gets the SX1276 DIO5 hardware pin status + * + * \retval status Current hardware pin status [1, 0] + */ +inline rt_uint8_t SX1276ReadDio5( void ); + +/*! + * \brief Writes the external RxTx pin value + * + * \remark see errata note + * + * \param [IN] txEnable [1: Tx, 0: Rx] + */ +inline void SX1276WriteRxTx( rt_uint8_t txEnable ); + +#endif //__SX1276_HAL_H__ \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRa.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRa.c new file mode 100644 index 000000000..9ef4985c9 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRa.c @@ -0,0 +1,797 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Original Copyright (C) SEMTECH S.A. + * Modified Copyright (C) 2020 AIIT XUOS Lab + */ +/*! + * \file sx1276-LoRa.c + * \brief SX1276 RF chip driver mode LoRa + * + * \version 2.0.0 + * \date Nov 21 2012 + * \author Miguel Luis + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +/************************************************* +File name: sx1276-LoRa.c +Description: support aiit board configure and register function +History: +1. Date: 2021-04-25 +Author: AIIT XUOS Lab +Modification: +1. replace original macro and basic date type with AIIT XUOS Lab's own defination +*************************************************/ + +#include + +#include "platform.h" + +#if defined( USE_SX1276_RADIO ) +#include "radio.h" +#include "sx1276-Hal.h" +#include "sx1276.h" +#include "sx1276-LoRaMisc.h" +#include "sx1276-LoRa.h" + +#define LoRa_FREQENCY 433000000 + +#define RSSI_OFFSET_LF -155.0 +#define RSSI_OFFSET_HF -150.0 + +#define NOISE_ABSOLUTE_ZERO -174.0 +#define NOISE_FIGURE_LF 4.0 +#define NOISE_FIGURE_HF 6.0 +typedef unsigned int uint32; +volatile uint32 TickCounter = 0; + +uint32 Tx_Time_Start,Tx_Time_End; +uint32 Rx_Time_Start,Rx_Time_End; +//Signal bandwidth, used to calculate RSSI +const double SignalBwLog[] = +{ + 3.8927900303521316335038277369285, // 7.8 kHz + 4.0177301567005500940384239336392, // 10.4 kHz + 4.193820026016112828717566631653, // 15.6 kHz + 4.31875866931372901183597627752391, // 20.8 kHz + 4.4948500216800940239313055263775, // 31.2 kHz + 4.6197891057238405255051280399961, // 41.6 kHz + 4.795880017344075219145044421102, // 62.5 kHz + 5.0969100130080564143587833158265, // 125 kHz + 5.397940008672037609572522210551, // 250 kHz + 5.6989700043360188047862611052755 // 500 kHz +}; + +//These values need testing +const double RssiOffsetLF[] = +{ + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, + -155.0, +}; + +//These values need testing +const double RssiOffsetHF[] = +{ + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, + -150.0, +}; + +/*! + * Frequency hopping frequencies table + */ +const int32_t HoppingFrequencies[] = +{ + 916500000, + 923500000, + 906500000, + 917500000, + 917500000, + 909000000, + 903000000, + 916000000, + 912500000, + 926000000, + 925000000, + 909500000, + 913000000, + 918500000, + 918500000, + 902500000, + 911500000, + 926500000, + 902500000, + 922000000, + 924000000, + 903500000, + 913000000, + 922000000, + 926000000, + 910000000, + 920000000, + 922500000, + 911000000, + 922000000, + 909500000, + 926000000, + 922000000, + 918000000, + 925500000, + 908000000, + 917500000, + 926500000, + 908500000, + 916000000, + 905500000, + 916000000, + 903000000, + 905000000, + 915000000, + 913000000, + 907000000, + 910000000, + 926500000, + 925500000, + 911000000, +}; + +// Default settings +tLoRaSettings LoRaSettings = +{ + LoRa_FREQENCY , // RFFrequency + 20, // Power + 9, // SignalBw [0: 125 kHz, 1: 250 kHz, 2: 500 kHz, 3: Reserved] + 12, // SpreadingFactor [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips] + 2, // ErrorCoding [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] + true, // CrcOn [0: OFF, 1: ON] + false, // ImplicitHeaderOn [0: OFF, 1: ON] + 0, // RxSingleOn [0: Continuous, 1 Single] + 0, // FreqHopOn [0: OFF, 1: ON] + 4, // HopPeriod Hops every frequency hopping period symbols + 1000, // TxPacketTimeout + 1000, // RxPacketTimeout + 128, // PayloadLength (used for implicit header mode) +}; + +/*! + * SX1276 LoRa registers variable + */ +tSX1276LR* SX1276LR; + +/*! + * Local RF buffer for communication support + */ +static uint8_t RFBuffer[RF_BUFFER_SIZE]; +static uint8_t TFBuffer[RF_BUFFER_SIZE]; + +/*! + * RF state machine variable + */ +static uint8_t RFLRState = RFLR_STATE_IDLE; + +/*! + * Rx management support variables + */ +static uint16_t RxPacketSize = 0; +static int8_t RxPacketSnrEstimate; +static double RxPacketRssiValue; +static uint8_t RxGain = 1; +static uint32_t RxTimeoutTimer = 0; + +/*! + * PacketTimeout Stores the Rx window time value for packet reception + */ +static uint32_t PacketTimeout; + +/*! + * Tx management support variables + */ +static uint16_t TxPacketSize = 0; + + +void SX1276LoRaInit( void ) +{ + RFLRState = RFLR_STATE_IDLE; + + SX1276LoRaSetDefaults(); + + + SX1276ReadBuffer( REG_LR_OPMODE, SX1276Regs + 1, 0x70 - 1 ); + + + //SX1276LoRaSetOpMode( RFLR_OPMODE_SLEEP ); + + SX1276LR->RegLna = RFLR_LNA_GAIN_G1; + SX1276WriteBuffer( REG_LR_OPMODE, SX1276Regs + 1, 0x70 - 1 ); + + // set the RF settings + SX1276LoRaSetRFFrequency( LoRaSettings.RFFrequency ); + SX1276LoRaSetSpreadingFactor( LoRaSettings.SpreadingFactor ); + SX1276LoRaSetErrorCoding( LoRaSettings.ErrorCoding ); + SX1276LoRaSetPacketCrcOn( LoRaSettings.CrcOn ); + SX1276LoRaSetSignalBandwidth( LoRaSettings.SignalBw ); + SX1276LoRaSetImplicitHeaderOn( LoRaSettings.ImplicitHeaderOn ); + + SX1276LoRaSetSymbTimeout(0x3FF); + SX1276LoRaSetPayloadLength( LoRaSettings.PayloadLength ); + SX1276LoRaSetLowDatarateOptimize( true ); + + #if( ( MODULE_SX1276RF1IAS == 1 ) || ( MODULE_SX1276RF1KAS == 1 ) ) + if( LoRaSettings.RFFrequency > 860000000 ) + { + SX1276LoRaSetPAOutput( RFLR_PACONFIG_PASELECT_RFO ); + SX1276LoRaSetPa20dBm( false ); + LoRaSettings.Power = 14; + SX1276LoRaSetRFPower( LoRaSettings.Power ); + } + else + { + //SX1276Write( REG_LR_OCP, 0x3f ); + SX1276LoRaSetPAOutput( RFLR_PACONFIG_PASELECT_PABOOST ); + SX1276LoRaSetPa20dBm( true ); + LoRaSettings.Power = 20; + SX1276LoRaSetRFPower( LoRaSettings.Power ); + } + #elif( MODULE_SX1276RF1JAS == 1 ) + if( LoRaSettings.RFFrequency > 380000000 ) + { + SX1276LoRaSetPAOutput( RFLR_PACONFIG_PASELECT_PABOOST ); + SX1276LoRaSetPa20dBm( true ); + LoRaSettings.Power = 20; + SX1276LoRaSetRFPower( LoRaSettings.Power ); + } + else + { + SX1276LoRaSetPAOutput( RFLR_PACONFIG_PASELECT_RFO ); + SX1276LoRaSetPa20dBm( false ); + LoRaSettings.Power = 14; + SX1276LoRaSetRFPower( LoRaSettings.Power ); + } + #endif + SX1276LoRaSetOpMode( RFLR_OPMODE_STANDBY ); +} + + +void SX1276LoRaSetDefaults( void ) +{ + // REMARK: See SX1276 datasheet for modified default values. + + // Sets IF frequency selection manual + SX1276Read( REG_LR_VERSION, &SX1276LR->RegVersion ); +} + + + +void SX1276LoRaReset( void ) +{ + uint32_t startTick; + + SX1276SetReset( RADIO_RESET_ON ); + + // Wait 1ms + startTick = GET_TICK_COUNT( ); + while( ( GET_TICK_COUNT( ) - startTick ) < TICK_RATE_MS( 1 ) ); + + SX1276SetReset( RADIO_RESET_OFF ); + + // Wait 6ms + startTick = GET_TICK_COUNT( ); + while( ( GET_TICK_COUNT( ) - startTick ) < TICK_RATE_MS( 6 ) ); +} + +void SX1276LoRaSetOpMode( uint8_t opMode ) +{ + static uint8_t opModePrev = RFLR_OPMODE_STANDBY; + static bool antennaSwitchTxOnPrev = true; + bool antennaSwitchTxOn = false; + opModePrev = SX1276LR->RegOpMode & ~RFLR_OPMODE_MASK; + if( opMode != opModePrev ) + { + if( opMode == RFLR_OPMODE_TRANSMITTER ) + { + antennaSwitchTxOn = true; + } + else + { + antennaSwitchTxOn = false; + } + if( antennaSwitchTxOn != antennaSwitchTxOnPrev ) + { + antennaSwitchTxOnPrev = antennaSwitchTxOn; // Antenna switch control + RXTX( antennaSwitchTxOn ); + } + SX1276LR->RegOpMode = ( SX1276LR->RegOpMode & RFLR_OPMODE_MASK ) | opMode; + + SX1276Write( REG_LR_OPMODE, SX1276LR->RegOpMode ); + } +} + + +uint8_t SX1276LoRaGetOpMode( void ) +{ + SX1276Read( REG_LR_OPMODE, &SX1276LR->RegOpMode ); + + return SX1276LR->RegOpMode & ~RFLR_OPMODE_MASK; +} + + +uint8_t SX1276LoRaReadRxGain( void ) +{ + + SX1276Read( REG_LR_LNA, &SX1276LR->RegLna ); + return( SX1276LR->RegLna >> 5 ) & 0x07; +} + + +double SX1276LoRaReadRssi( void ) +{ + // Reads the RSSI value + SX1276Read( REG_LR_RSSIVALUE, &SX1276LR->RegRssiValue ); + + if( LoRaSettings.RFFrequency < 860000000 ) + { + return RssiOffsetLF[LoRaSettings.SignalBw] + ( double )SX1276LR->RegRssiValue; + } + else + { + return RssiOffsetHF[LoRaSettings.SignalBw] + ( double )SX1276LR->RegRssiValue; + } +} + + +uint8_t SX1276LoRaGetPacketRxGain( void ) +{ + return RxGain; +} + + +int8_t SX1276LoRaGetPacketSnr( void ) +{ + return RxPacketSnrEstimate; +} + + +double SX1276LoRaGetPacketRssi( void ) +{ + return RxPacketRssiValue; +} + + +void SX1276LoRaStartRx( void ) +{ + SX1276LoRaSetRFState( RFLR_STATE_RX_INIT ); +} + + +void SX1276LoRaGetRxPacket( void *buffer, uint16_t *size ) +{ + *size = RxPacketSize; + RxPacketSize = 0; + memcpy( (void*)buffer, (void*)RFBuffer, (size_t)*size ); +} + + +void SX1276LoRaSetTxPacket( const void *buffer, uint16_t size ) +{ + if( LoRaSettings.FreqHopOn == false ) + { + TxPacketSize = size; + } + else + { + TxPacketSize = 255; + } + memcpy( ( void * )TFBuffer, buffer, ( size_t )TxPacketSize ); + + RFLRState = RFLR_STATE_TX_INIT; +} + + +uint8_t SX1276LoRaGetRFState( void ) +{ + return RFLRState; +} + + +void SX1276LoRaSetRFState( uint8_t state ) +{ + RFLRState = state; +} + +/*! + * \brief Process the LoRa modem Rx and Tx state machines depending on the + * SX1276 operating mode. + * + * \retval rfState Current RF state [RF_IDLE, RF_BUSY, + * RF_RX_DONE, RF_RX_TIMEOUT, + * RF_TX_DONE, RF_TX_TIMEOUT] + */ +uint32_t SX1276LoRaProcess( void ) +{ + uint32_t result = RF_BUSY; + uint8_t regValue=0; + switch( RFLRState ) + { + case RFLR_STATE_IDLE: + break; + case RFLR_STATE_RX_INIT: + SX1276LoRaSetOpMode(RFLR_OPMODE_STANDBY); + + SX1276LR->RegIrqFlagsMask = RFLR_IRQFLAGS_RXTIMEOUT | + + RFLR_IRQFLAGS_PAYLOADCRCERROR | + RFLR_IRQFLAGS_VALIDHEADER | + RFLR_IRQFLAGS_TXDONE | + RFLR_IRQFLAGS_CADDONE | + RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL | + RFLR_IRQFLAGS_CADDETECTED; + SX1276Write( REG_LR_IRQFLAGSMASK, SX1276LR->RegIrqFlagsMask ); + + if(LoRaSettings.FreqHopOn == true ) + { + SX1276LR->RegHopPeriod = LoRaSettings.HopPeriod; + + SX1276Read( REG_LR_HOPCHANNEL, &SX1276LR->RegHopChannel ); + SX1276LoRaSetRFFrequency( HoppingFrequencies[SX1276LR->RegHopChannel & RFLR_HOPCHANNEL_CHANNEL_MASK] ); + } + else + { + SX1276LR->RegHopPeriod = 255; + } + + SX1276Write( REG_LR_HOPPERIOD, SX1276LR->RegHopPeriod ); + + + // RxDone + SX1276LR->RegDioMapping1 = RFLR_DIOMAPPING1_DIO0_00 | RFLR_DIOMAPPING1_DIO1_00 | RFLR_DIOMAPPING1_DIO2_00 | RFLR_DIOMAPPING1_DIO3_00; + // CadDetected + SX1276LR->RegDioMapping2 = RFLR_DIOMAPPING2_DIO4_10 | RFLR_DIOMAPPING2_DIO5_00; + + SX1276WriteBuffer( REG_LR_DIOMAPPING1, &SX1276LR->RegDioMapping1, 2 ); + + if( LoRaSettings.RxSingleOn == true ) // Rx single mode + { + SX1276LoRaSetOpMode( RFLR_OPMODE_RECEIVER_SINGLE ); + } + else // Rx continuous mode + { + SX1276LR->RegFifoAddrPtr = SX1276LR->RegFifoRxBaseAddr; + + SX1276Write( REG_LR_FIFOADDRPTR, SX1276LR->RegFifoAddrPtr ); + SX1276LoRaSetOpMode( RFLR_OPMODE_RECEIVER ); + + } + memset( RFBuffer, 0, ( size_t )RF_BUFFER_SIZE ); + Rx_Time_Start=TickCounter; + PacketTimeout = LoRaSettings.RxPacketTimeout; + RxTimeoutTimer = GET_TICK_COUNT( ); + RFLRState = RFLR_STATE_RX_RUNNING; + break; + case RFLR_STATE_RX_RUNNING: + SX1276Read(0x12,®Value); + //if( DIO0 == 1 ) // RxDone + if(regValue & (1<<6)) + { + + RxTimeoutTimer = GET_TICK_COUNT( ); + if( LoRaSettings.FreqHopOn == true ) + { + SX1276Read( REG_LR_HOPCHANNEL, &SX1276LR->RegHopChannel ); + SX1276LoRaSetRFFrequency( HoppingFrequencies[SX1276LR->RegHopChannel & RFLR_HOPCHANNEL_CHANNEL_MASK] ); + } + // Clear Irq + SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_RXDONE ); + RFLRState = RFLR_STATE_RX_DONE; + } + //if( DIO2 == 1 ) // FHSS Changed Channel + if(regValue & (1<<1)) + { + RxTimeoutTimer = GET_TICK_COUNT( ); + if( LoRaSettings.FreqHopOn == true ) + { + SX1276Read( REG_LR_HOPCHANNEL, &SX1276LR->RegHopChannel ); + SX1276LoRaSetRFFrequency( HoppingFrequencies[SX1276LR->RegHopChannel & RFLR_HOPCHANNEL_CHANNEL_MASK] ); + } + // Clear Irq + SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL ); + //RxGain = SX1276LoRaReadRxGain( ); + } + if( LoRaSettings.RxSingleOn == true ) // Rx single mode + { + if( ( GET_TICK_COUNT( ) - RxTimeoutTimer ) > PacketTimeout ) + { + RFLRState = RFLR_STATE_RX_TIMEOUT; + } + } + break; + case RFLR_STATE_RX_DONE: + + + SX1276Read( REG_LR_IRQFLAGS, &SX1276LR->RegIrqFlags ); + if( ( SX1276LR->RegIrqFlags & RFLR_IRQFLAGS_PAYLOADCRCERROR ) == RFLR_IRQFLAGS_PAYLOADCRCERROR ) + { + // Clear Irq + SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_PAYLOADCRCERROR ); + if( LoRaSettings.RxSingleOn == true ) // Rx single mode + { + RFLRState = RFLR_STATE_RX_INIT; + } + else + { + RFLRState = RFLR_STATE_RX_RUNNING; + } + break; + } + +/* { + uint8_t rxSnrEstimate; + + SX1276Read( REG_LR_PKTSNRVALUE, &rxSnrEstimate ); + if( rxSnrEstimate & 0x80 ) + { + + RxPacketSnrEstimate = ( ( ~rxSnrEstimate + 1 ) & 0xFF ) >> 2; + RxPacketSnrEstimate = -RxPacketSnrEstimate; + } + else + { + RxPacketSnrEstimate = ( rxSnrEstimate & 0xFF ) >> 2; + } + } + if( LoRaSettings.RFFrequency < 860000000 ) + { + if( RxPacketSnrEstimate < 0 ) + { + + RxPacketRssiValue = NOISE_ABSOLUTE_ZERO + 10.0 * SignalBwLog[LoRaSettings.SignalBw] + NOISE_FIGURE_LF + ( double )RxPacketSnrEstimate; + } + else + { + SX1276Read( REG_LR_PKTRSSIVALUE, &SX1276LR->RegPktRssiValue ); + RxPacketRssiValue = RssiOffsetLF[LoRaSettings.SignalBw] + ( double )SX1276LR->RegPktRssiValue; + } + } + else + { + if( RxPacketSnrEstimate < 0 ) + { + RxPacketRssiValue = NOISE_ABSOLUTE_ZERO + 10.0 * SignalBwLog[LoRaSettings.SignalBw] + NOISE_FIGURE_HF + ( double )RxPacketSnrEstimate; + } + else + { + SX1276Read( REG_LR_PKTRSSIVALUE, &SX1276LR->RegPktRssiValue ); + RxPacketRssiValue = RssiOffsetHF[LoRaSettings.SignalBw] + ( double )SX1276LR->RegPktRssiValue; + } + }*/ + if( LoRaSettings.RxSingleOn == true ) // Rx single mode + { + SX1276LR->RegFifoAddrPtr = SX1276LR->RegFifoRxBaseAddr; + SX1276Write( REG_LR_FIFOADDRPTR, SX1276LR->RegFifoAddrPtr ); + if( LoRaSettings.ImplicitHeaderOn == true ) + { + RxPacketSize = SX1276LR->RegPayloadLength; + SX1276ReadFifo( RFBuffer, SX1276LR->RegPayloadLength ); + } + else + { + + SX1276Read( REG_LR_NBRXBYTES, &SX1276LR->RegNbRxBytes ); + RxPacketSize = SX1276LR->RegNbRxBytes; + SX1276ReadFifo( RFBuffer, SX1276LR->RegNbRxBytes ); + } + } + else // Rx continuous mode + { + + SX1276Read( REG_LR_FIFORXCURRENTADDR, &SX1276LR->RegFifoRxCurrentAddr ); + if( LoRaSettings.ImplicitHeaderOn == true ) + { + RxPacketSize = SX1276LR->RegPayloadLength; + SX1276LR->RegFifoAddrPtr = SX1276LR->RegFifoRxCurrentAddr; + SX1276Write( REG_LR_FIFOADDRPTR, SX1276LR->RegFifoAddrPtr ); + SX1276ReadFifo( RFBuffer, SX1276LR->RegPayloadLength ); + } + else + { + SX1276Read( REG_LR_NBRXBYTES, &SX1276LR->RegNbRxBytes ); + RxPacketSize = SX1276LR->RegNbRxBytes; + SX1276LR->RegFifoAddrPtr = SX1276LR->RegFifoRxCurrentAddr; + SX1276Write( REG_LR_FIFOADDRPTR, SX1276LR->RegFifoAddrPtr ); + SX1276ReadFifo( RFBuffer, SX1276LR->RegNbRxBytes ); + } + } + if( LoRaSettings.RxSingleOn == true ) // Rx single mode + { + RFLRState = RFLR_STATE_RX_INIT; + } + else // Rx continuous mode + { + RFLRState = RFLR_STATE_RX_RUNNING; + } + Rx_Time_End=TickCounter; + result = RF_RX_DONE; + break; + case RFLR_STATE_RX_TIMEOUT: + RFLRState = RFLR_STATE_RX_INIT; + result = RF_RX_TIMEOUT; + break; + case RFLR_STATE_TX_INIT: + Tx_Time_Start=TickCounter; + SX1276LoRaSetOpMode( RFLR_OPMODE_STANDBY ); + if( LoRaSettings.FreqHopOn == true ) + { + SX1276LR->RegIrqFlagsMask = RFLR_IRQFLAGS_RXTIMEOUT | + RFLR_IRQFLAGS_RXDONE | + RFLR_IRQFLAGS_PAYLOADCRCERROR | + RFLR_IRQFLAGS_VALIDHEADER | + //RFLR_IRQFLAGS_TXDONE | + RFLR_IRQFLAGS_CADDONE | + //RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL | + RFLR_IRQFLAGS_CADDETECTED; + SX1276LR->RegHopPeriod = LoRaSettings.HopPeriod; + SX1276Read( REG_LR_HOPCHANNEL, &SX1276LR->RegHopChannel ); + SX1276LoRaSetRFFrequency( HoppingFrequencies[SX1276LR->RegHopChannel & RFLR_HOPCHANNEL_CHANNEL_MASK] ); + } + else + { + + SX1276LR->RegIrqFlagsMask = RFLR_IRQFLAGS_RXTIMEOUT | + RFLR_IRQFLAGS_RXDONE | + RFLR_IRQFLAGS_PAYLOADCRCERROR | + RFLR_IRQFLAGS_VALIDHEADER | + //RFLR_IRQFLAGS_TXDONE | + RFLR_IRQFLAGS_CADDONE | + RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL | + RFLR_IRQFLAGS_CADDETECTED; + SX1276LR->RegHopPeriod = 0; + } + SX1276Write( REG_LR_HOPPERIOD, SX1276LR->RegHopPeriod ); + SX1276Write( REG_LR_IRQFLAGSMASK, SX1276LR->RegIrqFlagsMask ); + // Initializes the payload size + SX1276LR->RegPayloadLength = TxPacketSize; + SX1276Write( REG_LR_PAYLOADLENGTH, SX1276LR->RegPayloadLength ); + + SX1276LR->RegFifoTxBaseAddr = 0x00; // Full buffer used for Tx + SX1276Write( REG_LR_FIFOTXBASEADDR, SX1276LR->RegFifoTxBaseAddr ); + + SX1276LR->RegFifoAddrPtr = SX1276LR->RegFifoTxBaseAddr; + SX1276Write( REG_LR_FIFOADDRPTR, SX1276LR->RegFifoAddrPtr ); + // Write payload buffer to LORA modem + SX1276WriteFifo( TFBuffer, SX1276LR->RegPayloadLength ); + // TxDone RxTimeout FhssChangeChannel ValidHeader + SX1276LR->RegDioMapping1 = RFLR_DIOMAPPING1_DIO0_01 | RFLR_DIOMAPPING1_DIO1_00 | RFLR_DIOMAPPING1_DIO2_00 | RFLR_DIOMAPPING1_DIO3_01; + // PllLock Mode Ready + SX1276LR->RegDioMapping2 = RFLR_DIOMAPPING2_DIO4_01 | RFLR_DIOMAPPING2_DIO5_00; + + SX1276WriteBuffer( REG_LR_DIOMAPPING1, &SX1276LR->RegDioMapping1, 2 ); + + SX1276LoRaSetOpMode( RFLR_OPMODE_TRANSMITTER ); + + RFLRState = RFLR_STATE_TX_RUNNING; + break; + case RFLR_STATE_TX_RUNNING: + if( DIO0 == 1 ) // TxDone + { + // Clear Irq + SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_TXDONE ); + RFLRState = RFLR_STATE_TX_DONE; + } + if( DIO2 == 1 ) // FHSS Changed Channel + { + if( LoRaSettings.FreqHopOn == true ) + { + SX1276Read( REG_LR_HOPCHANNEL, &SX1276LR->RegHopChannel ); + SX1276LoRaSetRFFrequency( HoppingFrequencies[SX1276LR->RegHopChannel & RFLR_HOPCHANNEL_CHANNEL_MASK] ); + } + // Clear Irq + SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL ); + } + break; + case RFLR_STATE_TX_DONE: + Tx_Time_End=TickCounter; + SX1276LoRaSetOpMode( RFLR_OPMODE_STANDBY ); + RFLRState = RFLR_STATE_IDLE; + result = RF_TX_DONE; + break; + case RFLR_STATE_CAD_INIT: + // optimize the power consumption by switching off the transmitter as soon as the packet has been sent + SX1276LoRaSetOpMode( RFLR_OPMODE_STANDBY ); + SX1276LR->RegIrqFlagsMask = RFLR_IRQFLAGS_RXTIMEOUT | + RFLR_IRQFLAGS_RXDONE | + RFLR_IRQFLAGS_PAYLOADCRCERROR | + RFLR_IRQFLAGS_VALIDHEADER | + RFLR_IRQFLAGS_TXDONE | + //RFLR_IRQFLAGS_CADDONE | + RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL; + //RFLR_IRQFLAGS_CADDETECTED; + SX1276Write( REG_LR_IRQFLAGSMASK, SX1276LR->RegIrqFlagsMask ); + + // RxDone RxTimeout FhssChangeChannel CadDone + SX1276LR->RegDioMapping1 = RFLR_DIOMAPPING1_DIO0_00 | RFLR_DIOMAPPING1_DIO1_00 | RFLR_DIOMAPPING1_DIO2_00 | RFLR_DIOMAPPING1_DIO3_00; + // CAD Detected ModeReady + SX1276LR->RegDioMapping2 = RFLR_DIOMAPPING2_DIO4_00 | RFLR_DIOMAPPING2_DIO5_00; + SX1276WriteBuffer( REG_LR_DIOMAPPING1, &SX1276LR->RegDioMapping1, 2 ); + + + SX1276LoRaSetOpMode( RFLR_OPMODE_CAD ); + RFLRState = RFLR_STATE_CAD_RUNNING; + + break; + case RFLR_STATE_CAD_RUNNING: + SX1276Read(0x12,®Value); + int cad_done = regValue & (1<<2); + int cad_detected = regValue & (1<<0); + + if( cad_done ) //CAD Done interrupt + { + SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_CADDONE ); + if( cad_detected ) // CAD Detected interrupt + { + SX1276Write( REG_LR_IRQFLAGS, RFLR_IRQFLAGS_CADDETECTED ); + //CAD detected, we have a LoRa preamble + RFLRState = RFLR_STATE_RX_INIT; + result = RF_CHANNEL_ACTIVITY_DETECTED; + } + else + { + // The device goes in Standby Mode automatically + RFLRState = RFLR_STATE_IDLE; + result = RF_CHANNEL_EMPTY; + } + } + break; + default: + break; + } + return result; +} + +uint32_t SX1276LoraChannelEmpty( void ) +{ + uint32_t result = 0; + RFLRState = RFLR_STATE_CAD_INIT; + SX1276LoRaProcess(); + while(RFLRState == RFLR_STATE_CAD_RUNNING) + { + //KPrintf("\nLora--SX1276LoRaProcess()"); + result = SX1276LoRaProcess(); + } + + if(result == RF_CHANNEL_EMPTY) + { + KPrintf("\nLora--信道可用(RF_CHANNEL_EMPTY)\n"); + return 0; + } + else if(result == RF_CHANNEL_ACTIVITY_DETECTED) + { + KPrintf("\nLora--信道正被占用(RF_CHANNEL_ACTIVITY_DETECTED)\n"); + return 1; + } + else + { + return 2; + } +} + +#endif // USE_SX1276_RADIO \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRa.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRa.h new file mode 100644 index 000000000..eea3f332e --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRa.h @@ -0,0 +1,922 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file sx1276-LoRa.h + * \brief SX1276 RF chip driver mode LoRa + * + * \version 2.0.B2 + * \date May 6 2013 + * \author Gregory Cristian + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +#ifndef __SX1276_LORA_H__ +#define __SX1276_LORA_H__ + +/*! + * SX1276 LoRa General parameters definition + */ +typedef struct sLoRaSettings +{ + uint32_t RFFrequency; + int8_t Power; + uint8_t SignalBw; // LORA [0: 7.8 kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz, + // 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8: 250 kHz, 9: 500 kHz, other: Reserved] + uint8_t SpreadingFactor; // LORA [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips] + uint8_t ErrorCoding; // LORA [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] + bool CrcOn; // [0: OFF, 1: ON] + bool ImplicitHeaderOn; // [0: OFF, 1: ON] + bool RxSingleOn; // [0: Continuous, 1 Single] + bool FreqHopOn; // [0: OFF, 1: ON] + uint8_t HopPeriod; // Hops every frequency hopping period symbols + uint32_t TxPacketTimeout; + uint32_t RxPacketTimeout; + uint8_t PayloadLength; +}tLoRaSettings; + +/*! + * RF packet definition + */ +#define RF_BUFFER_SIZE_MAX 256 +#define RF_BUFFER_SIZE 256 + +/*! + * RF state machine + */ +//LoRa +typedef enum +{ + RFLR_STATE_IDLE, + RFLR_STATE_RX_INIT, + RFLR_STATE_RX_RUNNING, + RFLR_STATE_RX_DONE, + RFLR_STATE_RX_TIMEOUT, + RFLR_STATE_TX_INIT, + RFLR_STATE_TX_RUNNING, + RFLR_STATE_TX_DONE, + RFLR_STATE_TX_TIMEOUT, + RFLR_STATE_CAD_INIT, + RFLR_STATE_CAD_RUNNING, +}tRFLRStates; + +/*! + * SX1276 definitions + */ +#define XTAL_FREQ 32000000 +#define FREQ_STEP 61.03515625 + +/*! + * SX1276 Internal registers Address + */ +#define REG_LR_FIFO 0x00 +// Common settings +#define REG_LR_OPMODE 0x01 +#define REG_LR_BANDSETTING 0x04 +#define REG_LR_FRFMSB 0x06 +#define REG_LR_FRFMID 0x07 +#define REG_LR_FRFLSB 0x08 +// Tx settings +#define REG_LR_PACONFIG 0x09 +#define REG_LR_PARAMP 0x0A +#define REG_LR_OCP 0x0B +// Rx settings +#define REG_LR_LNA 0x0C +// LoRa registers +#define REG_LR_FIFOADDRPTR 0x0D +#define REG_LR_FIFOTXBASEADDR 0x0E +#define REG_LR_FIFORXBASEADDR 0x0F +#define REG_LR_FIFORXCURRENTADDR 0x10 +#define REG_LR_IRQFLAGSMASK 0x11 +#define REG_LR_IRQFLAGS 0x12 +#define REG_LR_NBRXBYTES 0x13 +#define REG_LR_RXHEADERCNTVALUEMSB 0x14 +#define REG_LR_RXHEADERCNTVALUELSB 0x15 +#define REG_LR_RXPACKETCNTVALUEMSB 0x16 +#define REG_LR_RXPACKETCNTVALUELSB 0x17 +#define REG_LR_MODEMSTAT 0x18 +#define REG_LR_PKTSNRVALUE 0x19 +#define REG_LR_PKTRSSIVALUE 0x1A +#define REG_LR_RSSIVALUE 0x1B +#define REG_LR_HOPCHANNEL 0x1C +#define REG_LR_MODEMCONFIG1 0x1D +#define REG_LR_MODEMCONFIG2 0x1E +#define REG_LR_SYMBTIMEOUTLSB 0x1F +#define REG_LR_PREAMBLEMSB 0x20 +#define REG_LR_PREAMBLELSB 0x21 +#define REG_LR_PAYLOADLENGTH 0x22 +#define REG_LR_PAYLOADMAXLENGTH 0x23 +#define REG_LR_HOPPERIOD 0x24 +#define REG_LR_FIFORXBYTEADDR 0x25 +#define REG_LR_MODEMCONFIG3 0x26 +#define REG_LR_FEIMSB 0x28 +#define REG_LR_FEIMIB 0x29 +#define REG_LR_FEILSB 0x2A +#define REG_LR_LORADETECTOPTIMIZE 0x31 +#define REG_LR_INVERTIQ 0x33 +#define REG_LR_DETECTIONTHRESHOLD 0x37 +// end of documented register in datasheet +// I/O settings +#define REG_LR_DIOMAPPING1 0x40 +#define REG_LR_DIOMAPPING2 0x41 +// Version +#define REG_LR_VERSION 0x42 +// Additional settings +#define REG_LR_PLLHOP 0x44 +#define REG_LR_TCXO 0x4B +#define REG_LR_PADAC 0x4D +#define REG_LR_FORMERTEMP 0x5B +#define REG_LR_BITRATEFRAC 0x5D +#define REG_LR_AGCREF 0x61 +#define REG_LR_AGCTHRESH1 0x62 +#define REG_LR_AGCTHRESH2 0x63 +#define REG_LR_AGCTHRESH3 0x64 + + +/*! + * SX1276 LoRa bit control definition + */ + +/*! + * RegFifo + */ + +/*! + * RegOpMode + */ +#define RFLR_OPMODE_LONGRANGEMODE_MASK 0x7F +#define RFLR_OPMODE_LONGRANGEMODE_OFF 0x00 // Default +#define RFLR_OPMODE_LONGRANGEMODE_ON 0x80 + +#define RFLR_OPMODE_ACCESSSHAREDREG_MASK 0xBF +#define RFLR_OPMODE_ACCESSSHAREDREG_ENABLE 0x40 +#define RFLR_OPMODE_ACCESSSHAREDREG_DISABLE 0x00 // Default + +#define RFLR_OPMODE_FREQMODE_ACCESS_MASK 0xF7 +#define RFLR_OPMODE_FREQMODE_ACCESS_LF 0x08 // Default +#define RFLR_OPMODE_FREQMODE_ACCESS_HF 0x00 + +#define RFLR_OPMODE_MASK 0xF8 +#define RFLR_OPMODE_SLEEP 0x00 +#define RFLR_OPMODE_STANDBY 0x01 // Default +#define RFLR_OPMODE_SYNTHESIZER_TX 0x02 +#define RFLR_OPMODE_TRANSMITTER 0x03 +#define RFLR_OPMODE_SYNTHESIZER_RX 0x04 +#define RFLR_OPMODE_RECEIVER 0x05 +// LoRa specific modes +#define RFLR_OPMODE_RECEIVER_SINGLE 0x06 +#define RFLR_OPMODE_CAD 0x07 + +/*! + * RegBandSetting + */ +#define RFLR_BANDSETTING_MASK 0x3F +#define RFLR_BANDSETTING_AUTO 0x00 // Default +#define RFLR_BANDSETTING_DIV_BY_1 0x40 +#define RFLR_BANDSETTING_DIV_BY_2 0x80 +#define RFLR_BANDSETTING_DIV_BY_6 0xC0 + +/*! + * RegFrf (MHz) + */ + +#define RFLR_FRFMSB_434_MHZ 0x6C // Default +#define RFLR_FRFMID_434_MHZ 0x80 // Default +#define RFLR_FRFLSB_434_MHZ 0x00 // Default + +#define RFLR_FRFMSB_863_MHZ 0xD7 +#define RFLR_FRFMID_863_MHZ 0xC0 +#define RFLR_FRFLSB_863_MHZ 0x00 +#define RFLR_FRFMSB_864_MHZ 0xD8 +#define RFLR_FRFMID_864_MHZ 0x00 +#define RFLR_FRFLSB_864_MHZ 0x00 +#define RFLR_FRFMSB_865_MHZ 0xD8 +#define RFLR_FRFMID_865_MHZ 0x40 +#define RFLR_FRFLSB_865_MHZ 0x00 +#define RFLR_FRFMSB_866_MHZ 0xD8 +#define RFLR_FRFMID_866_MHZ 0x80 +#define RFLR_FRFLSB_866_MHZ 0x00 +#define RFLR_FRFMSB_867_MHZ 0xD8 +#define RFLR_FRFMID_867_MHZ 0xC0 +#define RFLR_FRFLSB_867_MHZ 0x00 +#define RFLR_FRFMSB_868_MHZ 0xD9 +#define RFLR_FRFMID_868_MHZ 0x00 +#define RFLR_FRFLSB_868_MHZ 0x00 +#define RFLR_FRFMSB_869_MHZ 0xD9 +#define RFLR_FRFMID_869_MHZ 0x40 +#define RFLR_FRFLSB_869_MHZ 0x00 +#define RFLR_FRFMSB_870_MHZ 0xD9 +#define RFLR_FRFMID_870_MHZ 0x80 +#define RFLR_FRFLSB_870_MHZ 0x00 + +#define RFLR_FRFMSB_902_MHZ 0xE1 +#define RFLR_FRFMID_902_MHZ 0x80 +#define RFLR_FRFLSB_902_MHZ 0x00 +#define RFLR_FRFMSB_903_MHZ 0xE1 +#define RFLR_FRFMID_903_MHZ 0xC0 +#define RFLR_FRFLSB_903_MHZ 0x00 +#define RFLR_FRFMSB_904_MHZ 0xE2 +#define RFLR_FRFMID_904_MHZ 0x00 +#define RFLR_FRFLSB_904_MHZ 0x00 +#define RFLR_FRFMSB_905_MHZ 0xE2 +#define RFLR_FRFMID_905_MHZ 0x40 +#define RFLR_FRFLSB_905_MHZ 0x00 +#define RFLR_FRFMSB_906_MHZ 0xE2 +#define RFLR_FRFMID_906_MHZ 0x80 +#define RFLR_FRFLSB_906_MHZ 0x00 +#define RFLR_FRFMSB_907_MHZ 0xE2 +#define RFLR_FRFMID_907_MHZ 0xC0 +#define RFLR_FRFLSB_907_MHZ 0x00 +#define RFLR_FRFMSB_908_MHZ 0xE3 +#define RFLR_FRFMID_908_MHZ 0x00 +#define RFLR_FRFLSB_908_MHZ 0x00 +#define RFLR_FRFMSB_909_MHZ 0xE3 +#define RFLR_FRFMID_909_MHZ 0x40 +#define RFLR_FRFLSB_909_MHZ 0x00 +#define RFLR_FRFMSB_910_MHZ 0xE3 +#define RFLR_FRFMID_910_MHZ 0x80 +#define RFLR_FRFLSB_910_MHZ 0x00 +#define RFLR_FRFMSB_911_MHZ 0xE3 +#define RFLR_FRFMID_911_MHZ 0xC0 +#define RFLR_FRFLSB_911_MHZ 0x00 +#define RFLR_FRFMSB_912_MHZ 0xE4 +#define RFLR_FRFMID_912_MHZ 0x00 +#define RFLR_FRFLSB_912_MHZ 0x00 +#define RFLR_FRFMSB_913_MHZ 0xE4 +#define RFLR_FRFMID_913_MHZ 0x40 +#define RFLR_FRFLSB_913_MHZ 0x00 +#define RFLR_FRFMSB_914_MHZ 0xE4 +#define RFLR_FRFMID_914_MHZ 0x80 +#define RFLR_FRFLSB_914_MHZ 0x00 +#define RFLR_FRFMSB_915_MHZ 0xE4 // Default +#define RFLR_FRFMID_915_MHZ 0xC0 // Default +#define RFLR_FRFLSB_915_MHZ 0x00 // Default +#define RFLR_FRFMSB_916_MHZ 0xE5 +#define RFLR_FRFMID_916_MHZ 0x00 +#define RFLR_FRFLSB_916_MHZ 0x00 +#define RFLR_FRFMSB_917_MHZ 0xE5 +#define RFLR_FRFMID_917_MHZ 0x40 +#define RFLR_FRFLSB_917_MHZ 0x00 +#define RFLR_FRFMSB_918_MHZ 0xE5 +#define RFLR_FRFMID_918_MHZ 0x80 +#define RFLR_FRFLSB_918_MHZ 0x00 +#define RFLR_FRFMSB_919_MHZ 0xE5 +#define RFLR_FRFMID_919_MHZ 0xC0 +#define RFLR_FRFLSB_919_MHZ 0x00 +#define RFLR_FRFMSB_920_MHZ 0xE6 +#define RFLR_FRFMID_920_MHZ 0x00 +#define RFLR_FRFLSB_920_MHZ 0x00 +#define RFLR_FRFMSB_921_MHZ 0xE6 +#define RFLR_FRFMID_921_MHZ 0x40 +#define RFLR_FRFLSB_921_MHZ 0x00 +#define RFLR_FRFMSB_922_MHZ 0xE6 +#define RFLR_FRFMID_922_MHZ 0x80 +#define RFLR_FRFLSB_922_MHZ 0x00 +#define RFLR_FRFMSB_923_MHZ 0xE6 +#define RFLR_FRFMID_923_MHZ 0xC0 +#define RFLR_FRFLSB_923_MHZ 0x00 +#define RFLR_FRFMSB_924_MHZ 0xE7 +#define RFLR_FRFMID_924_MHZ 0x00 +#define RFLR_FRFLSB_924_MHZ 0x00 +#define RFLR_FRFMSB_925_MHZ 0xE7 +#define RFLR_FRFMID_925_MHZ 0x40 +#define RFLR_FRFLSB_925_MHZ 0x00 +#define RFLR_FRFMSB_926_MHZ 0xE7 +#define RFLR_FRFMID_926_MHZ 0x80 +#define RFLR_FRFLSB_926_MHZ 0x00 +#define RFLR_FRFMSB_927_MHZ 0xE7 +#define RFLR_FRFMID_927_MHZ 0xC0 +#define RFLR_FRFLSB_927_MHZ 0x00 +#define RFLR_FRFMSB_928_MHZ 0xE8 +#define RFLR_FRFMID_928_MHZ 0x00 +#define RFLR_FRFLSB_928_MHZ 0x00 + +/*! + * RegPaConfig + */ +#define RFLR_PACONFIG_PASELECT_MASK 0x7F +#define RFLR_PACONFIG_PASELECT_PABOOST 0x80 +#define RFLR_PACONFIG_PASELECT_RFO 0x00 // Default + +#define RFLR_PACONFIG_MAX_POWER_MASK 0x8F + +#define RFLR_PACONFIG_OUTPUTPOWER_MASK 0xF0 + +/*! + * RegPaRamp + */ +#define RFLR_PARAMP_TXBANDFORCE_MASK 0xEF +#define RFLR_PARAMP_TXBANDFORCE_BAND_SEL 0x10 +#define RFLR_PARAMP_TXBANDFORCE_AUTO 0x00 // Default + +#define RFLR_PARAMP_MASK 0xF0 +#define RFLR_PARAMP_3400_US 0x00 +#define RFLR_PARAMP_2000_US 0x01 +#define RFLR_PARAMP_1000_US 0x02 +#define RFLR_PARAMP_0500_US 0x03 +#define RFLR_PARAMP_0250_US 0x04 +#define RFLR_PARAMP_0125_US 0x05 +#define RFLR_PARAMP_0100_US 0x06 +#define RFLR_PARAMP_0062_US 0x07 +#define RFLR_PARAMP_0050_US 0x08 +#define RFLR_PARAMP_0040_US 0x09 // Default +#define RFLR_PARAMP_0031_US 0x0A +#define RFLR_PARAMP_0025_US 0x0B +#define RFLR_PARAMP_0020_US 0x0C +#define RFLR_PARAMP_0015_US 0x0D +#define RFLR_PARAMP_0012_US 0x0E +#define RFLR_PARAMP_0010_US 0x0F + +/*! + * RegOcp + */ +#define RFLR_OCP_MASK 0xDF +#define RFLR_OCP_ON 0x20 // Default +#define RFLR_OCP_OFF 0x00 + +#define RFLR_OCP_TRIM_MASK 0xE0 +#define RFLR_OCP_TRIM_045_MA 0x00 +#define RFLR_OCP_TRIM_050_MA 0x01 +#define RFLR_OCP_TRIM_055_MA 0x02 +#define RFLR_OCP_TRIM_060_MA 0x03 +#define RFLR_OCP_TRIM_065_MA 0x04 +#define RFLR_OCP_TRIM_070_MA 0x05 +#define RFLR_OCP_TRIM_075_MA 0x06 +#define RFLR_OCP_TRIM_080_MA 0x07 +#define RFLR_OCP_TRIM_085_MA 0x08 +#define RFLR_OCP_TRIM_090_MA 0x09 +#define RFLR_OCP_TRIM_095_MA 0x0A +#define RFLR_OCP_TRIM_100_MA 0x0B // Default +#define RFLR_OCP_TRIM_105_MA 0x0C +#define RFLR_OCP_TRIM_110_MA 0x0D +#define RFLR_OCP_TRIM_115_MA 0x0E +#define RFLR_OCP_TRIM_120_MA 0x0F +#define RFLR_OCP_TRIM_130_MA 0x10 +#define RFLR_OCP_TRIM_140_MA 0x11 +#define RFLR_OCP_TRIM_150_MA 0x12 +#define RFLR_OCP_TRIM_160_MA 0x13 +#define RFLR_OCP_TRIM_170_MA 0x14 +#define RFLR_OCP_TRIM_180_MA 0x15 +#define RFLR_OCP_TRIM_190_MA 0x16 +#define RFLR_OCP_TRIM_200_MA 0x17 +#define RFLR_OCP_TRIM_210_MA 0x18 +#define RFLR_OCP_TRIM_220_MA 0x19 +#define RFLR_OCP_TRIM_230_MA 0x1A +#define RFLR_OCP_TRIM_240_MA 0x1B + +/*! + * RegLna + */ +#define RFLR_LNA_GAIN_MASK 0x1F +#define RFLR_LNA_GAIN_G1 0x20 // Default +#define RFLR_LNA_GAIN_G2 0x40 +#define RFLR_LNA_GAIN_G3 0x60 +#define RFLR_LNA_GAIN_G4 0x80 +#define RFLR_LNA_GAIN_G5 0xA0 +#define RFLR_LNA_GAIN_G6 0xC0 + +#define RFLR_LNA_BOOST_LF_MASK 0xE7 +#define RFLR_LNA_BOOST_LF_DEFAULT 0x00 // Default +#define RFLR_LNA_BOOST_LF_GAIN 0x08 +#define RFLR_LNA_BOOST_LF_IP3 0x10 +#define RFLR_LNA_BOOST_LF_BOOST 0x18 + +#define RFLR_LNA_RXBANDFORCE_MASK 0xFB +#define RFLR_LNA_RXBANDFORCE_BAND_SEL 0x04 +#define RFLR_LNA_RXBANDFORCE_AUTO 0x00 // Default + +#define RFLR_LNA_BOOST_HF_MASK 0xFC +#define RFLR_LNA_BOOST_HF_OFF 0x00 // Default +#define RFLR_LNA_BOOST_HF_ON 0x03 + +/*! + * RegFifoAddrPtr + */ +#define RFLR_FIFOADDRPTR 0x00 // Default + +/*! + * RegFifoTxBaseAddr + */ +#define RFLR_FIFOTXBASEADDR 0x80 // Default + +/*! + * RegFifoTxBaseAddr + */ +#define RFLR_FIFORXBASEADDR 0x00 // Default + +/*! + * RegFifoRxCurrentAddr (Read Only) + */ + +/*! + * RegIrqFlagsMask + */ +#define RFLR_IRQFLAGS_RXTIMEOUT_MASK 0x80 +#define RFLR_IRQFLAGS_RXDONE_MASK 0x40 +#define RFLR_IRQFLAGS_PAYLOADCRCERROR_MASK 0x20 +#define RFLR_IRQFLAGS_VALIDHEADER_MASK 0x10 +#define RFLR_IRQFLAGS_TXDONE_MASK 0x08 +#define RFLR_IRQFLAGS_CADDONE_MASK 0x04 +#define RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL_MASK 0x02 +#define RFLR_IRQFLAGS_CADDETECTED_MASK 0x01 + +/*! + * RegIrqFlags + */ +#define RFLR_IRQFLAGS_RXTIMEOUT 0x80 +#define RFLR_IRQFLAGS_RXDONE 0x40 +#define RFLR_IRQFLAGS_PAYLOADCRCERROR 0x20 +#define RFLR_IRQFLAGS_VALIDHEADER 0x10 +#define RFLR_IRQFLAGS_TXDONE 0x08 +#define RFLR_IRQFLAGS_CADDONE 0x04 +#define RFLR_IRQFLAGS_FHSSCHANGEDCHANNEL 0x02 +#define RFLR_IRQFLAGS_CADDETECTED 0x01 + + + +/*! + * RegFifoRxNbBytes (Read Only) // + */ + + + /*! + * RegRxHeaderCntValueMsb (Read Only) // + */ + + + /*! + * RegRxHeaderCntValueLsb (Read Only) // + */ + + +/*! + * RegRxPacketCntValueMsb (Read Only) // + */ + + + /*! + * RegRxPacketCntValueLsb (Read Only) // + */ + + + /*! + * RegModemStat (Read Only) // + */ +#define RFLR_MODEMSTAT_RX_CR_MASK 0x1F +#define RFLR_MODEMSTAT_MODEM_STATUS_MASK 0xE0 + +/*! + * RegPktSnrValue (Read Only) // + */ + + + /*! + * RegPktRssiValue (Read Only) // + */ + + +/*! + * RegRssiValue (Read Only) // + */ + +/*! + * RegHopChannel (Read Only) // + */ +#define RFLR_HOP_CHANNEL_PAYLOAD_CRC_ON_MASK 0xBF +#define RFLR_HOP_CHANNEL_PAYLOAD_CRC_ON 0x40 +#define RFLR_HOP_CHANNEL_PAYLOAD_CRC_OFF 0x00 + + /*! + * RegModemConfig1 + */ +#define RFLR_MODEMCONFIG1_BW_MASK 0x0F + +#define RFLR_MODEMCONFIG1_BW_7_81_KHZ 0x00 +#define RFLR_MODEMCONFIG1_BW_10_41_KHZ 0x10 +#define RFLR_MODEMCONFIG1_BW_15_62_KHZ 0x20 +#define RFLR_MODEMCONFIG1_BW_20_83_KHZ 0x30 +#define RFLR_MODEMCONFIG1_BW_31_25_KHZ 0x40 +#define RFLR_MODEMCONFIG1_BW_41_66_KHZ 0x50 +#define RFLR_MODEMCONFIG1_BW_62_50_KHZ 0x60 +#define RFLR_MODEMCONFIG1_BW_125_KHZ 0x70 // Default +#define RFLR_MODEMCONFIG1_BW_250_KHZ 0x80 +#define RFLR_MODEMCONFIG1_BW_500_KHZ 0x90 + +#define RFLR_MODEMCONFIG1_CODINGRATE_MASK 0xF1 +#define RFLR_MODEMCONFIG1_CODINGRATE_4_5 0x02 +#define RFLR_MODEMCONFIG1_CODINGRATE_4_6 0x04 // Default +#define RFLR_MODEMCONFIG1_CODINGRATE_4_7 0x06 +#define RFLR_MODEMCONFIG1_CODINGRATE_4_8 0x08 + +#define RFLR_MODEMCONFIG1_IMPLICITHEADER_MASK 0xFE +#define RFLR_MODEMCONFIG1_IMPLICITHEADER_ON 0x01 +#define RFLR_MODEMCONFIG1_IMPLICITHEADER_OFF 0x00 // Default + + /*! + * RegModemConfig2 + */ +#define RFLR_MODEMCONFIG2_SF_MASK 0x0F +#define RFLR_MODEMCONFIG2_SF_6 0x60 +#define RFLR_MODEMCONFIG2_SF_7 0x70 // Default +#define RFLR_MODEMCONFIG2_SF_8 0x80 +#define RFLR_MODEMCONFIG2_SF_9 0x90 +#define RFLR_MODEMCONFIG2_SF_10 0xA0 +#define RFLR_MODEMCONFIG2_SF_11 0xB0 +#define RFLR_MODEMCONFIG2_SF_12 0xC0 + +#define RFLR_MODEMCONFIG2_TXCONTINUOUSMODE_MASK 0xF7 +#define RFLR_MODEMCONFIG2_TXCONTINUOUSMODE_ON 0x08 +#define RFLR_MODEMCONFIG2_TXCONTINUOUSMODE_OFF 0x00 + +#define RFLR_MODEMCONFIG2_RXPAYLOADCRC_MASK 0xFB +#define RFLR_MODEMCONFIG2_RXPAYLOADCRC_ON 0x04 +#define RFLR_MODEMCONFIG2_RXPAYLOADCRC_OFF 0x00 // Default + +#define RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB_MASK 0xFC +#define RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB 0x00 // Default + + +/*! + * RegHopChannel (Read Only) + */ +#define RFLR_HOPCHANNEL_PLL_LOCK_TIMEOUT_MASK 0x7F +#define RFLR_HOPCHANNEL_PLL_LOCK_FAIL 0x80 +#define RFLR_HOPCHANNEL_PLL_LOCK_SUCCEED 0x00 // Default + +#define RFLR_HOPCHANNEL_PAYLOAD_CRC16_MASK 0xBF +#define RFLR_HOPCHANNEL_PAYLOAD_CRC16_ON 0x40 +#define RFLR_HOPCHANNEL_PAYLOAD_CRC16_OFF 0x00 // Default + +#define RFLR_HOPCHANNEL_CHANNEL_MASK 0x3F + + +/*! + * RegSymbTimeoutLsb + */ +#define RFLR_SYMBTIMEOUTLSB_SYMBTIMEOUT 0x64 // Default + +/*! + * RegPreambleLengthMsb + */ +#define RFLR_PREAMBLELENGTHMSB 0x00 // Default + +/*! + * RegPreambleLengthLsb + */ +#define RFLR_PREAMBLELENGTHLSB 0x08 // Default + +/*! + * RegPayloadLength + */ +#define RFLR_PAYLOADLENGTH 0x0E // Default + +/*! + * RegPayloadMaxLength + */ +#define RFLR_PAYLOADMAXLENGTH 0xFF // Default + +/*! + * RegHopPeriod + */ +#define RFLR_HOPPERIOD_FREQFOPPINGPERIOD 0x00 // Default + + +/*! + * RegDioMapping1 + */ +#define RFLR_DIOMAPPING1_DIO0_MASK 0x3F +#define RFLR_DIOMAPPING1_DIO0_00 0x00 // Default +#define RFLR_DIOMAPPING1_DIO0_01 0x40 +#define RFLR_DIOMAPPING1_DIO0_10 0x80 +#define RFLR_DIOMAPPING1_DIO0_11 0xC0 + +#define RFLR_DIOMAPPING1_DIO1_MASK 0xCF +#define RFLR_DIOMAPPING1_DIO1_00 0x00 // Default +#define RFLR_DIOMAPPING1_DIO1_01 0x10 +#define RFLR_DIOMAPPING1_DIO1_10 0x20 +#define RFLR_DIOMAPPING1_DIO1_11 0x30 + +#define RFLR_DIOMAPPING1_DIO2_MASK 0xF3 +#define RFLR_DIOMAPPING1_DIO2_00 0x00 // Default +#define RFLR_DIOMAPPING1_DIO2_01 0x04 +#define RFLR_DIOMAPPING1_DIO2_10 0x08 +#define RFLR_DIOMAPPING1_DIO2_11 0x0C + +#define RFLR_DIOMAPPING1_DIO3_MASK 0xFC +#define RFLR_DIOMAPPING1_DIO3_00 0x00 // Default +#define RFLR_DIOMAPPING1_DIO3_01 0x01 +#define RFLR_DIOMAPPING1_DIO3_10 0x02 +#define RFLR_DIOMAPPING1_DIO3_11 0x03 + +/*! + * RegDioMapping2 + */ +#define RFLR_DIOMAPPING2_DIO4_MASK 0x3F +#define RFLR_DIOMAPPING2_DIO4_00 0x00 // Default +#define RFLR_DIOMAPPING2_DIO4_01 0x40 +#define RFLR_DIOMAPPING2_DIO4_10 0x80 +#define RFLR_DIOMAPPING2_DIO4_11 0xC0 + +#define RFLR_DIOMAPPING2_DIO5_MASK 0xCF +#define RFLR_DIOMAPPING2_DIO5_00 0x00 // Default +#define RFLR_DIOMAPPING2_DIO5_01 0x10 +#define RFLR_DIOMAPPING2_DIO5_10 0x20 +#define RFLR_DIOMAPPING2_DIO5_11 0x30 + +#define RFLR_DIOMAPPING2_MAP_MASK 0xFE +#define RFLR_DIOMAPPING2_MAP_PREAMBLEDETECT 0x01 +#define RFLR_DIOMAPPING2_MAP_RSSI 0x00 // Default + +/*! + * RegVersion (Read Only) + */ + +/*! + * RegAgcRef + */ + +/*! + * RegAgcThresh1 + */ + +/*! + * RegAgcThresh2 + */ + +/*! + * RegAgcThresh3 + */ + +/*! + * RegFifoRxByteAddr (Read Only) + */ + +/*! + * RegPllHop + */ +#define RFLR_PLLHOP_FASTHOP_MASK 0x7F +#define RFLR_PLLHOP_FASTHOP_ON 0x80 +#define RFLR_PLLHOP_FASTHOP_OFF 0x00 // Default + +/*! + * RegTcxo + */ +#define RFLR_TCXO_TCXOINPUT_MASK 0xEF +#define RFLR_TCXO_TCXOINPUT_ON 0x10 +#define RFLR_TCXO_TCXOINPUT_OFF 0x00 // Default + +/*! + * RegPaDac + */ +#define RFLR_PADAC_20DBM_MASK 0xF8 +#define RFLR_PADAC_20DBM_ON 0x07 +#define RFLR_PADAC_20DBM_OFF 0x04 // Default + +/*! + * RegPll + */ +#define RFLR_PLL_BANDWIDTH_MASK 0x3F +#define RFLR_PLL_BANDWIDTH_75 0x00 +#define RFLR_PLL_BANDWIDTH_150 0x40 +#define RFLR_PLL_BANDWIDTH_225 0x80 +#define RFLR_PLL_BANDWIDTH_300 0xC0 // Default + +/*! + * RegPllLowPn + */ +#define RFLR_PLLLOWPN_BANDWIDTH_MASK 0x3F +#define RFLR_PLLLOWPN_BANDWIDTH_75 0x00 +#define RFLR_PLLLOWPN_BANDWIDTH_150 0x40 +#define RFLR_PLLLOWPN_BANDWIDTH_225 0x80 +#define RFLR_PLLLOWPN_BANDWIDTH_300 0xC0 // Default + +/*! + * RegModemConfig3 + */ +#define RFLR_MODEMCONFIG3_LOWDATARATEOPTIMIZE_MASK 0xF7 +#define RFLR_MODEMCONFIG3_LOWDATARATEOPTIMIZE_ON 0x08 +#define RFLR_MODEMCONFIG3_LOWDATARATEOPTIMIZE_OFF 0x00 // Default + +#define RFLR_MODEMCONFIG3_AGCAUTO_MASK 0xFB +#define RFLR_MODEMCONFIG3_AGCAUTO_ON 0x04 // Default +#define RFLR_MODEMCONFIG3_AGCAUTO_OFF 0x00 + +/*! + * RegFormerTemp + */ + +typedef struct sSX1276LR +{ + uint8_t RegFifo; // 0x00 + // Common settings + uint8_t RegOpMode; // 0x01 + uint8_t RegRes02; // 0x02 + uint8_t RegRes03; // 0x03 + uint8_t RegBandSetting; // 0x04 + uint8_t RegRes05; // 0x05 + uint8_t RegFrfMsb; // 0x06 + uint8_t RegFrfMid; // 0x07 + uint8_t RegFrfLsb; // 0x08 + // Tx settings + uint8_t RegPaConfig; // 0x09 + uint8_t RegPaRamp; // 0x0A + uint8_t RegOcp; // 0x0B + // Rx settings + uint8_t RegLna; // 0x0C + // LoRa registers + uint8_t RegFifoAddrPtr; // 0x0D + uint8_t RegFifoTxBaseAddr; // 0x0E + uint8_t RegFifoRxBaseAddr; // 0x0F + uint8_t RegFifoRxCurrentAddr; // 0x10 + uint8_t RegIrqFlagsMask; // 0x11 + uint8_t RegIrqFlags; // 0x12 + uint8_t RegNbRxBytes; // 0x13 + uint8_t RegRxHeaderCntValueMsb; // 0x14 + uint8_t RegRxHeaderCntValueLsb; // 0x15 + uint8_t RegRxPacketCntValueMsb; // 0x16 + uint8_t RegRxPacketCntValueLsb; // 0x17 + uint8_t RegModemStat; // 0x18 + uint8_t RegPktSnrValue; // 0x19 + uint8_t RegPktRssiValue; // 0x1A + uint8_t RegRssiValue; // 0x1B + uint8_t RegHopChannel; // 0x1C + uint8_t RegModemConfig1; // 0x1D + uint8_t RegModemConfig2; // 0x1E + uint8_t RegSymbTimeoutLsb; // 0x1F + uint8_t RegPreambleMsb; // 0x20 + uint8_t RegPreambleLsb; // 0x21 + uint8_t RegPayloadLength; // 0x22 + uint8_t RegMaxPayloadLength; // 0x23 + uint8_t RegHopPeriod; // 0x24 + uint8_t RegFifoRxByteAddr; // 0x25 + uint8_t RegModemConfig3; // 0x26 + uint8_t RegTestReserved27; // 0x27 + uint8_t RegFeiMsb; // 0x28 + uint8_t RegFeiMib; // 0x29 + uint8_t RegFeiLsb; // 0x2A + uint8_t RegTestReserved2B[0x30 - 0x2B]; // 0x2B-0x30 + uint8_t RegDetectOptimize; // 0x31 + uint8_t RegTestReserved32; // 0x32 + uint8_t RegInvertIQ; // 0x33 + uint8_t RegTestReserved34[0x36 - 0x34]; // 0x34-0x36 + uint8_t RegDetectionThreshold; // 0x37 + uint8_t RegTestReserved38[0x3F - 0x38]; // 0x38-0x3F + // I/O settings + uint8_t RegDioMapping1; // 0x40 + uint8_t RegDioMapping2; // 0x41 + // Version + uint8_t RegVersion; // 0x42 + // Test + uint8_t RegTestReserved43; // 0x43 + // Additional settings + uint8_t RegPllHop; // 0x44 + // Test + uint8_t RegTestReserved45[0x4A - 0x45]; // 0x45-0x4A + // Additional settings + uint8_t RegTcxo; // 0x4B + // Test + uint8_t RegTestReserved4C; // 0x4C + // Additional settings + uint8_t RegPaDac; // 0x4D + // Test + uint8_t RegTestReserved4E[0x5A - 0x4E]; // 0x4E-0x5A + // Additional settings + uint8_t RegFormerTemp; // 0x5B + // Test + uint8_t RegTestReserved5C; // 0x5C + // Additional settings + uint8_t RegBitrateFrac; // 0x5D + // Additional settings + uint8_t RegTestReserved5E[0x60 - 0x5E]; // 0x5E-0x60 + // Additional settings + uint8_t RegAgcRef; // 0x60 + uint8_t RegAgcThresh1; // 0x61 + uint8_t RegAgcThresh2; // 0x62 + uint8_t RegAgcThresh3; // 0x63 + // Test + uint8_t RegTestReserved64[0x70 - 0x64]; // 0x64-0x70 +}tSX1276LR; + +extern tSX1276LR* SX1276LR; + +/*! + * \brief Initializes the SX1276 + */ +void SX1276LoRaInit( void ); + +/*! + * \brief Sets the SX1276 to datasheet default values + */ +void SX1276LoRaSetDefaults( void ); + +/*! + * \brief Enables/Disables the LoRa modem + * + * \param [IN]: enable [true, false] + */ +void SX1276LoRaSetLoRaOn( bool enable ); + +/*! + * \brief Sets the SX1276 operating mode + * + * \param [IN] opMode New operating mode + */ +void SX1276LoRaSetOpMode( uint8_t opMode ); + +/*! + * \brief Gets the SX1276 operating mode + * + * \retval opMode Current operating mode + */ +uint8_t SX1276LoRaGetOpMode( void ); + +/*! + * \brief Reads the current Rx gain setting + * + * \retval rxGain Current gain setting + */ +uint8_t SX1276LoRaReadRxGain( void ); + +/*! + * \brief Trigs and reads the current RSSI value + * + * \retval rssiValue Current RSSI value in [dBm] + */ +double SX1276LoRaReadRssi( void ); + +/*! + * \brief Gets the Rx gain value measured while receiving the packet + * + * \retval rxGainValue Current Rx gain value + */ +uint8_t SX1276LoRaGetPacketRxGain( void ); + +/*! + * \brief Gets the SNR value measured while receiving the packet + * + * \retval snrValue Current SNR value in [dB] + */ +int8_t SX1276LoRaGetPacketSnr( void ); + +/*! + * \brief Gets the RSSI value measured while receiving the packet + * + * \retval rssiValue Current RSSI value in [dBm] + */ +double SX1276LoRaGetPacketRssi( void ); + +/*! + * \brief Sets the radio in Rx mode. Waiting for a packet + */ +void SX1276LoRaStartRx( void ); + +/*! + * \brief Gets a copy of the current received buffer + * + * \param [IN]: buffer Buffer pointer + * \param [IN]: size Buffer size + */ +void SX1276LoRaGetRxPacket( void *buffer, uint16_t *size ); + +/*! + * \brief Sets a copy of the buffer to be transmitted + * + * \param [IN]: buffer Buffer pointer + * \param [IN]: size Buffer size + */ +void SX1276LoRaSetTxPacket( const void *buffer, uint16_t size ); + +/*! + * \brief Gets the current RFState + * + * \retval rfState Current RF state [RF_IDLE, RF_BUSY, + * RF_RX_DONE, RF_RX_TIMEOUT, + * RF_TX_DONE, RF_TX_TIMEOUT] + */ +uint8_t SX1276LoRaGetRFState( void ); + +/*! + * \brief Sets the new state of the RF state machine + * + * \param [IN]: state New RF state machine state + */ +void SX1276LoRaSetRFState( uint8_t state ); + +/*! + * \brief Process the LoRa modem Rx and Tx state machines depending on the + * SX1276 operating mode. + * + * \retval rfState Current RF state [RF_IDLE, RF_BUSY, + * RF_RX_DONE, RF_RX_TIMEOUT, + * RF_TX_DONE, RF_TX_TIMEOUT] + */ +uint32_t SX1276LoRaProcess( void ); + +#endif //__SX1276_LORA_H__ \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRaMisc.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRaMisc.c new file mode 100644 index 000000000..96b1e28d0 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRaMisc.c @@ -0,0 +1,411 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file sx1276-LoRaMisc.c + * \brief SX1276 RF chip high level functions driver + * + * \remark Optional support functions. + * These functions are defined only to easy the change of the + * parameters. + * For a final firmware the radio parameters will be known so + * there is no need to support all possible parameters. + * Removing these functions will greatly reduce the final firmware + * size. + * + * \version 2.0.0 + * \date May 6 2013 + * \author Gregory Cristian + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +#include "platform.h" + +#if defined( USE_SX1276_RADIO ) + +#include "sx1276-Hal.h" +#include "sx1276.h" + +#include "sx1276-LoRa.h" +#include "sx1276-LoRaMisc.h" + +/*! + * SX1276 definitions + */ +#define XTAL_FREQ 32000000 +#define FREQ_STEP 61.03515625 + +extern tLoRaSettings LoRaSettings; + +void SX1276LoRaSetRFFrequency( uint32_t freq ) +{ + LoRaSettings.RFFrequency = freq; + + freq = ( uint32_t )( ( double )freq / ( double )FREQ_STEP ); + SX1276LR->RegFrfMsb = ( uint8_t )( ( freq >> 16 ) & 0xFF ); + SX1276LR->RegFrfMid = ( uint8_t )( ( freq >> 8 ) & 0xFF ); + SX1276LR->RegFrfLsb = ( uint8_t )( freq & 0xFF ); + SX1276WriteBuffer( REG_LR_FRFMSB, &SX1276LR->RegFrfMsb, 3 ); +} + +uint32_t SX1276LoRaGetRFFrequency( void ) +{ + SX1276ReadBuffer( REG_LR_FRFMSB, &SX1276LR->RegFrfMsb, 3 ); + LoRaSettings.RFFrequency = ( ( uint32_t )SX1276LR->RegFrfMsb << 16 ) | ( ( uint32_t )SX1276LR->RegFrfMid << 8 ) | ( ( uint32_t )SX1276LR->RegFrfLsb ); + LoRaSettings.RFFrequency = ( uint32_t )( ( double )LoRaSettings.RFFrequency * ( double )FREQ_STEP ); + + return LoRaSettings.RFFrequency; +} + +void SX1276LoRaSetRFPower( int8_t power ) +{ + SX1276Read( REG_LR_PACONFIG, &SX1276LR->RegPaConfig ); + SX1276Read( REG_LR_PADAC, &SX1276LR->RegPaDac ); + + if( ( SX1276LR->RegPaConfig & RFLR_PACONFIG_PASELECT_PABOOST ) == RFLR_PACONFIG_PASELECT_PABOOST ) + { + if( ( SX1276LR->RegPaDac & 0x87 ) == 0x87 ) + { + if( power < 5 ) + { + power = 5; + } + if( power > 20 ) + { + power = 20; + } + SX1276LR->RegPaConfig = ( SX1276LR->RegPaConfig & RFLR_PACONFIG_MAX_POWER_MASK ) | 0x70; + SX1276LR->RegPaConfig = ( SX1276LR->RegPaConfig & RFLR_PACONFIG_OUTPUTPOWER_MASK ) | ( uint8_t )( ( uint16_t )( power - 5 ) & 0x0F ); + } + else + { + if( power < 2 ) + { + power = 2; + } + if( power > 17 ) + { + power = 17; + } + SX1276LR->RegPaConfig = ( SX1276LR->RegPaConfig & RFLR_PACONFIG_MAX_POWER_MASK ) | 0x70; + SX1276LR->RegPaConfig = ( SX1276LR->RegPaConfig & RFLR_PACONFIG_OUTPUTPOWER_MASK ) | ( uint8_t )( ( uint16_t )( power - 2 ) & 0x0F ); + } + } + else + { + if( power < -1 ) + { + power = -1; + } + if( power > 14 ) + { + power = 14; + } + SX1276LR->RegPaConfig = ( SX1276LR->RegPaConfig & RFLR_PACONFIG_MAX_POWER_MASK ) | 0x70; + SX1276LR->RegPaConfig = ( SX1276LR->RegPaConfig & RFLR_PACONFIG_OUTPUTPOWER_MASK ) | ( uint8_t )( ( uint16_t )( power + 1 ) & 0x0F ); + } + SX1276Write( REG_LR_PACONFIG, SX1276LR->RegPaConfig ); + LoRaSettings.Power = power; +} + +int8_t SX1276LoRaGetRFPower( void ) +{ + SX1276Read( REG_LR_PACONFIG, &SX1276LR->RegPaConfig ); + SX1276Read( REG_LR_PADAC, &SX1276LR->RegPaDac ); + + if( ( SX1276LR->RegPaConfig & RFLR_PACONFIG_PASELECT_PABOOST ) == RFLR_PACONFIG_PASELECT_PABOOST ) + { + if( ( SX1276LR->RegPaDac & 0x07 ) == 0x07 ) + { + LoRaSettings.Power = 5 + ( SX1276LR->RegPaConfig & ~RFLR_PACONFIG_OUTPUTPOWER_MASK ); + } + else + { + LoRaSettings.Power = 2 + ( SX1276LR->RegPaConfig & ~RFLR_PACONFIG_OUTPUTPOWER_MASK ); + } + } + else + { + LoRaSettings.Power = -1 + ( SX1276LR->RegPaConfig & ~RFLR_PACONFIG_OUTPUTPOWER_MASK ); + } + return LoRaSettings.Power; +} + +void SX1276LoRaSetSignalBandwidth( uint8_t bw ) +{ + SX1276Read( REG_LR_MODEMCONFIG1, &SX1276LR->RegModemConfig1 ); + SX1276LR->RegModemConfig1 = ( SX1276LR->RegModemConfig1 & RFLR_MODEMCONFIG1_BW_MASK ) | ( bw << 4 ); + SX1276Write( REG_LR_MODEMCONFIG1, SX1276LR->RegModemConfig1 ); + LoRaSettings.SignalBw = bw; +} + +uint8_t SX1276LoRaGetSignalBandwidth( void ) +{ + SX1276Read( REG_LR_MODEMCONFIG1, &SX1276LR->RegModemConfig1 ); + LoRaSettings.SignalBw = ( SX1276LR->RegModemConfig1 & ~RFLR_MODEMCONFIG1_BW_MASK ) >> 4; + return LoRaSettings.SignalBw; +} + +void SX1276LoRaSetSpreadingFactor( uint8_t factor ) +{ + + if( factor > 12 ) + { + factor = 12; + } + else if( factor < 6 ) + { + factor = 6; + } + + if( factor == 6 ) + { + SX1276LoRaSetNbTrigPeaks( 5 ); + } + else + { + SX1276LoRaSetNbTrigPeaks( 3 ); + } + + SX1276Read( REG_LR_MODEMCONFIG2, &SX1276LR->RegModemConfig2 ); + SX1276LR->RegModemConfig2 = ( SX1276LR->RegModemConfig2 & RFLR_MODEMCONFIG2_SF_MASK ) | ( factor << 4 ); + SX1276Write( REG_LR_MODEMCONFIG2, SX1276LR->RegModemConfig2 ); + LoRaSettings.SpreadingFactor = factor; +} + +uint8_t SX1276LoRaGetSpreadingFactor( void ) +{ + SX1276Read( REG_LR_MODEMCONFIG2, &SX1276LR->RegModemConfig2 ); + LoRaSettings.SpreadingFactor = ( SX1276LR->RegModemConfig2 & ~RFLR_MODEMCONFIG2_SF_MASK ) >> 4; + return LoRaSettings.SpreadingFactor; +} + +void SX1276LoRaSetErrorCoding( uint8_t value ) +{ + SX1276Read( REG_LR_MODEMCONFIG1, &SX1276LR->RegModemConfig1 ); + SX1276LR->RegModemConfig1 = ( SX1276LR->RegModemConfig1 & RFLR_MODEMCONFIG1_CODINGRATE_MASK ) | ( value << 1 ); + SX1276Write( REG_LR_MODEMCONFIG1, SX1276LR->RegModemConfig1 ); + LoRaSettings.ErrorCoding = value; +} + +uint8_t SX1276LoRaGetErrorCoding( void ) +{ + SX1276Read( REG_LR_MODEMCONFIG1, &SX1276LR->RegModemConfig1 ); + LoRaSettings.ErrorCoding = ( SX1276LR->RegModemConfig1 & ~RFLR_MODEMCONFIG1_CODINGRATE_MASK ) >> 1; + return LoRaSettings.ErrorCoding; +} + +void SX1276LoRaSetPacketCrcOn( bool enable ) +{ + SX1276Read( REG_LR_MODEMCONFIG2, &SX1276LR->RegModemConfig2 ); + SX1276LR->RegModemConfig2 = ( SX1276LR->RegModemConfig2 & RFLR_MODEMCONFIG2_RXPAYLOADCRC_MASK ) | ( enable << 2 ); + SX1276Write( REG_LR_MODEMCONFIG2, SX1276LR->RegModemConfig2 ); + LoRaSettings.CrcOn = enable; +} + +void SX1276LoRaSetPreambleLength( uint16_t value ) +{ + SX1276ReadBuffer( REG_LR_PREAMBLEMSB, &SX1276LR->RegPreambleMsb, 2 ); + + SX1276LR->RegPreambleMsb = ( value >> 8 ) & 0x00FF; + SX1276LR->RegPreambleLsb = value & 0xFF; + SX1276WriteBuffer( REG_LR_PREAMBLEMSB, &SX1276LR->RegPreambleMsb, 2 ); +} + +uint16_t SX1276LoRaGetPreambleLength( void ) +{ + SX1276ReadBuffer( REG_LR_PREAMBLEMSB, &SX1276LR->RegPreambleMsb, 2 ); + return ( ( SX1276LR->RegPreambleMsb & 0x00FF ) << 8 ) | SX1276LR->RegPreambleLsb; +} + +bool SX1276LoRaGetPacketCrcOn( void ) +{ + SX1276Read( REG_LR_MODEMCONFIG2, &SX1276LR->RegModemConfig2 ); + LoRaSettings.CrcOn = ( SX1276LR->RegModemConfig2 & RFLR_MODEMCONFIG2_RXPAYLOADCRC_ON ) >> 1; + return LoRaSettings.CrcOn; +} + +void SX1276LoRaSetImplicitHeaderOn( bool enable ) +{ + SX1276Read( REG_LR_MODEMCONFIG1, &SX1276LR->RegModemConfig1 ); + SX1276LR->RegModemConfig1 = ( SX1276LR->RegModemConfig1 & RFLR_MODEMCONFIG1_IMPLICITHEADER_MASK ) | ( enable ); + SX1276Write( REG_LR_MODEMCONFIG1, SX1276LR->RegModemConfig1 ); + LoRaSettings.ImplicitHeaderOn = enable; +} + +bool SX1276LoRaGetImplicitHeaderOn( void ) +{ + SX1276Read( REG_LR_MODEMCONFIG1, &SX1276LR->RegModemConfig1 ); + LoRaSettings.ImplicitHeaderOn = ( SX1276LR->RegModemConfig1 & RFLR_MODEMCONFIG1_IMPLICITHEADER_ON ); + return LoRaSettings.ImplicitHeaderOn; +} + +void SX1276LoRaSetRxSingleOn( bool enable ) +{ + LoRaSettings.RxSingleOn = enable; +} + +bool SX1276LoRaGetRxSingleOn( void ) +{ + return LoRaSettings.RxSingleOn; +} + +void SX1276LoRaSetFreqHopOn( bool enable ) +{ + LoRaSettings.FreqHopOn = enable; +} + +bool SX1276LoRaGetFreqHopOn( void ) +{ + return LoRaSettings.FreqHopOn; +} + +void SX1276LoRaSetHopPeriod( uint8_t value ) +{ + SX1276LR->RegHopPeriod = value; + SX1276Write( REG_LR_HOPPERIOD, SX1276LR->RegHopPeriod ); + LoRaSettings.HopPeriod = value; +} + +uint8_t SX1276LoRaGetHopPeriod( void ) +{ + SX1276Read( REG_LR_HOPPERIOD, &SX1276LR->RegHopPeriod ); + LoRaSettings.HopPeriod = SX1276LR->RegHopPeriod; + return LoRaSettings.HopPeriod; +} + +void SX1276LoRaSetTxPacketTimeout( uint32_t value ) +{ + LoRaSettings.TxPacketTimeout = value; +} + +uint32_t SX1276LoRaGetTxPacketTimeout( void ) +{ + return LoRaSettings.TxPacketTimeout; +} + +void SX1276LoRaSetRxPacketTimeout( uint32_t value ) +{ + LoRaSettings.RxPacketTimeout = value; +} + +uint32_t SX1276LoRaGetRxPacketTimeout( void ) +{ + return LoRaSettings.RxPacketTimeout; +} + +void SX1276LoRaSetPayloadLength( uint8_t value ) +{ + SX1276LR->RegPayloadLength = value; + SX1276Write( REG_LR_PAYLOADLENGTH, SX1276LR->RegPayloadLength ); + LoRaSettings.PayloadLength = value; +} + +uint8_t SX1276LoRaGetPayloadLength( void ) +{ + SX1276Read( REG_LR_PAYLOADLENGTH, &SX1276LR->RegPayloadLength ); + LoRaSettings.PayloadLength = SX1276LR->RegPayloadLength; + return LoRaSettings.PayloadLength; +} + +void SX1276LoRaSetPa20dBm( bool enale ) +{ + SX1276Read( REG_LR_PADAC, &SX1276LR->RegPaDac ); + SX1276Read( REG_LR_PACONFIG, &SX1276LR->RegPaConfig ); + + if( ( SX1276LR->RegPaConfig & RFLR_PACONFIG_PASELECT_PABOOST ) == RFLR_PACONFIG_PASELECT_PABOOST ) + { + if( enale == true ) + { + SX1276LR->RegPaDac = 0x87; + } + } + else + { + SX1276LR->RegPaDac = 0x84; + } + SX1276Write( REG_LR_PADAC, SX1276LR->RegPaDac ); +} + +bool SX1276LoRaGetPa20dBm( void ) +{ + SX1276Read( REG_LR_PADAC, &SX1276LR->RegPaDac ); + + return ( ( SX1276LR->RegPaDac & 0x07 ) == 0x07 ) ? true : false; +} + +void SX1276LoRaSetPAOutput( uint8_t outputPin ) +{ + SX1276Read( REG_LR_PACONFIG, &SX1276LR->RegPaConfig ); + SX1276LR->RegPaConfig = (SX1276LR->RegPaConfig & RFLR_PACONFIG_PASELECT_MASK ) | outputPin; + SX1276Write( REG_LR_PACONFIG, SX1276LR->RegPaConfig ); +} + +uint8_t SX1276LoRaGetPAOutput( void ) +{ + SX1276Read( REG_LR_PACONFIG, &SX1276LR->RegPaConfig ); + return SX1276LR->RegPaConfig & ~RFLR_PACONFIG_PASELECT_MASK; +} + +void SX1276LoRaSetPaRamp( uint8_t value ) +{ + SX1276Read( REG_LR_PARAMP, &SX1276LR->RegPaRamp ); + SX1276LR->RegPaRamp = ( SX1276LR->RegPaRamp & RFLR_PARAMP_MASK ) | ( value & ~RFLR_PARAMP_MASK ); + SX1276Write( REG_LR_PARAMP, SX1276LR->RegPaRamp ); +} + +uint8_t SX1276LoRaGetPaRamp( void ) +{ + SX1276Read( REG_LR_PARAMP, &SX1276LR->RegPaRamp ); + return SX1276LR->RegPaRamp & ~RFLR_PARAMP_MASK; +} + +void SX1276LoRaSetSymbTimeout( uint16_t value ) +{ + SX1276ReadBuffer( REG_LR_MODEMCONFIG2, &SX1276LR->RegModemConfig2, 2 ); + + SX1276LR->RegModemConfig2 = ( SX1276LR->RegModemConfig2 & RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB_MASK ) | ( ( value >> 8 ) & ~RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB_MASK ); + SX1276LR->RegSymbTimeoutLsb = value & 0xFF; + SX1276WriteBuffer( REG_LR_MODEMCONFIG2, &SX1276LR->RegModemConfig2, 2 ); +} + +uint16_t SX1276LoRaGetSymbTimeout( void ) +{ + SX1276ReadBuffer( REG_LR_MODEMCONFIG2, &SX1276LR->RegModemConfig2, 2 ); + return ( ( SX1276LR->RegModemConfig2 & ~RFLR_MODEMCONFIG2_SYMBTIMEOUTMSB_MASK ) << 8 ) | SX1276LR->RegSymbTimeoutLsb; +} + +void SX1276LoRaSetLowDatarateOptimize( bool enable ) +{ + SX1276Read( REG_LR_MODEMCONFIG3, &SX1276LR->RegModemConfig3 ); + SX1276LR->RegModemConfig3 = ( SX1276LR->RegModemConfig3 & RFLR_MODEMCONFIG3_LOWDATARATEOPTIMIZE_MASK ) | ( enable << 3 ); + SX1276Write( REG_LR_MODEMCONFIG3, SX1276LR->RegModemConfig3 ); +} + +bool SX1276LoRaGetLowDatarateOptimize( void ) +{ + SX1276Read( REG_LR_MODEMCONFIG3, &SX1276LR->RegModemConfig3 ); + return ( ( SX1276LR->RegModemConfig3 & RFLR_MODEMCONFIG3_LOWDATARATEOPTIMIZE_ON ) >> 3 ); +} + +void SX1276LoRaSetNbTrigPeaks( uint8_t value ) +{ + SX1276Read( 0x31, &SX1276LR->RegDetectOptimize ); + SX1276LR->RegDetectOptimize = ( SX1276LR->RegDetectOptimize & 0xF8 ) | value; + SX1276Write( 0x31, SX1276LR->RegDetectOptimize ); +} + +uint8_t SX1276LoRaGetNbTrigPeaks( void ) +{ + SX1276Read( 0x31, &SX1276LR->RegDetectOptimize ); + return ( SX1276LR->RegDetectOptimize & 0x07 ); +} + +#endif // USE_SX1276_RADIO diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRaMisc.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRaMisc.h new file mode 100644 index 000000000..3f5d7e5fa --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276-LoRaMisc.h @@ -0,0 +1,315 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file sx1276-LoRaMisc.h + * \brief SX1276 RF chip high level functions driver + * + * \remark Optional support functions. + * These functions are defined only to easy the change of the + * parameters. + * For a final firmware the radio parameters will be known so + * there is no need to support all possible parameters. + * Removing these functions will greatly reduce the final firmware + * size. + * + * \version 2.0.B2 + * \date May 6 2013 + * \author Gregory Cristian + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +#ifndef __SX1276_LORA_MISC_H__ +#define __SX1276_LORA_MISC_H__ + + +/*! + * \brief Writes the new RF frequency value + * + * \param [IN] freq New RF frequency value in [Hz] + */ +void SX1276LoRaSetRFFrequency( uint32_t freq ); + +/*! + * \brief Reads the current RF frequency value + * + * \retval freq Current RF frequency value in [Hz] + */ +uint32_t SX1276LoRaGetRFFrequency( void ); + +/*! + * \brief Writes the new RF output power value + * + * \param [IN] power New output power value in [dBm] + */ +void SX1276LoRaSetRFPower( int8_t power ); + +/*! + * \brief Reads the current RF output power value + * + * \retval power Current output power value in [dBm] + */ +int8_t SX1276LoRaGetRFPower( void ); + +/*! + * \brief Writes the new Signal Bandwidth value + * + * \remark This function sets the IF frequency according to the datasheet + * + * \param [IN] factor New Signal Bandwidth value [0: 125 kHz, 1: 250 kHz, 2: 500 kHz] + */ +void SX1276LoRaSetSignalBandwidth( uint8_t bw ); + +/*! + * \brief Reads the current Signal Bandwidth value + * + * \retval factor Current Signal Bandwidth value [0: 125 kHz, 1: 250 kHz, 2: 500 kHz] + */ +uint8_t SX1276LoRaGetSignalBandwidth( void ); + +/*! + * \brief Writes the new Spreading Factor value + * + * \param [IN] factor New Spreading Factor value [7, 8, 9, 10, 11, 12] + */ +void SX1276LoRaSetSpreadingFactor( uint8_t factor ); + +/*! + * \brief Reads the current Spreading Factor value + * + * \retval factor Current Spreading Factor value [7, 8, 9, 10, 11, 12] + */ +uint8_t SX1276LoRaGetSpreadingFactor( void ); + +/*! + * \brief Writes the new Error Coding value + * + * \param [IN] value New Error Coding value [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] + */ +void SX1276LoRaSetErrorCoding( uint8_t value ); + +/*! + * \brief Reads the current Error Coding value + * + * \retval value Current Error Coding value [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] + */ +uint8_t SX1276LoRaGetErrorCoding( void ); + +/*! + * \brief Enables/Disables the packet CRC generation + * + * \param [IN] enaable [true, false] + */ +void SX1276LoRaSetPacketCrcOn( bool enable ); + +/*! + * \brief Reads the current packet CRC generation status + * + * \retval enable [true, false] + */ +bool SX1276LoRaGetPacketCrcOn( void ); + +/*! + * \brief Enables/Disables the Implicit Header mode in LoRa + * + * \param [IN] enable [true, false] + */ +void SX1276LoRaSetImplicitHeaderOn( bool enable ); + +/*! + * \brief Check if implicit header mode in LoRa in enabled or disabled + * + * \retval enable [true, false] + */ +bool SX1276LoRaGetImplicitHeaderOn( void ); + +/*! + * \brief Enables/Disables Rx single instead of Rx continuous + * + * \param [IN] enable [true, false] + */ +void SX1276LoRaSetRxSingleOn( bool enable ); + +/*! + * \brief Check if LoRa is in Rx Single mode + * + * \retval enable [true, false] + */ +bool SX1276LoRaGetRxSingleOn( void ); + +/*! + * \brief Enables/Disables the frequency hopping + * + * \param [IN] enable [true, false] + */ + +void SX1276LoRaSetFreqHopOn( bool enable ); + +/*! + * \brief Get the frequency hopping status + * + * \param [IN] enable [true, false] + */ +bool SX1276LoRaGetFreqHopOn( void ); + +/*! + * \brief Set symbol period between frequency hops + * + * \param [IN] value + */ +void SX1276LoRaSetHopPeriod( uint8_t value ); + +/*! + * \brief Get symbol period between frequency hops + * + * \retval value symbol period between frequency hops + */ +uint8_t SX1276LoRaGetHopPeriod( void ); + +/*! + * \brief Set timeout Tx packet (based on MCU timer, timeout between Tx Mode entry Tx Done IRQ) + * + * \param [IN] value timeout (ms) + */ +void SX1276LoRaSetTxPacketTimeout( uint32_t value ); + +/*! + * \brief Get timeout between Tx packet (based on MCU timer, timeout between Tx Mode entry Tx Done IRQ) + * + * \retval value timeout (ms) + */ +uint32_t SX1276LoRaGetTxPacketTimeout( void ); + +/*! + * \brief Set timeout Rx packet (based on MCU timer, timeout between Rx Mode entry and Rx Done IRQ) + * + * \param [IN] value timeout (ms) + */ +void SX1276LoRaSetRxPacketTimeout( uint32_t value ); + +/*! + * \brief Get timeout Rx packet (based on MCU timer, timeout between Rx Mode entry and Rx Done IRQ) + * + * \retval value timeout (ms) + */ +uint32_t SX1276LoRaGetRxPacketTimeout( void ); + +/*! + * \brief Set payload length + * + * \param [IN] value payload length + */ +void SX1276LoRaSetPayloadLength( uint8_t value ); + +/*! + * \brief Get payload length + * + * \retval value payload length + */ +uint8_t SX1276LoRaGetPayloadLength( void ); + +/*! + * \brief Enables/Disables the 20 dBm PA + * + * \param [IN] enable [true, false] + */ +void SX1276LoRaSetPa20dBm( bool enale ); + +/*! + * \brief Gets the current 20 dBm PA status + * + * \retval enable [true, false] + */ +bool SX1276LoRaGetPa20dBm( void ); + +/*! + * \brief Set the RF Output pin + * + * \param [IN] RF_PACONFIG_PASELECT_PABOOST or RF_PACONFIG_PASELECT_RFO + */ +void SX1276LoRaSetPAOutput( uint8_t outputPin ); + +/*! + * \brief Gets the used RF Ouptut pin + * + * \retval RF_PACONFIG_PASELECT_PABOOST or RF_PACONFIG_PASELECT_RFO + */ +uint8_t SX1276LoRaGetPAOutput( void ); + +/*! + * \brief Writes the new PA rise/fall time of ramp up/down value + * + * \param [IN] value New PaRamp value + */ +void SX1276LoRaSetPaRamp( uint8_t value ); + +/*! + * \brief Reads the current PA rise/fall time of ramp up/down value + * + * \retval freq Current PaRamp value + */ +uint8_t SX1276LoRaGetPaRamp( void ); + +/*! + * \brief Set Symbol Timeout based on symbol length + * + * \param [IN] value number of symbol + */ +void SX1276LoRaSetSymbTimeout( uint16_t value ); + +/*! + * \brief Get Symbol Timeout based on symbol length + * + * \retval value number of symbol + */ +uint16_t SX1276LoRaGetSymbTimeout( void ); + +/*! + * \brief Configure the device to optimize low datarate transfers + * + * \param [IN] enable Enables/Disables the low datarate optimization + */ +void SX1276LoRaSetLowDatarateOptimize( bool enable ); + +/*! + * \brief Get the status of optimize low datarate transfers + * + * \retval LowDatarateOptimize enable or disable + */ +bool SX1276LoRaGetLowDatarateOptimize( void ); + +/*! + * \brief Get the preamble length + * + * \retval value preamble length + */ +uint16_t SX1276LoRaGetPreambleLength( void ); + +/*! + * \brief Set the preamble length + * + * \param [IN] value preamble length + */ +void SX1276LoRaSetPreambleLength( uint16_t value ); + +/*! + * \brief Set the number or rolling preamble symbol needed for detection + * + * \param [IN] value number of preamble symbol + */ +void SX1276LoRaSetNbTrigPeaks( uint8_t value ); + +/*! + * \brief Get the number or rolling preamble symbol needed for detection + * + * \retval value number of preamble symbol + */ +uint8_t SX1276LoRaGetNbTrigPeaks( void ); +#endif //__SX1276_LORA_MISC_H__ \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276.c new file mode 100644 index 000000000..903afe843 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276.c @@ -0,0 +1,304 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file sx1276.c + * \brief SX1276 RF chip driver + * + * \version 2.0.0 + * \date May 6 2013 + * \author Gregory Cristian + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +#include "platform.h" +#include "radio.h" + +#if defined( USE_SX1276_RADIO ) + +#include "sx1276.h" + +#include "sx1276-Hal.h" +#include "sx1276-Fsk.h" +#include "sx1276-LoRa.h" + +/*! + * SX1276 registers variable + */ +uint8_t SX1276Regs[0x70]; + +static bool LoRaOn = true; +static bool LoRaOnState = false; + +void SX1276Init( void ) +{ + // Initialize FSK and LoRa registers structure + SX1276 = ( tSX1276* )SX1276Regs; + SX1276LR = ( tSX1276LR* )SX1276Regs; + + SX1276InitIo( ); + + SX1276Reset( ); + + // REMARK: After radio reset the default modem is FSK + +#if ( LORA == 0 ) + + LoRaOn = false; + SX1276SetLoRaOn( LoRaOn ); + // Initialize FSK modem + SX1276FskInit( ); + +#else + + LoRaOn = true; + SX1276SetLoRaOn( LoRaOn ); + // Initialize LoRa modem + SX1276LoRaInit( ); + +#endif + +} + +void SX1276Reset( void ) +{ + SX1276SetReset( RADIO_RESET_ON ); + + // Wait 1ms + uint32_t startTick = GET_TICK_COUNT( ); + while( ( GET_TICK_COUNT( ) - startTick ) < TICK_RATE_MS( 1 ) ); + + SX1276SetReset( RADIO_RESET_OFF ); + + // Wait 6ms + startTick = GET_TICK_COUNT( ); + while( ( GET_TICK_COUNT( ) - startTick ) < TICK_RATE_MS( 6 ) ); +} + +void SX1276SetLoRaOn( bool enable ) +{ + if( LoRaOnState == enable ) + { + return; + } + LoRaOnState = enable; + LoRaOn = enable; + + if( LoRaOn == true ) + { + SX1276LoRaSetOpMode( RFLR_OPMODE_SLEEP ); + + SX1276LR->RegOpMode = ( SX1276LR->RegOpMode & RFLR_OPMODE_LONGRANGEMODE_MASK ) | RFLR_OPMODE_LONGRANGEMODE_ON; + SX1276Write( REG_LR_OPMODE, SX1276LR->RegOpMode ); + + SX1276LoRaSetOpMode( RFLR_OPMODE_STANDBY ); + // RxDone RxTimeout FhssChangeChannel CadDone + SX1276LR->RegDioMapping1 = RFLR_DIOMAPPING1_DIO0_00 | RFLR_DIOMAPPING1_DIO1_00 | RFLR_DIOMAPPING1_DIO2_00 | RFLR_DIOMAPPING1_DIO3_00; + // CadDetected ModeReady + SX1276LR->RegDioMapping2 = RFLR_DIOMAPPING2_DIO4_00 | RFLR_DIOMAPPING2_DIO5_00; + SX1276WriteBuffer( REG_LR_DIOMAPPING1, &SX1276LR->RegDioMapping1, 2 ); + + SX1276ReadBuffer( REG_LR_OPMODE, SX1276Regs + 1, 0x70 - 1 ); + } + else + { + SX1276LoRaSetOpMode( RFLR_OPMODE_SLEEP ); + + SX1276LR->RegOpMode = ( SX1276LR->RegOpMode & RFLR_OPMODE_LONGRANGEMODE_MASK ) | RFLR_OPMODE_LONGRANGEMODE_OFF; + SX1276Write( REG_LR_OPMODE, SX1276LR->RegOpMode ); + + SX1276LoRaSetOpMode( RFLR_OPMODE_STANDBY ); + + SX1276ReadBuffer( REG_OPMODE, SX1276Regs + 1, 0x70 - 1 ); + } +} + +bool SX1276GetLoRaOn( void ) +{ + return LoRaOn; +} + +void SX1276SetOpMode( uint8_t opMode ) +{ + if( LoRaOn == false ) + { + SX1276FskSetOpMode( opMode ); + } + else + { + SX1276LoRaSetOpMode( opMode ); + } +} + +uint8_t SX1276GetOpMode( void ) +{ + if( LoRaOn == false ) + { + return SX1276FskGetOpMode( ); + } + else + { + return SX1276LoRaGetOpMode( ); + } +} + +double SX1276ReadRssi( void ) +{ + if( LoRaOn == false ) + { + return SX1276FskReadRssi( ); + } + else + { + return SX1276LoRaReadRssi( ); + } +} + +uint8_t SX1276ReadRxGain( void ) +{ + if( LoRaOn == false ) + { + return SX1276FskReadRxGain( ); + } + else + { + return SX1276LoRaReadRxGain( ); + } +} + +uint8_t SX1276GetPacketRxGain( void ) +{ + if( LoRaOn == false ) + { + return SX1276FskGetPacketRxGain( ); + } + else + { + return SX1276LoRaGetPacketRxGain( ); + } +} + +int8_t SX1276GetPacketSnr( void ) +{ + if( LoRaOn == false ) + { + while( 1 ) + { + // Useless in FSK mode + // Block program here + } + } + else + { + return SX1276LoRaGetPacketSnr( ); + } +} + +double SX1276GetPacketRssi( void ) +{ + if( LoRaOn == false ) + { + return SX1276FskGetPacketRssi( ); + } + else + { + return SX1276LoRaGetPacketRssi( ); + } +} + +uint32_t SX1276GetPacketAfc( void ) +{ + if( LoRaOn == false ) + { + return SX1276FskGetPacketAfc( ); + } + else + { + while( 1 ) + { + // Useless in LoRa mode + // Block program here + } + } +} + +void SX1276StartRx( void ) +{ + if( LoRaOn == false ) + { + SX1276FskSetRFState( RF_STATE_RX_INIT ); + } + else + { + SX1276LoRaSetRFState( RFLR_STATE_RX_INIT ); + } +} + +void SX1276GetRxPacket( void *buffer, uint16_t *size ) +{ + if( LoRaOn == false ) + { + SX1276FskGetRxPacket( buffer, size ); + } + else + { + SX1276LoRaGetRxPacket( buffer, size ); + } +} + +void SX1276SetTxPacket( const void *buffer, uint16_t size ) +{ + if( LoRaOn == false ) + { + SX1276FskSetTxPacket( buffer, size ); + } + else + { + SX1276LoRaSetTxPacket( buffer, size ); + } +} + +uint8_t SX1276GetRFState( void ) +{ + if( LoRaOn == false ) + { + return SX1276FskGetRFState( ); + } + else + { + return SX1276LoRaGetRFState( ); + } +} + +void SX1276SetRFState( uint8_t state ) +{ + if( LoRaOn == false ) + { + SX1276FskSetRFState( state ); + } + else + { + SX1276LoRaSetRFState( state ); + } +} + +uint32_t SX1276Process( void ) +{ + if( LoRaOn == false ) + { + return SX1276FskProcess( ); + } + else + { + return SX1276LoRaProcess( ); + } +} + +#endif // USE_SX1276_RADIO diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276.h new file mode 100644 index 000000000..45cd0c8ca --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/src/radio/sx1276.h @@ -0,0 +1,157 @@ +/* + * THE FOLLOWING FIRMWARE IS PROVIDED: (1) "AS IS" WITH NO WARRANTY; AND + * (2)TO ENABLE ACCESS TO CODING INFORMATION TO GUIDE AND FACILITATE CUSTOMER. + * CONSEQUENTLY, SEMTECH SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR + * CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT + * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION + * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + * Copyright (C) SEMTECH S.A. + */ +/*! + * \file sx1276.h + * \brief SX1276 RF chip driver + * + * \version 2.0.B2 + * \date May 6 2013 + * \author Gregory Cristian + * + * Last modified by Miguel Luis on Jun 19 2013 + */ +#ifndef __SX1276_H__ +#define __SX1276_H__ + +/*! + * \brief SX1276 registers array + */ +extern uint8_t SX1276Regs[0x70]; + +/*! + * \brief Enables LoRa modem or FSK modem + * + * \param [IN] opMode New operating mode + */ +void SX1276SetLoRaOn( bool enable ); + +/*! + * \brief Gets the LoRa modem state + * + * \retval LoraOn Current LoRa modem mode + */ +bool SX1276GetLoRaOn( void ); + +/*! + * \brief Initializes the SX1276 + */ +void SX1276Init( void ); + +/*! + * \brief Resets the SX1276 + */ +void SX1276Reset( void ); + +/*! + * \brief Sets the SX1276 operating mode + * + * \param [IN] opMode New operating mode + */ +void SX1276SetOpMode( uint8_t opMode ); + +/*! + * \brief Gets the SX1276 operating mode + * + * \retval opMode Current operating mode + */ +uint8_t SX1276GetOpMode( void ); + +/*! + * \brief Reads the current Rx gain setting + * + * \retval rxGain Current gain setting + */ +uint8_t SX1276ReadRxGain( void ); + +/*! + * \brief Trigs and reads the current RSSI value + * + * \retval rssiValue Current RSSI value in [dBm] + */ +double SX1276ReadRssi( void ); + +/*! + * \brief Gets the Rx gain value measured while receiving the packet + * + * \retval rxGainValue Current Rx gain value + */ +uint8_t SX1276GetPacketRxGain( void ); + +/*! + * \brief Gets the SNR value measured while receiving the packet + * + * \retval snrValue Current SNR value in [dB] + */ +int8_t SX1276GetPacketSnr( void ); + +/*! + * \brief Gets the RSSI value measured while receiving the packet + * + * \retval rssiValue Current RSSI value in [dBm] + */ +double SX1276GetPacketRssi( void ); + +/*! + * \brief Gets the AFC value measured while receiving the packet + * + * \retval afcValue Current AFC value in [Hz] + */ +uint32_t SX1276GetPacketAfc( void ); + +/*! + * \brief Sets the radio in Rx mode. Waiting for a packet + */ +void SX1276StartRx( void ); + +/*! + * \brief Gets a copy of the current received buffer + * + * \param [IN]: buffer Buffer pointer + * \param [IN]: size Buffer size + */ +void SX1276GetRxPacket( void *buffer, uint16_t *size ); + +/*! + * \brief Sets a copy of the buffer to be transmitted and starts the + * transmission + * + * \param [IN]: buffer Buffer pointer + * \param [IN]: size Buffer size + */ +void SX1276SetTxPacket( const void *buffer, uint16_t size ); + +/*! + * \brief Gets the current RFState + * + * \retval rfState Current RF state [RF_IDLE, RF_BUSY, + * RF_RX_DONE, RF_RX_TIMEOUT, + * RF_TX_DONE, RF_TX_TIMEOUT] + */ +uint8_t SX1276GetRFState( void ); + +/*! + * \brief Sets the new state of the RF state machine + * + * \param [IN]: state New RF state machine state + */ +void SX1276SetRFState( uint8_t state ); + +/*! + * \brief Process the Rx and Tx state machines depending on the + * SX1276 operating mode. + * + * \retval rfState Current RF state [RF_IDLE, RF_BUSY, + * RF_RX_DONE, RF_RX_TIMEOUT, + * RF_TX_DONE, RF_TX_TIMEOUT] + */ +uint32_t SX1276Process( void ); + +#endif //__SX1276_H__ \ No newline at end of file From 635280ab4beea6a2fb8de872acf10c4dd43cd456 Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 14:39:59 +0800 Subject: [PATCH 07/26] app_match_rt-thread/sx1278/sx1278_source/ 1.sx1278 driver is ok. 2.connection is ok. --- .../sx1278/sx1278_source/drv_sx1278.c | 510 ++++++++++++++++++ .../sx1278/sx1278_source/drv_sx1278.h | 25 + 2 files changed, 535 insertions(+) create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/drv_sx1278.c create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/drv_sx1278.h diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/drv_sx1278.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/drv_sx1278.c new file mode 100644 index 000000000..5cc319779 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/drv_sx1278.c @@ -0,0 +1,510 @@ +#include "board.h" +#include +#include +#include "drv_sx1278.h" +#include +#include +#include "spi_lora_sx12xx.h" +#include "sx1276-Hal.h" +#include "sx1276-Lora.h" +#include "sx1276-LoraMisc.h" +#include + +#include +#ifdef RT_USING_POSIX +#include +#include +#endif +#ifdef DRV_USING_SX1278 + +#define SX12XX_DO0_PIN GET_PIN(C, 1) +#define SX12XX_DO1_PIN GET_PIN(C, 0) +#define SX12XX_RST_PIN GET_PIN(F,11) +static rt_bool_t init_flag = RT_FALSE; +static rt_bool_t enable_master = RT_FALSE; +tRadioDriver *Radio = RT_NULL; +struct lora_device +{ + struct rt_device parent; +}; +struct lora_device sx1278_device; +static struct rt_spi_device *spi_bus; + + +void SX1276InitIo(void) +{ + rt_pin_mode(SX12XX_DO0_PIN, PIN_MODE_INPUT); + rt_pin_mode(SX12XX_DO1_PIN, PIN_MODE_INPUT); +} + +void SX1276SetReset(rt_uint8_t state) +{ + if (state == RADIO_RESET_ON) + { + rt_pin_mode(SX12XX_RST_PIN, PIN_MODE_OUTPUT); + rt_pin_write(SX12XX_RST_PIN, PIN_LOW); + } + else + { + rt_pin_mode(SX12XX_RST_PIN, PIN_MODE_INPUT); + + } +} +inline rt_uint8_t SX1276ReadDio0(void) +{ + return rt_pin_read(SX12XX_DO0_PIN); +} + +inline rt_uint8_t SX1276ReadDio1(void) +{ + return rt_pin_read(SX12XX_DO1_PIN); +} + +inline rt_uint8_t SX1276ReadDio2(void) +{ + return rt_pin_read(SX1278_DEVICE_DIO2_PIN); +} + +inline rt_uint8_t SX1276ReadDio3(void) +{ + return rt_pin_read(SX1278_DEVICE_DIO3_PIN); +} +inline rt_uint8_t SX1276ReadDio4(void) +{ + return rt_pin_read(SX1278_DEVICE_DIO4_PIN); +} +inline rt_uint8_t SX1276ReadDio5(void) +{ + return rt_pin_read(SX1278_DEVICE_DIO5_PIN); +} +inline void SX1276WriteRxTx(rt_uint8_t txEnable) +{ + if (txEnable != 0) + { + + } + else + { + + } +} + + +void SX1276Write(rt_uint8_t addr, rt_uint8_t data) +{ + SX1276WriteBuffer(addr, &data, 1); +} + +void SX1276Read(rt_uint8_t addr, rt_uint8_t *data) +{ + SX1276ReadBuffer(addr, data, 1); +} + +void SX1276WriteBuffer(rt_uint8_t addr, rt_uint8_t *buffer, rt_uint8_t size) +{ + spi_bus = (struct rt_spi_device *)rt_device_find(SPI_NAME); + struct rt_spi_message msg1, msg2; + rt_uint8_t data = (addr | 0x80); + msg1.send_buf = &data; + msg1.recv_buf = RT_NULL; + msg1.length = 1; + msg1.cs_take = 1; + msg1.cs_release = 0; + msg1.next = &msg2; + + msg2.send_buf = buffer; + msg2.recv_buf = RT_NULL; + msg2.length = size; + msg2.cs_take = 0; + msg2.cs_release = 1; + msg2.next = RT_NULL; + rt_spi_transfer_message(spi_bus, &msg1); +} + +void SX1276ReadBuffer(rt_uint8_t addr, rt_uint8_t *buffer, rt_uint8_t size) +{ + spi_bus = (struct rt_spi_device *)rt_device_find(SPI_NAME); + struct rt_spi_message msg1, msg2; + rt_uint8_t data = (addr & 0x7F); + msg1.send_buf = &data; + msg1.recv_buf = RT_NULL; + msg1.length = 1; + msg1.cs_take = 1; + msg1.cs_release = 0; + msg1.next = &msg2; + + msg2.send_buf = RT_NULL; + msg2.recv_buf = buffer; + msg2.length = size; + msg2.cs_take = 0; + msg2.cs_release = 1; + msg2.next = RT_NULL; + rt_spi_transfer_message(spi_bus, &msg1); +} + +void SX1276WriteFifo(rt_uint8_t *buffer, rt_uint8_t size) +{ + SX1276WriteBuffer(0, buffer, size); +} + +void SX1276ReadFifo(rt_uint8_t *buffer, rt_uint8_t size) +{ + SX1276ReadBuffer(0, buffer, size); +} + +struct rt_spi_device *sx12xx_init(const char *dev_name, rt_uint8_t param) +{ + RT_ASSERT(dev_name); + spi_bus = (struct rt_spi_device *)rt_device_find(dev_name); + if (!spi_bus) + { + rt_kprintf("spi sample run failed! cant't find %s device!\n", dev_name); + return RT_NULL; + } + /* config spi */ + else + { + struct rt_spi_configuration cfg; + cfg.data_width = 8; + cfg.mode = RT_SPI_MODE_0 | RT_SPI_MSB; /* SPI Compatible: Mode 0. */ + cfg.max_hz = 10 * 1000000; /* max 10M */ + rt_spi_configure(spi_bus, &cfg); + } + Radio = RadioDriverInit(); + Radio->Init(); + return spi_bus; +} + +/* + * This function supports to read data from the lora + */ +static rt_size_t lora_sx1278_read(rt_device_t dev,rt_off_t pos,void *buffer,rt_size_t size) +{ + RT_ASSERT(dev!=RT_NULL); + int read_times = 100; + SX1276StartRx(); + rt_kprintf("read lora ready!\n"); + + while (read_times) + { + if(SX1276Process()!=RF_RX_DONE) + { + read_times --; + rt_thread_mdelay(500); + } + else + { + break; + } + } + if(read_times>0) + { + SX1276GetRxPacket(buffer,(uint16_t *)&size); + } + else + { + size = 0; + } + + + return size; + +} + +/* + * This function supports to write data to the lora + */ +static rt_size_t lora_sx1278_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size) +{ + RT_ASSERT(dev !=RT_NULL); + if(size > 256) + { + rt_kprintf("error:message is too long!\n"); + return RT_ERROR; + } + else + { + SX1276SetTxPacket(buffer,size); + while(SX1276Process() != RF_TX_DONE); + rt_kprintf("write success!\n"); + } + + + return RT_EOK; +} + +static int sx1278_test(int argc,char **argv) +{ + char name[RT_NAME_MAX]; + if(argc ==2) + { + rt_strncpy(name,argv[1],RT_NAME_MAX); + } + else + { + rt_strncpy(name,"spi20",RT_NAME_MAX); + } + if(spi_bus == RT_NULL) + { + spi_bus = sx12xx_init("spi20",RT_NULL); + if(spi_bus == RT_NULL) + { + rt_kprintf("sx12xx init failed\n"); + return -1; + } + } + rt_kprintf("sx12xx init succeed\n"); + if (0x91 != SX1276_Spi_Check()) + { + rt_kprintf("sx12xx spi check failed!\n!"); + } + else + { + rt_kprintf("sx12xx spi check ok!\n"); + } + return 0; +} +MSH_CMD_EXPORT(sx1278_test,SAMPLE); + +rt_uint8_t SX1276_Spi_Check() +{ + uint8_t test = 0; + tLoRaSettings settings; + spi_bus = (struct rt_spi_device *)rt_device_find(SPI_NAME); + SX1276Read(REG_LR_VERSION,&test); + rt_kprintf("version code of the chip is %x\n",test); + settings.RFFrequency = SX1276LoRaGetRFFrequency(); + rt_kprintf("SX1278 Lora parameters are :\nRFFrequency is %d\n",settings.RFFrequency); + settings.Power = SX1276LoRaGetRFPower(); + rt_kprintf("RFPower is %d\n",settings.Power); + settings.SignalBw = SX1276LoRaGetSignalBandwidth(); + rt_kprintf("SignalBw is %d\n",settings.SignalBw); + settings.SpreadingFactor = SX1276LoRaGetSpreadingFactor(); + rt_kprintf("SpreadingFactor is %d\n",settings.SpreadingFactor); + SX1276Write(REG_LR_HOPPERIOD, 0x91); //选一个用不到的寄存器来做验证 + SX1276Read(REG_LR_HOPPERIOD, &test); + if (test != 0x91) + { + return -1; + } + return test; +} + +static rt_uint16_t ComputerCrc (rt_uint8_t *data,rt_uint16_t length) +{ + int i; + rt_uint16_t crc ; + while (length --) + { + crc ^= *data++; + for(i =0;i<8;i++) + { + if(crc & 0x01) + crc = crc >>1^ 0xA001; + else + crc = crc >>1; + } + } + return crc; +} + +static rt_err_t CrcCheck(rt_uint8_t *data,rt_uint16_t length) +{ + rt_uint16_t crc_data; + rt_uint16_t input_data ; + input_data = (((rt_uint16_t)data[length - 1] << 8) & 0xFF00) | ((rt_uint16_t)data[length - 2] & 0x00FF); + crc_data = ComputerCrc(data,length-2); + + if(crc_data == input_data) + { + return RT_EOK; + } + else + { + return -RT_ERROR; + } +} + +static int sx1278_fops_open(struct dfs_fd *fd) +{ + rt_err_t ret; + rt_device_t dev; + dev = (rt_device_t)fd->data; + RT_ASSERT(dev !=RT_NULL); + ret = rt_device_open(dev,RT_DEVICE_FLAG_RDONLY); + if(ret ==RT_EOK) + { + return RT_EOK; + } + spi_bus = (struct rt_spi_device *)rt_device_find(SPI_NAME); + if(!spi_bus) + { + rt_kprintf("can not find spi bus\n"); + return -RT_ERROR; + } + + struct rt_spi_configuration cfg; + cfg.data_width = 8 ; + cfg.max_hz = 10* 1000000; + cfg.mode = RT_SPI_MODE_0 |RT_SPI_MSB; + rt_spi_configure(spi_bus,&cfg); + Radio = RadioDriverInit(); + + Radio->Init(); +} + +static int sx1278_fops_close(struct dfs_fd *fd) +{ + rt_device_t dev; + dev = (rt_device_t)fd->data; + rt_device_set_rx_indicate(dev,RT_NULL); + rt_device_close(dev); + return RT_EOK; +} + +static int sx1278_fops_read(struct dfs_fd *fd,void *buf,rt_size_t count) +{ + rt_device_t dev; + dev = (rt_device_t)fd->data; + RT_ASSERT(dev!=RT_NULL); + rt_err_t ret; + ret = lora_sx1278_read(dev,0,buf,count); + if(ret < 0 ) + { + return -RT_ERROR; + } +} + +static int sx1278_fops_write(struct dfs_fd *fd,void *buf,rt_size_t count) +{ + rt_device_t dev; + dev = (rt_device_t)fd->data; + RT_ASSERT(dev!=RT_NULL); + rt_err_t ret ; + + ret = lora_sx1278_write(dev,0,buf,count); + if(ret<0) + { + return -RT_ERROR; + } +} + +static rt_err_t lora_sx1278_open(rt_device_t dev,rt_uint16_t oflag) +{ + RT_ASSERT(dev !=RT_NULL); + return RT_EOK; +} + +static rt_err_t lora_sx1278_close(rt_device_t dev) +{ + RT_ASSERT(dev !=RT_NULL); + return RT_EOK; +} + +static rt_err_t lora_sx1278_init(rt_device_t dev) +{ + RT_ASSERT(dev!=RT_NULL); + spi_bus = (struct rt_spi_device *)rt_device_find(SPI_NAME); + if(!spi_bus) + { + rt_kprintf("can not find spi bus\n"); + return -RT_ERROR; + } + + struct rt_spi_configuration cfg; + cfg.data_width = 8 ; + cfg.max_hz = 10* 1000000; + cfg.mode = RT_SPI_MODE_0 |RT_SPI_MSB; + rt_spi_configure(spi_bus,&cfg); + Radio = RadioDriverInit(); + + Radio->Init(); + return RT_EOK; +} + +/* ------------------test--------------------*/ +static rt_err_t LoraSend(int argc,char**argv) +{ + rt_device_t dev; + struct BlockWriteParam write_param; + dev = rt_device_find("sx1278"); + int result; + int len; + char msg[LORA_BUFFER_SIZE] = {0}; + if(argc<2) + { + rt_kprintf("Usage: %s \n",argv[0]); + return -RT_ERROR; + } + rt_strncpy(msg,argv[1],LORA_BUFFER_SIZE); + len = strlen(msg); + write_param.buffer = msg; + write_param.size = rt_strlen(msg); + + result = lora_sx1278_write(dev,0,write_param.buffer,write_param.size); + rt_memset(&write_param,0,sizeof(struct BlockWriteParam)); + if(result < 0) + { + rt_kprintf("send error!\n"); + return -RT_ERROR; + } + return RT_EOK; +} +MSH_CMD_EXPORT(LoraSend,lora send sample); + +static rt_err_t LoraReceive(void) +{ + char sx1278_recv_msg[256]; + int ret; + rt_device_t dev; + dev = rt_device_find("sx1278"); + while(1) + { + ret = lora_sx1278_read(dev,0,sx1278_recv_msg,256); + if(ret<0) + { + rt_kprintf("receive error!\n"); + return -RT_ERROR; + } + rt_memset(sx1278_recv_msg,0,256); + return RT_EOK; + } +} +MSH_CMD_EXPORT(LoraReceive,lora receive sample); + +const static struct dfs_file_ops sx1278_fops = +{ + sx1278_fops_open, + sx1278_fops_close, + RT_NULL, + sx1278_fops_read, + sx1278_fops_write, + RT_NULL, + RT_NULL, + RT_NULL, + RT_NULL, +}; + + +int sx1278_init() +{ + rt_err_t ret = RT_EOK; + sx1278_device.parent.open = lora_sx1278_open; + sx1278_device.parent.close = lora_sx1278_close; + sx1278_device.parent.read = lora_sx1278_read; + sx1278_device.parent.write = lora_sx1278_write; + sx1278_device.parent.init = lora_sx1278_init; + ret = rt_device_register(&sx1278_device.parent,"sx1278",RT_DEVICE_FLAG_RDONLY); + #ifdef RT_USING_POSIX + sx1278_device.parent.fops = &sx1278_fops; + #endif + if(ret !=RT_EOK) + { + rt_kprintf("sx1278 register failed!\n\r"); + return -RT_ERROR; + } + rt_kprintf("sx1278 register success!\n\r"); + return RT_EOK; +} +INIT_APP_EXPORT(sx1278_init); +#endif \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/drv_sx1278.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/drv_sx1278.h new file mode 100644 index 000000000..ef2d7ae81 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/app_match_rt-thread/sx1278/sx1278_source/drv_sx1278.h @@ -0,0 +1,25 @@ +#ifndef __DRV_SX1278_H__ +#define __DRV_SX1278_H__ + +#include +#include + +#include +#define SPI_NAME "spi20" +#define LORA_BUFFER_SIZE 256 +struct BlockReadParam +{ + rt_off_t pos; + void * buffer; + rt_size_t size; +}; +struct BlockWriteParam +{ + rt_off_t pos; + const void *buffer; + rt_size_t size; +}; +#endif + + + From 15a85897708b93ddc680f5d67085086590e0c971 Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 14:47:09 +0800 Subject: [PATCH 08/26] sensor/humidity/ hs300x 1.Kconfig is ok. 2.gcc is ok. --- APP_Framework/Framework/sensor/humidity/Kconfig | 6 ++++++ APP_Framework/Framework/sensor/humidity/SConscript | 14 ++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 APP_Framework/Framework/sensor/humidity/SConscript diff --git a/APP_Framework/Framework/sensor/humidity/Kconfig b/APP_Framework/Framework/sensor/humidity/Kconfig index b473ef120..a38a74125 100644 --- a/APP_Framework/Framework/sensor/humidity/Kconfig +++ b/APP_Framework/Framework/sensor/humidity/Kconfig @@ -35,6 +35,12 @@ config SENSOR_HS300X_HUMIDITY endif if ADD_RTTHREAD_FETURES + config SENSOR_DEVICE_HS300X_DEV + string "HS300x device name" + default "/dev/i2c1" + config SENSOR_DEVICE_HS300X_I2C_ADDR + hex "HS300x device i2c address" + default 0x44 endif endif diff --git a/APP_Framework/Framework/sensor/humidity/SConscript b/APP_Framework/Framework/sensor/humidity/SConscript new file mode 100644 index 000000000..f307e3f70 --- /dev/null +++ b/APP_Framework/Framework/sensor/humidity/SConscript @@ -0,0 +1,14 @@ +import os +Import('RTT_ROOT') +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(path, 'SConscript')) + +Return('objs') From 81fbf93dd25c24e0fc7b55dd46db269b7cc9bb6f Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 14:48:53 +0800 Subject: [PATCH 09/26] Framework/sensor/hs300x 1.Kconfig is ok. 2.gcc is ok. --- .../sensor/humidity/hs300x_humi/SConscript | 10 ++++++++++ APP_Framework/Framework/sensor/temperature/Kconfig | 6 ++++++ .../Framework/sensor/temperature/SConscript | 14 ++++++++++++++ .../sensor/temperature/hs300x_temp/SConscript | 10 ++++++++++ 4 files changed, 40 insertions(+) create mode 100644 APP_Framework/Framework/sensor/humidity/hs300x_humi/SConscript create mode 100644 APP_Framework/Framework/sensor/temperature/SConscript create mode 100644 APP_Framework/Framework/sensor/temperature/hs300x_temp/SConscript diff --git a/APP_Framework/Framework/sensor/humidity/hs300x_humi/SConscript b/APP_Framework/Framework/sensor/humidity/hs300x_humi/SConscript new file mode 100644 index 000000000..badca0d8b --- /dev/null +++ b/APP_Framework/Framework/sensor/humidity/hs300x_humi/SConscript @@ -0,0 +1,10 @@ +from building import * +import os + +cwd = GetCurrentDir() +src = [] +if GetDepend(['SENSOR_HS300X_HUMIDITY']): + src += ['hs300x_humi.c'] +group = DefineGroup('sensor humidity hs300x', src, depend = [], CPPPATH = [cwd]) + +Return('group') \ No newline at end of file diff --git a/APP_Framework/Framework/sensor/temperature/Kconfig b/APP_Framework/Framework/sensor/temperature/Kconfig index c7eb15890..aa170103b 100644 --- a/APP_Framework/Framework/sensor/temperature/Kconfig +++ b/APP_Framework/Framework/sensor/temperature/Kconfig @@ -34,6 +34,12 @@ config SENSOR_HS300X_TEMPERATURE endif if ADD_RTTHREAD_FETURES + config SENSOR_DEVICE_HS300X_DEV + string "HS300x device name" + default "/dev/i2c1" + config SENSOR_DEVICE_HS300X_I2C_ADDR + hex "HS300x device i2c address" + default 0x44 endif endif diff --git a/APP_Framework/Framework/sensor/temperature/SConscript b/APP_Framework/Framework/sensor/temperature/SConscript new file mode 100644 index 000000000..f307e3f70 --- /dev/null +++ b/APP_Framework/Framework/sensor/temperature/SConscript @@ -0,0 +1,14 @@ +import os +Import('RTT_ROOT') +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(path, 'SConscript')) + +Return('objs') diff --git a/APP_Framework/Framework/sensor/temperature/hs300x_temp/SConscript b/APP_Framework/Framework/sensor/temperature/hs300x_temp/SConscript new file mode 100644 index 000000000..15715d9d8 --- /dev/null +++ b/APP_Framework/Framework/sensor/temperature/hs300x_temp/SConscript @@ -0,0 +1,10 @@ +from building import * +import os + +cwd = GetCurrentDir() +src = [] +if GetDepend(['SENSOR_HS300X_TEMPERATURE']): + src += ['hs300x_temp.c'] +group = DefineGroup('sensor temperature hs300x', src, depend = [], CPPPATH = [cwd]) + +Return('group') \ No newline at end of file From 310282628faa37de0d483de1b7d245ec66d9d12d Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 14:57:18 +0800 Subject: [PATCH 10/26] transform_layer/rtthread/ 1.find a bug about 'PrivSemaphoreObtainWait' when incoming parameter 'NULL' in rtthread . 2.modify transform.c and transform.h --- APP_Framework/Framework/transform_layer/rtthread/transform.c | 5 ++++- APP_Framework/Framework/transform_layer/rtthread/transform.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/APP_Framework/Framework/transform_layer/rtthread/transform.c b/APP_Framework/Framework/transform_layer/rtthread/transform.c index 661babf8f..71421046c 100644 --- a/APP_Framework/Framework/transform_layer/rtthread/transform.c +++ b/APP_Framework/Framework/transform_layer/rtthread/transform.c @@ -67,7 +67,10 @@ int PrivSemaphoreAbandon(sem_t *sem) { return sem_post(sem); } - +int PrivSemaphoreObtainWaitForever(sem_t *sem) +{ + return sem_wait(sem); +} /**************************task*************************/ int PrivTaskCreate(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) diff --git a/APP_Framework/Framework/transform_layer/rtthread/transform.h b/APP_Framework/Framework/transform_layer/rtthread/transform.h index 786302911..df37a48ee 100644 --- a/APP_Framework/Framework/transform_layer/rtthread/transform.h +++ b/APP_Framework/Framework/transform_layer/rtthread/transform.h @@ -173,6 +173,7 @@ int PrivSemaphoreDelete(sem_t *sem); int PrivSemaphoreObtainWait(sem_t *sem, const struct timespec *abstime); int PrivSemaphoreObtainNoWait(sem_t *sem); int PrivSemaphoreAbandon(sem_t *sem); +int PrivSemaphoreObtainWaitForever(sem_t *sem); int32_t PrivSemaphoreSetValue(int32_t sem, uint16_t val); /*********************task**************************/ From 244fcb9e5dea67b3cbc59965201480ce9ffef6d7 Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 15:01:19 +0800 Subject: [PATCH 11/26] connection/4g/ 1.Kconfig is ok. 2.gcc is ok. --- .../Framework/connection/4g/SConscript | 18 ++++++++++++ .../Framework/connection/4g/ec200t/Kconfig | 28 ++++++++++--------- .../Framework/connection/4g/ec200t/SConscript | 10 +++++++ 3 files changed, 43 insertions(+), 13 deletions(-) create mode 100644 APP_Framework/Framework/connection/4g/SConscript create mode 100644 APP_Framework/Framework/connection/4g/ec200t/SConscript diff --git a/APP_Framework/Framework/connection/4g/SConscript b/APP_Framework/Framework/connection/4g/SConscript new file mode 100644 index 000000000..9365cab84 --- /dev/null +++ b/APP_Framework/Framework/connection/4g/SConscript @@ -0,0 +1,18 @@ +import os +Import('RTT_ROOT') +from building import * +SOURCES = [] +SOURCES = ['adapter_4g.c'] + SOURCES +objs = [] +cwd = GetCurrentDir() +path = [cwd] +group = DefineGroup('4g', SOURCES, depend = [], CPPPATH = [cwd]) +objs = objs + group +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(path, 'SConscript')) + +Return('objs') \ No newline at end of file diff --git a/APP_Framework/Framework/connection/4g/ec200t/Kconfig b/APP_Framework/Framework/connection/4g/ec200t/Kconfig index c5ac4a37f..a4b43b7ef 100644 --- a/APP_Framework/Framework/connection/4g/ec200t/Kconfig +++ b/APP_Framework/Framework/connection/4g/ec200t/Kconfig @@ -3,19 +3,13 @@ config ADAPTER_4G_EC200T default "ec200t" if ADD_XIZI_FETURES - config ADAPTER_EC200T_USING_PWRKEY - bool "EC200T using PWRKEY pin number" - default n + config ADAPTER_EC200T_PWRKEY + int "EC200T PWRKEY pin number" + default "97" - if ADAPTER_EC200T_USING_PWRKEY - config ADAPTER_EC200T_PWRKEY - int "EC200T PWRKEY pin number" - default "97" - - config ADAPTER_EC200T_PIN_DRIVER - string "EC200T device pin driver path" - default "/dev/pin_dev" - endif + config ADAPTER_EC200T_PIN_DRIVER + string "EC200T device pin driver path" + default "/dev/pin_dev" config ADAPTER_EC200T_DRIVER_EXTUART bool "Using extra uart to support 4G" @@ -45,5 +39,13 @@ if ADD_NUTTX_FETURES endif if ADD_RTTHREAD_FETURES - + config ADAPTER_EC200T_DRIVER + string "EC200T device uart driver path" + default "/dev/uart2" + config ADAPTER_EC200T_PIN_DRIVER + string "EC200T device pin driver path" + default "/dev/pin" + config ADAPTER_EC200T_PWRKEY + int "EC200T PWRKEY pin number" + default "97" endif diff --git a/APP_Framework/Framework/connection/4g/ec200t/SConscript b/APP_Framework/Framework/connection/4g/ec200t/SConscript new file mode 100644 index 000000000..242e1f3fb --- /dev/null +++ b/APP_Framework/Framework/connection/4g/ec200t/SConscript @@ -0,0 +1,10 @@ +from building import * +import os + +cwd = GetCurrentDir() +src = [] +if GetDepend(['ADAPTER_EC200T']): + src += ['ec200t.c'] +group = DefineGroup('connection 4g ec200t', src, depend = [], CPPPATH = [cwd]) + +Return('group') \ No newline at end of file From 3bcbcd6499406fdffd0239b38d1132f3438251f5 Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 15:03:04 +0800 Subject: [PATCH 12/26] connection/lora/sx1278 1.Kconfig is ok. 2.gcc is ok. --- .../Framework/connection/lora/SConscript | 19 +++++++++++++++++++ .../Framework/connection/lora/sx1278/Kconfig | 3 +++ .../connection/lora/sx1278/SConscript | 10 ++++++++++ 3 files changed, 32 insertions(+) create mode 100644 APP_Framework/Framework/connection/lora/SConscript create mode 100644 APP_Framework/Framework/connection/lora/sx1278/SConscript diff --git a/APP_Framework/Framework/connection/lora/SConscript b/APP_Framework/Framework/connection/lora/SConscript new file mode 100644 index 000000000..a447a0a2f --- /dev/null +++ b/APP_Framework/Framework/connection/lora/SConscript @@ -0,0 +1,19 @@ +import os +Import('RTT_ROOT') +from building import * +SOURCES = [] +if GetDepend(['CONNECTION_ADAPTER_LORA']): + SOURCES = ['adapter_lora.c'] + SOURCES +objs = [] +cwd = GetCurrentDir() +path = [cwd] +group = DefineGroup('lora', SOURCES, depend = [], CPPPATH = [cwd]) +objs = objs + group +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(path, 'SConscript')) + +Return('objs') \ No newline at end of file diff --git a/APP_Framework/Framework/connection/lora/sx1278/Kconfig b/APP_Framework/Framework/connection/lora/sx1278/Kconfig index 4439c3f0f..9b9cc2b48 100644 --- a/APP_Framework/Framework/connection/lora/sx1278/Kconfig +++ b/APP_Framework/Framework/connection/lora/sx1278/Kconfig @@ -16,5 +16,8 @@ if ADD_NUTTX_FETURES endif if ADD_RTTHREAD_FETURES + config ADAPTER_SX1278_DRIVER + string "SX1278 device spi driver path" + default "/dev/sx1278" endif diff --git a/APP_Framework/Framework/connection/lora/sx1278/SConscript b/APP_Framework/Framework/connection/lora/sx1278/SConscript new file mode 100644 index 000000000..3b0d3fe13 --- /dev/null +++ b/APP_Framework/Framework/connection/lora/sx1278/SConscript @@ -0,0 +1,10 @@ +from building import * +import os + +cwd = GetCurrentDir() +src = [] +if GetDepend(['ADAPTER_SX1278']): + src += ['sx1278.c'] +group = DefineGroup('connection lora sx1278', src, depend = [], CPPPATH = [cwd]) + +Return('group') \ No newline at end of file From 6156314ba7a6f02d4b4b3b24e17afc358588079a Mon Sep 17 00:00:00 2001 From: yl1185 <1182784652@qq.com> Date: Thu, 23 Jun 2022 15:18:18 +0800 Subject: [PATCH 13/26] aiit-arm32-board/test/ test jpg 1.test jpg. --- .../aiit-arm32-board/test/client.jpg | Bin 0 -> 82616 bytes .../aiit-arm32-board/test/ethernet.jpg | Bin 0 -> 110831 bytes .../aiit-arm32-board/test/ethernet.png | Bin 0 -> 130508 bytes .../aiit-arm32-board/test/gateway.jpg | Bin 0 -> 31144 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/client.jpg create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/ethernet.jpg create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/ethernet.png create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/gateway.jpg diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/client.jpg b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/client.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a3e8ad56bb5df0471631e9afbd5149a1783f2aa3 GIT binary patch literal 82616 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 M`2Ug**DuU}0qd8clK=n! literal 0 HcmV?d00001 diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/ethernet.jpg b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/ethernet.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f8a59b9e323dcbfebdf986b1d4baf1a75f7433c4 GIT binary patch literal 110831 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νzG8xoraCo@zf*az2$uNe>gWXu>03;7nyb^hhNirf8bkmM=QpxKuZy zW)I`>cP1V!O4doPKd9GyO#okx)Hn5I@3HThaYfi+dH;1j8=hBBWe>=`$G?g4{gm}> z<8F_on@PQ_@Tl|MPSG$4i&di5A?wbCqpL>=SVaQ=`N&kQdq2Y5?k65#o;`Z6cq}}y zmM;5*n5spV9kh?Xs*Xy#vMj1D^>PC4vxk2+sh__6p{OCSu_AvVlq+XEM}Hh6?= zhdc1&9%B3VQBldzf;Twl*a4%-bO|Gw8XIdFT-W;h+EFJOW8w1DVK!kl^M`CU2~uo2 z{5p1yF}j1r?e0}i%d(l!->7noU+}Z)fF}X7Qi#SjBt@V1kTn^R#EM`F%owpeo5Q#c z?9J63y+3|vy!pvl0ptv=z|E=Nxe{dTN)BxT`2H|G*Y7c{rwYs_!M&^DCyTQV>=Lx} zW*3=c$IN2mP9Fb~yHZ6&t0BRn<8ZsqK(kUM)Dy zVqY)}kFYa9b|Aqc|I!C78`ljHS|KbF^u10q=0A3Fr(*<^BT$lcD!GMp?IL~L(iVw` z4h>-zDb_`5B^QtO7l9cgj#Xuk5#Np|mV_wo?_`!&KlP0<+tZ9`;XtP~XaCZL(n@RE zh#@_0#rqSV*!Ma1u(7etf>zXMY0kGmEm!O!YqPgN_UNsCi^Syf`0X4UQ}&|aN!$=i zv$!4}V?Yho4IK1M@Qq#VD>nH0;WB5(L#eC%PqIxH)$xzjlv}ee@5e0JJUG=vi@;l{ zpURTQg-K|lyYJf#guW;T<6<3b&QtblPYu^>N5A;HyE+9w+f{E|DM*k|Pm$G@IPVp* z7mcKAo_YqG2$dKeCoyWa4MOP#v@%?4p^LU?r$=lgOh%6P3B5boKI5#oq+@2vi6z*HAMF)m%CGOMa z(N?XiKb@X+k6-GR9$L&m^kkn9n{kH&b4V6mdY>6uw>P<=G2;fKXERRukG1j(yG3pK zIKn@_v?gK@g>c2*u}OAi_e%0=b2L)bb7SZB=#bLG7v(t&c%slF_rPcPEL#CwvRHMR zXY*XBPL@rvou`~GR!CEM2l9EpnXFn=F)rSs za-Ou8>KOt0_C+*DZ0_V*E$@+Abm^CWkD9telNOPrg*7r9hB7 z9tSg*47?2yIIMR`qDsvW}P}v_iu|M{iu{M`!*x+Nc#Aw?|ChRB^wxQQSb3u}MVzg6mz1;pb z5+1vgV{w}U21MlLop1Wc<%3);QRh%{o7MyPV%#~S++xoPbo&q6vx9QDEi0Ei?MCo2 zPEk(QF!X+p%3{(zy2|l=o^#H+B1gR%&-GVa-4J=Bzhw3)%%Qt-Kh+n)zn{XF>GM}te9ADW>cZrU1TRfc7H8HxDazt}s*_zJ-XTwpc5^#uUnni{vRCUS zeK>QHuO=KJ&%E9ufGpZ4M}>-Gy;@d(>!4bcWTXEh++L}oWTxU+Pi%u@r#H)b*%7!b ztb1M1%YkIr=2KYOh~HeywlWz&W)FxXPfd&Aar>#LmM?;B?TsK?ttZR22xDiLt525w z{Ht`__r6(rZA(u+c<+? zYQjcKxE{SKeu|EEyrG~*^I<{vUf%mU2Nb8DqJp9aQ8TROSaeV;+IMJO(JO55Syxqg z{jF>jlQCas>@6SFVVg399!7$YT_q0gSqvpY=lL$3oR!7xQRWej!ij0h&Kywd?e3)^ zQ4I@;Ke!`sTU_*VKVkGT{;n76i__D6f=Hp$#brb_Y?Wo_C03C*FCN4k6U-sjj+C%I zsCsGG8$RqUoGyefU-Z$`fnxS3ux}2eRI(T^mBt@`p(wi=<<+&P6lZ&=Z7)itHEY03TmUJPHk?&QJ!>GIHvJS<%TOdZQc>Rd(3*F{?uSyNQ zl|*KvzL1%_;4|!Bfj6z{3uWtVH%#|sxJ)Fp%8nJf*w32I+d2_P@OFz8VP(FBIVQ=C zg{0wIZAIfI1@#loT)_U`paRTbCKEgG z5P|YQ+3EC}6C)odN~n-#FOqZKoqWm~!`NyYk8ECU3iMd-GaIr<^lKN>h8k4_RV=V(K<$hh`*!# z8a0O*bGq`|iqw4BsPvG))DC91m@I>fS;%Cz3#=o)Y)gW#n37|Vyjkz1))MwDikvup zK1AR&M_J7~Z2to5dW@v7p!=PqnQ}{YvknzQj4iLqyIdIIuFg==ATI7l&tmd-WWkJ? zcOp2EBs1{!Tn?R2r+%o2epI0wOT2}Z`pC+jEt!{DQk;sr)!1HOEm*-~Z5XPfIyvn$ z>?O!yJ-^?@C*z~O&NHTA3w6A3&Nu6rWe0WkEQ8kqn*Z9%N*QghnZ;mo3KvWHn#Emx zM{JzE;!VhsDre1G5fbOC~BU z9$wyfXz`?*Rw(~x&>t~APs=`BDa+_L#B02&qvJLd6=!(z;MT98A0DbD-|f6%(Q#U< z&%xbEF{*IgPhv>=Ozb}UeOHFN*ZwMRpE_Hom)u7@3W5kI*BN;E&G3$hxGaprFz!EW zS1RmFdwm)|Iyd(jwjb+%o|UOEdfCB2FHHmJ|Gnyq{JrX*H+xahwQ?RB4NpXq{I0!ehEBDP>tkY|xK0nQ7&f<_dK^ z_E*RB3v~7LpVltTS{4q&?wOx?*|S;c-t{WCOWz|S(_mKVReCL~{21l%x-Y;7$2& zVtZ-6lW3MiD|YW%1t$o+R8O^dY`rq2tniClpf zvw!Yp4f3l0GzmMr1W)hJ(M?4ADBK8)--~Ji<}L_&pJl(TFVu1$z<{&@J*V93@QYi^ zLGo-4d*Y?9Ui}JDPnO!zYuzfI_!7(-5``8VmY0;()7_mn3Pn95Y@qjn{Wv=G5nbt&>+!bG`4;W>-6riv#E#Op=}H?|va%-^&nS#I ze=!ei9e)t+&+pE%&9N8SJ}dP1!@mfk zLLS*`b!MifbVR&-@Nfy4Z~tL_P0N^xc~L@J$0{kW)D>~>KN3SbvR+o4NUq< zA}~~M!X7O;7i{c%7J8Cc>E3!t_P%IQ0=KVPz=w5PYa;7BDr8>!4nMo-Cs$vlmRLha zP{`;nM9-}9bLwaxK}CCb=_ylDm0l&)l?tv?6I-)73$xHLhZcU^V#T7Qe)f<(oShpl zsUvH_fPA=$%x_1a{$zk{ z%92Q$_Mvjr0BgNa2Np)xwapv1zr;Qas?Z38iE&_hooA9%tZ2cqq4w}WL5JCa)68XI zN1gH_ycfUY(z}!7@!ob`BicF!0yvz$CEU^P%`C=zlE z%XiaP<4toPJLJ{H_@uLaOiEcH`{A;YT4XuaUAm{}6WIe)F~lT}-J-quu5ierFCJf9 zc;}%sszXqZDE5xTTrw|ZMSva=ubDw(lz~&S$p}egVdc9G6Z~nPS9uFDZr!I}w$tv- zdR0>3P8`)2A!ymiu7uK5@kW0$l~r3knIaxxlUKKIX&;x6s?;!reml1vP1rAmrr)0RHOa? zE^na!Oc@*1_+eYtTGNuTbtx+$XL8oerFwg#UL>a3+9AoQhe#|oYRoWB^5`M)j%AR1 zFqeq8Y* zL@LR|>bc<7d*<7!KsIF6*mGx}(8q+knVMO&}Lob^T0 z(07{>JZ7TMcGWiTJE<~<7};+hKhyF!Z^CfKDrtu2b`=6RCDi0fV53)D4n9+zdchgk zIcZ0QQm-Dv?2w3)Xhkr8-z`11+2Ke!k-TxUbU(q5n!a`?WTh{Y^Yfs9W$CdbgUGk@ zWv_TjQnqNHb3Vh4Z_XrRARVtaAeejwc2plATPkIyT)+w>ucL6FiXBeuUt-m>>mGWz zSde2UfZr&G=d%J1#ycRp5JLks1uaqS-n}R?S%o~FxL#K-yU3xEUDQ^f4RT>uZ|-cl z_Hyv0J#0p1CyC+9t?+gRIwaL4E7OwBa^w_;TDBW5$AwrxYTgoU#vv*Yu%%IMoRpp| zNt<|O7T?qg!~x=cfQr)f@w0~6M@?}uG&RgepDAD8!fQF15>NepwVypc>Ao>>Fr zZyYER9l|Y)^)31ClIpxC`*e-^g5=iDZ2I&HelMFz>dBBJ@Of{x8qpD#j=zu`kHXrC zP*cTYwME<*`vYv#?b%uoELLt@Mb<2_g9NX__K4X5P;^S7skObmSaF^&H&jrq z&fng?IjgSSbT1?9nccD%HI*Y&KBxK;8g-;%c*pe8@VKDI#WII;by7d(IV7;nlg))$ z9AI~Bs#Vt+k21L+@GRcCCnblIyc{%{`-DUyt@JxvMxDwSN1J@Kh(Cx=qF zfACO^KP9dM-NVjyJGJmq0F%f!gq${3iI?cy#_}+hu84#sSSCF0(~2M}=EH_i8Txhr z+NxAp{V0XE->MU#9TGIl61pYZ4`DYc`T%e6Uq5HUwq`FMywNQR9!GWYjfSDXkS=x$ z3W})M=mq0&Cs%UcApKYiLIP!B>7!fQ#l%Qk6o14yTF0Q;L+z|Sz21kQ&2kh)FLZPD$KZd& zDmSiPv31q>?2wL%iUwB@8)z3TWokOwa3pplgw+v9V~m-f6#YKvYbC%3@M^Hiw!f}s z)qkX@%I07%LI*Tbqn)ciC#iy0)S3vm(HbO|lQ|t^HB~wE5c%qOLEED#zjI}!)zt3M zsEhOd(i=fv3!r#;(XWr@BR)JIGEenyYi%wMC+l2wx!$|5VoRm2G81>yaA>Ig6eBl_ z{=0JKb_43_g#tE;AdRp5fhOrv=bq_G9m~Sr-x{mGgJS_u{oTErXI8El>1f|#>E$I* z3>bcy)fbLVLkS_RhQXQxe*)HnmnvUH|C!qyBA3igT{Gn|)_9vWz2F$_DT)Kd zJu@r2dUMZ8)Z3_lQ29w&ZW$TU8$_BYDol&opT&+)@vK*5U%B+{&y^hinz z+5A9`0cMCFzD&;uj*Gc`O*#8fRKQYcD~?~wkb3=PcJlm){fUv)J2DEg2G{xcg0c1? zz-6w%qhz+9Q;pKRvTwVmRd8f@sb#RQrkK~*Q}#tz%$}j){k8iXP()$H&{_~vTyTz3>AiR)Uehc=E~$dwXJ3?GL|T3 z&65f`w#7;y^wF=CV&{H-@+>2l5${^PZtf4i2f2WdJGL7t6k&jcxH>-FJGz2mk_s&- zTXr6!GQLBcVaP_lbh$&7U@Jr?BD%vqV=1Pfvn#FqF5qA2%X^ktq_!TR+V z%M0LFWo~p#%4fm$_Q*~ZU7=THOT@KB{)+aGSsfLs5mtx|bH{LX??^taofhtOEAwrl zwpxwk+1a`!qv+s^%P6uDv6gvE>tRSAz@+ zFLtQ%UP?{f6&o=ZjwwH{n4$JQINBY_@$~C&to{o%uXlF?)3e{;^}|#CeG~9~-3QeZPU_3NfjNaYLKz%I zuSI-b_5e;%wsUaAFJQ{kG5FzO)T2Rufm4g_L2D)>8&-oX0)S{b^2(;Ks>_bH^l%BPmaDh;w#F4zVugC1kJ?usa`lb8ZHP;D0-RO24AKd#p-K ztx+H#5a>jLDVaY^-q-)jy%hP@q@cd`5KjOzUa*brTz>_=quhP*&b|W{L%b_P3!zwq z)w-5Z?7dO0(T#Sz3z|0IR8+=s?=PWNHE-kgK1cSSh@lq5_5z$XyfA=Bq&oxHs8SBp zo4-lW>)%MwhHN21SR-ou$2%Z(%LLJc4sMm_Qfl?(1|@EBvvqFKNBnf}=bIhA zriG7wZvR@B~NdI|X=J6`cn07Q!-rHo??4TB*WYW7p-u z`BU&AWT~?qxo>CZ8Zn%Kl;*OArxyRtZueM~-e;q{PU{{BwEF4G&` z1k{_aWWdOa0!Eptra`aiEy{N?pg-2gXWF3SacTUF4a2A3{II^|mZDhpqzk?Oe*7vY zaC_|$bFUw#Hk#+Z%_TCdL&*sZ8?WIHRk2&F8sXV?N=qJ@y+k@J&23i;$GYDvA5o~g z5dhhepteed80`JS!b_pm|5981bqn8+EcddSlJPVdZ=EbRxn_*U5=wb}xf^FAI1%ix zf*aIaliPWJ>%vB*A?C$%j*okPPfpWwuq`X~+@p-&l6+(QsrsV|t3N8lNLpG?gZu91 zy0Jqcs=F))$1nG}(V^DObV6K#8Qy4rMd=LAxm?tFk%ABAi&ncKc!VmyH1tVDaHC*o^ftroMkdUwXUcnhr9!5ay~+TT9)9YG#)`jeS)2c}q3bmdxC{q0plNZD1i?U30!G zz&cCu5x{`K8oDTYUQhc~dNba2tV5Ej21C&KI+WIrld#UY>-h!eG)&m z&T!tnYj*ay7h~?)Dc(f``KQlaqu<`yz-p4*9Uj<}XP>kI)qn#ED!nag*rB(t{rfI` zyb#cz+&99B-!yHPXH{c%2TTLYUXnn>PyqU3gm z&vaE!MBczI+>rNw^#UL?DH@M$tK<#RWehOd#}B00?fq#K(&HO)j4E;CSF>KzmXVB~ zv4!XSbVOHr6D69xRLGxadSqLJgNIU8HUnypIK4!v2T7A!?|Wa z@jKe+xrTH{Nl6JBmtY@!)DSTUf|@vip4TkvXc@4+RO)^*X9d}>6$2AN`7u08OP)p8 z7a8<5Al8JuR#?2J@WEjjoK!{<45sr37mt9?j{{BG8~EbBxc2ewK&|mgXT)`@v6ocL z`G#bJ082_6zVi{cOGl+z?&I80U!_i&K>uGoUd)#DccmsyqVR)3GF@)meSjulokJyoS`tk7hZRS zzO@xcY(j1irR7|o`GDA7xmKO9n6cVZGW`q!=WfBQn>Ly=@>LlGm8$wD?zD|o6wSg; zxLZkANnW7=Jkbi5?mCRr@_ojF029FHfR!lnPEHJO87mA99qtcJ9a-+Hn2{%p$uEQg zAEol{Ez2tCDeRwxpy$WU0`1B5TB)G#@Mo7;cf{;Z7m(fS3N!4Bhx6M}uVMQ>MMm}R z?eDR%*@=8TLAhBTZzrLNy^x>f%R0@dla|y(-q)=+zpke8^HzpN4oAk)SJPxsJ7;^Z z+B>PE^O5l$6IoHyTH+*GOb8P<7Q;&>;elOX0)E={HOy_FcKednRm20$?oJqOzeWsK zvt5wqpO06?!MMZAu%wrH^#WRbkw>{M?*-pYIGZjJ!L}o_?Z#9ZZPtiY+9h|m)|Ma1 z-ygAwa#xR$@iOHaBia7fbG`TJLp~!KsZ(V#9@YvU4xrJ4+?gsZby+p3QwiWuyags7CA6=VG2$d@wEOh6IRC(0 zBPL>Vd>{G|0Zr=@`kyFTw03Zx=$Y($o4kK=O(oQ84>jB`>oHT2^s}<8R@LE_p3GFt z6zMM!8^gQt#L3;+!$v0R2aI+iT3p)5T z=?l@}tHt}FdzQAXS@~#vn)1oXR1=NDW{WFx>9kSng+%W z``5mq`#ihaDKSjC)$#BuyybRdmBq^xRJ&JAQ=tYBv*|YCeTgrEFHPvkYRc zS7#=7z%WJ9Xx}#^t8t0)q^@;*d{@}Ti?LH9ekZpYrF2r8A}qZkDXn^@^t0O6Pf3k@ zdL%~jY1skqzN*$D@h7SDiA2$Cl~D@|H)L(iJw>f@*_CD2$0B+T^cVPBvx!4QVt3vN>{@u=2m~ouX(3akb9TxGc*26D4?KWtUkHe@D z`VV>Xs=MUbFQD+5Z`>;M(AqcP==vjWiBFHpo*Jw!@M*oYHK#At>2MeEVO0?{hUBI- z^%J+aznGXnSLbKe?=GrbUI&?5w>;$_m?~yGlCj@Zf&TnB?1(hgAvE&>2++T7jziV1Keh-R~4GA!2TCA%DrYx9u z4DVdh4D=^6vrG8lED}Qf?Rq#Uq~z>?I+~r_wvCRPxK!avx@1MioW(9u9lOvw5-QS) z$%AF}zsYw<8^y)NgTXmO+G@0dEh!`?SCrl9xIRS~q%ieaL6-;a^1Pg7sam03Ul3Rm z!QjlTT;U2t*u}ml8S>*XS7Ogca{ycDgK{TUa4Y!vl(Y;qP?@01j`7pZ`$o%R7=P=S zOc^Ub?J5&dzDc zc5boF0$_-JoxOU>C^>}m-X@OKs37neSQj<74Wp~0)3Rc~0@LlIbBSaQzTy!tiw;t! zM|{A9McU^2%L6`&v|Qz8Pxr zgSPIpQ8|CgG2`F!z?Ef7OYO?^WcyQHspOA9M8$<+wH(Y88#1}CgO6t0svXI!*6n=g zyL7?0+~{x~vj=(WY+cV}VFBM}&fX0EZZ<&FV%@EY-Y+6%crOb+`gG&^C;GAp_{ms`dH7rO@i{a`d(hQx!b+)QJu@K zzK?A@exq(jM$SZ)$)wl&c%xr;o;hz?ZcdE>t)rSu!``CSyju)ZJr^|rgvmZYX}qQ~ z4sLur!BEn+m2DpU@zK4(7cYh?v+XsBr5C7KT$A}|tsS$?F7S>Yj{2?sgrWQbV@LjB>x3{Bo#43N8 z`gLAQwQIz(&#@+FciM?ezOkd1@Kdu!#g&y_22mcM+-)!VD}!-inkzL>T( z6;Gx&)D{)QZo`v8D@IPfe6DJyLYHgN1#knzoVj143)AZ#SHMj{)id;|qPV-tb%P#>4(YYL)G`msLtf=~FRrk0%!tqWy;xH0lkSX3jYG!8cXm9`G z|KhUuUWSzV4>3yzdnJ{hs6VT`u$#bsOTScN&^zsQZ!=1W`9XSZK(n1BrF15i_)d{} z6VoRP7ilJC^NSLY_Cxp*I9kSX1A_B-yaMnlz8$y*LDHx=rNfJ5us)!>JKRlin}byQ za1--Pz!b0DTR`!i0W{A;!a}C{bQRU_Or-qpiG16|s;R9Gi}wk9V!fRM7wI6guX;n+ zm`vCi@?s=8N1Gg?QB-A@)_W^T=etJqezcH_R03^mfjt^ zH-wEQh+P{fo#b;gzp|Ym@v_}>ei58<#3%=h z0lqGwq=lXSE{i#qbvew`Dl}4ko~=z{eJUzp$f^Z9h|!X+(tm1N*xN{VUYjpmt`}h0 zEoNcY(L$z>U(7mdbD|-2dh!{0*I+|eK`TV-wD_D2_ z$CBiUWSgz`5>Na`1-|-r$KaZ&8-Ah*XiJ*o{uhx^7`guN8C~N-%0D#tAsUvMV#Q91 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 literal 0 HcmV?d00001 diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/gateway.jpg b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/aiit-arm32-board/test/gateway.jpg new file mode 100644 index 0000000000000000000000000000000000000000..031fcbb3683bfb543212e40a40e28d46033fbcac GIT binary patch literal 31144 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 J}G=S@AdVbXQJ`xG>mWjF6|>Csmof*w3* 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 Date: Thu, 23 Jun 2022 16:48:22 +0800 Subject: [PATCH 14/26] Ubiquitous/RT-Thread_Fusion_XiUOS/:change the name from "xidatong" to "xidatong-arm32" --- .../aiit_board/{xidatong => xidatong-arm32}/.config | 8 ++++++++ .../aiit_board/{xidatong => xidatong-arm32}/Kconfig | 0 .../{xidatong => xidatong-arm32}/README.md | 0 .../{xidatong => xidatong-arm32}/SConscript | 0 .../{xidatong => xidatong-arm32}/SConstruct | 0 .../applications/SConscript | 0 .../applications/main.c | 0 .../{xidatong => xidatong-arm32}/board/Kconfig | 0 .../board/MCUX_Config/MCUX_Config.mex | 0 .../board/MCUX_Config/clock_config.c | 0 .../board/MCUX_Config/clock_config.h | 0 .../board/MCUX_Config/pin_mux.c | 0 .../board/MCUX_Config/pin_mux.h | 0 .../board/MIMXRT_QSPIFLASH.FLM | Bin .../{xidatong => xidatong-arm32}/board/SConscript | 0 .../{xidatong => xidatong-arm32}/board/board.c | 0 .../{xidatong => xidatong-arm32}/board/board.h | 0 .../board/linker_scripts/link.icf | 0 .../board/linker_scripts/link.lds | 0 .../board/linker_scripts/link.sct | 0 .../board/ports/LAN8720A.c | 0 .../board/ports/mnt_romfs.c | 0 .../board/ports/romfs.c | 0 .../board/ports/sdcard_port.c | 0 .../board/ports/sdram_port.h | 0 .../{xidatong => xidatong-arm32}/project.uvoptx | 0 .../{xidatong => xidatong-arm32}/project.uvprojx | 0 .../{xidatong => xidatong-arm32}/rtconfig.h | 3 +++ .../{xidatong => xidatong-arm32}/rtconfig.py | 0 .../{xidatong => xidatong-arm32}/template.uvoptx | 0 .../{xidatong => xidatong-arm32}/template.uvprojx | 0 .../test/iperf_test_base_8720A.png | Bin .../{xidatong => xidatong-arm32}/xip/SConscript | 0 .../xip/fsl_flexspi_nor_boot.c | 0 .../xip/fsl_flexspi_nor_boot.h | 0 .../xip/fsl_flexspi_nor_flash.c | 0 .../xip/fsl_flexspi_nor_flash.h | 0 37 files changed, 11 insertions(+) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/.config (98%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/Kconfig (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/README.md (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/SConscript (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/SConstruct (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/applications/SConscript (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/applications/main.c (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/Kconfig (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/MCUX_Config/MCUX_Config.mex (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/MCUX_Config/clock_config.c (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/MCUX_Config/clock_config.h (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/MCUX_Config/pin_mux.c (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/MCUX_Config/pin_mux.h (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/MIMXRT_QSPIFLASH.FLM (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/SConscript (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/board.c (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/board.h (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/linker_scripts/link.icf (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/linker_scripts/link.lds (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/linker_scripts/link.sct (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/ports/LAN8720A.c (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/ports/mnt_romfs.c (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/ports/romfs.c (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/ports/sdcard_port.c (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/board/ports/sdram_port.h (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/project.uvoptx (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/project.uvprojx (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/rtconfig.h (99%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/rtconfig.py (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/template.uvoptx (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/template.uvprojx (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/test/iperf_test_base_8720A.png (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/xip/SConscript (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/xip/fsl_flexspi_nor_boot.c (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/xip/fsl_flexspi_nor_boot.h (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/xip/fsl_flexspi_nor_flash.c (100%) rename Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/{xidatong => xidatong-arm32}/xip/fsl_flexspi_nor_flash.h (100%) diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/.config b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/.config similarity index 98% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/.config rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/.config index a10457d8d..6227732d6 100644 --- a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/.config +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/.config @@ -376,6 +376,8 @@ CONFIG_PHY_RESET_PIN=3 # # CONFIG_PKG_USING_RW007 is not set # CONFIG_DRV_USING_OV2640 is not set +# CONFIG_DRV_USING_HS300X is not set +# CONFIG_DRV_USING_SX1278 is not set # # APP_Framework @@ -436,6 +438,7 @@ CONFIG_MAIN_KTASK_STACK_SIZE=1024 # # CONFIG_APPLICATION_SENSOR is not set # CONFIG_USING_EMBEDDED_DATABASE_APP is not set +# CONFIG_APP_USING_WEBNET is not set # # lib @@ -445,4 +448,9 @@ CONFIG_APP_SELECT_NEWLIB=y # CONFIG_LIB_USING_CJSON is not set # CONFIG_LIB_USING_QUEUE is not set # CONFIG_LIB_LV is not set + +# +# LVGL configuration +# +# CONFIG_LV_CONF_MINIMAL is not set # CONFIG_USING_EMBEDDED_DATABASE is not set diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/Kconfig b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/Kconfig similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/Kconfig rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/Kconfig diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/README.md b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/README.md similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/README.md rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/README.md diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/SConscript b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/SConscript similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/SConscript rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/SConscript diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/SConstruct b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/SConstruct similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/SConstruct rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/SConstruct diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/applications/SConscript b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/applications/SConscript similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/applications/SConscript rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/applications/SConscript diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/applications/main.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/applications/main.c similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/applications/main.c rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/applications/main.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/Kconfig b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/Kconfig similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/Kconfig rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/Kconfig diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MCUX_Config/MCUX_Config.mex b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MCUX_Config/MCUX_Config.mex similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MCUX_Config/MCUX_Config.mex rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MCUX_Config/MCUX_Config.mex diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MCUX_Config/clock_config.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MCUX_Config/clock_config.c similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MCUX_Config/clock_config.c rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MCUX_Config/clock_config.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MCUX_Config/clock_config.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MCUX_Config/clock_config.h similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MCUX_Config/clock_config.h rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MCUX_Config/clock_config.h diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MCUX_Config/pin_mux.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MCUX_Config/pin_mux.c similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MCUX_Config/pin_mux.c rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MCUX_Config/pin_mux.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MCUX_Config/pin_mux.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MCUX_Config/pin_mux.h similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MCUX_Config/pin_mux.h rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MCUX_Config/pin_mux.h diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MIMXRT_QSPIFLASH.FLM b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MIMXRT_QSPIFLASH.FLM similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/MIMXRT_QSPIFLASH.FLM rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/MIMXRT_QSPIFLASH.FLM diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/SConscript b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/SConscript similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/SConscript rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/SConscript diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/board.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/board.c similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/board.c rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/board.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/board.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/board.h similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/board.h rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/board.h diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/linker_scripts/link.icf b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/linker_scripts/link.icf similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/linker_scripts/link.icf rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/linker_scripts/link.icf diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/linker_scripts/link.lds b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/linker_scripts/link.lds similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/linker_scripts/link.lds rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/linker_scripts/link.lds diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/linker_scripts/link.sct b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/linker_scripts/link.sct similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/linker_scripts/link.sct rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/linker_scripts/link.sct diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/ports/LAN8720A.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/ports/LAN8720A.c similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/ports/LAN8720A.c rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/ports/LAN8720A.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/ports/mnt_romfs.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/ports/mnt_romfs.c similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/ports/mnt_romfs.c rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/ports/mnt_romfs.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/ports/romfs.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/ports/romfs.c similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/ports/romfs.c rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/ports/romfs.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/ports/sdcard_port.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/ports/sdcard_port.c similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/ports/sdcard_port.c rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/ports/sdcard_port.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/ports/sdram_port.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/ports/sdram_port.h similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/board/ports/sdram_port.h rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/ports/sdram_port.h diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/project.uvoptx b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/project.uvoptx similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/project.uvoptx rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/project.uvoptx diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/project.uvprojx b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/project.uvprojx similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/project.uvprojx rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/project.uvprojx diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/rtconfig.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/rtconfig.h similarity index 99% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/rtconfig.h rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/rtconfig.h index e8716b183..111d72f3d 100644 --- a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/rtconfig.h +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/rtconfig.h @@ -281,4 +281,7 @@ #define APP_SELECT_NEWLIB +/* LVGL configuration */ + + #endif diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/rtconfig.py b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/rtconfig.py similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/rtconfig.py rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/rtconfig.py diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/template.uvoptx b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/template.uvoptx similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/template.uvoptx rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/template.uvoptx diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/template.uvprojx b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/template.uvprojx similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/template.uvprojx rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/template.uvprojx diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/test/iperf_test_base_8720A.png b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test/iperf_test_base_8720A.png similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/test/iperf_test_base_8720A.png rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test/iperf_test_base_8720A.png diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/xip/SConscript b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/xip/SConscript similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/xip/SConscript rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/xip/SConscript diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/xip/fsl_flexspi_nor_boot.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/xip/fsl_flexspi_nor_boot.c similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/xip/fsl_flexspi_nor_boot.c rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/xip/fsl_flexspi_nor_boot.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/xip/fsl_flexspi_nor_boot.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/xip/fsl_flexspi_nor_boot.h similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/xip/fsl_flexspi_nor_boot.h rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/xip/fsl_flexspi_nor_boot.h diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/xip/fsl_flexspi_nor_flash.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/xip/fsl_flexspi_nor_flash.c similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/xip/fsl_flexspi_nor_flash.c rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/xip/fsl_flexspi_nor_flash.c diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/xip/fsl_flexspi_nor_flash.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/xip/fsl_flexspi_nor_flash.h similarity index 100% rename from Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong/xip/fsl_flexspi_nor_flash.h rename to Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/xip/fsl_flexspi_nor_flash.h From 3165f2f565b66c81cc11b1018ab303b730727b17 Mon Sep 17 00:00:00 2001 From: chunyexixiaoyu <834670833@qq.com> Date: Thu, 23 Jun 2022 16:57:06 +0800 Subject: [PATCH 15/26] APP_Framework/Applications/: solve the bug that add the submodule. --- APP_Framework/Applications/webnet/WebNet_XiUOS | 1 + 1 file changed, 1 insertion(+) create mode 160000 APP_Framework/Applications/webnet/WebNet_XiUOS diff --git a/APP_Framework/Applications/webnet/WebNet_XiUOS b/APP_Framework/Applications/webnet/WebNet_XiUOS new file mode 160000 index 000000000..d7ac9f271 --- /dev/null +++ b/APP_Framework/Applications/webnet/WebNet_XiUOS @@ -0,0 +1 @@ +Subproject commit d7ac9f271158d1f8ed1ebaddcb8c2ce4b0927d19 From 6d77165a86fb9634087a155578f460b068853d06 Mon Sep 17 00:00:00 2001 From: zhujiarui666 Date: Mon, 27 Jun 2022 16:04:58 +0800 Subject: [PATCH 16/26] =?UTF-8?q?xiuos\APP=5FFramework\Framework\connectio?= =?UTF-8?q?n\4g\ec200t\ec200t.c=EF=BC=9A=201.=E9=87=8D=E6=9E=84Ec200tIoctl?= =?UTF-8?q?=E5=87=BD=E6=95=B0=202.=E9=87=8D=E6=9E=84Ec200tPowerSet?= =?UTF-8?q?=E5=87=BD=E6=95=B0=EF=BC=8C=E8=AF=A5=E5=87=BD=E6=95=B0=E5=9C=A8?= =?UTF-8?q?=E7=9F=BD=E8=BE=BE=E9=80=9A=E4=B8=AD=E6=97=A0=E7=94=A8=EF=BC=88?= =?UTF-8?q?PWRKEY=E7=A1=AC=E4=BB=B6=E5=B7=B2=E7=BB=8F=E6=8B=89=E4=BD=8E?= =?UTF-8?q?=EF=BC=8C=E4=B8=8A=E7=94=B5=E8=87=AA=E5=8A=A8=E5=BC=80=E6=9C=BA?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Framework/connection/4g/ec200t/ec200t.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/APP_Framework/Framework/connection/4g/ec200t/ec200t.c b/APP_Framework/Framework/connection/4g/ec200t/ec200t.c index 44ce40d63..296a193f5 100644 --- a/APP_Framework/Framework/connection/4g/ec200t/ec200t.c +++ b/APP_Framework/Framework/connection/4g/ec200t/ec200t.c @@ -40,10 +40,12 @@ #ifdef ADD_NUTTX_FETURES static void Ec200tPowerSet(void){ return; } -#else -static void Ec200tPowerSet(void) -{ -#ifdef ADAPTER_EC200T_USING_PWRKEY +#else + #ifdef ADD_RTTHREAD_FETURES + static void Ec200tPowerSet(void){ return; } + #else + static void Ec200tPowerSet(void) + { int pin_fd; pin_fd = PrivOpen(ADAPTER_EC200T_PIN_DRIVER, O_RDWR); if (pin_fd < 0) { @@ -74,8 +76,8 @@ static void Ec200tPowerSet(void) PrivClose(pin_fd); PrivTaskDelay(10000); -#endif -} + } + #endif #endif static int Ec200tOpen(struct Adapter *adapter) @@ -150,6 +152,9 @@ out: #ifdef ADD_NUTTX_FETURES static int Ec200tIoctl(struct Adapter *adapter, int cmd, void *args){ return 0;} #else +#ifdef ADD_RTTHREAD_FETURES +static int Ec200tIoctl(struct Adapter *adapter, int cmd, void *args){ return 0;} +#else static int Ec200tIoctl(struct Adapter *adapter, int cmd, void *args) { if (OPE_INT != cmd) { @@ -177,12 +182,14 @@ static int Ec200tIoctl(struct Adapter *adapter, int cmd, void *args) ioctl_cfg.ioctl_driver_type = SERIAL_TYPE; ioctl_cfg.args = &serial_cfg; PrivIoctl(adapter->fd, OPE_INT, &ioctl_cfg); + Ec200tPowerSet(); return 0; } #endif +#endif static int Ec200tConnect(struct Adapter *adapter, enum NetRoleType net_role, const char *ip, const char *port, enum IpType ip_type) { From 45ba8d84ee6f5ec9d7c2d921f01ca8b7c999dcad Mon Sep 17 00:00:00 2001 From: zhujiarui666 Date: Mon, 27 Jun 2022 16:06:59 +0800 Subject: [PATCH 17/26] =?UTF-8?q?xiuos\APP=5FFramework\Framework\connectio?= =?UTF-8?q?n\4g\ec200t\Kconfig=EF=BC=9A=201.=E4=BF=AE=E6=94=B9Kconfig?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Framework/connection/4g/ec200t/Kconfig | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/APP_Framework/Framework/connection/4g/ec200t/Kconfig b/APP_Framework/Framework/connection/4g/ec200t/Kconfig index a4b43b7ef..404fb381f 100644 --- a/APP_Framework/Framework/connection/4g/ec200t/Kconfig +++ b/APP_Framework/Framework/connection/4g/ec200t/Kconfig @@ -39,13 +39,31 @@ if ADD_NUTTX_FETURES endif if ADD_RTTHREAD_FETURES - config ADAPTER_EC200T_DRIVER - string "EC200T device uart driver path" - default "/dev/uart2" - config ADAPTER_EC200T_PIN_DRIVER - string "EC200T device pin driver path" - default "/dev/pin" config ADAPTER_EC200T_PWRKEY int "EC200T PWRKEY pin number" - default "97" + default "97" + config ADAPTER_EC200T_PIN_DRIVER + string "EC200T device pin driver path" + default "/dev/pin_dev" + + config ADAPTER_EC200T_DRIVER_EXTUART + bool "Using extra uart to support 4G" + default n + + config ADAPTER_EC200T_DRIVER + string "EC200T device uart driver path" + default "/dev/usart8" + depends on !ADAPTER_EC200T_DRIVER_EXTUART + + if ADAPTER_EC200T_DRIVER_EXTUART + config ADAPTER_EC200T_DRIVER + string "EC200T device extra uart driver path" + default "/dev/extuart_dev5" + + config ADAPTER_EC200T_DRIVER_EXT_PORT + int "if EC200T device using extuart, choose port" + default "5" + endif + + endif From 443c0a414d841de660b62d6878830ac7bb307aea Mon Sep 17 00:00:00 2001 From: zhujiarui666 Date: Mon, 27 Jun 2022 16:10:42 +0800 Subject: [PATCH 18/26] =?UTF-8?q?xiuos\APP=5FFramework\Framework\connectio?= =?UTF-8?q?n\4g\adapter=5F4g.c=EF=BC=9A=201.=E6=B7=BB=E5=8A=A0msh=E6=8C=87?= =?UTF-8?q?=E4=BB=A4=EF=BC=8C=E8=8B=A5=E5=AE=9E=E9=99=85=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=AD=A4=E5=87=BD=E6=95=B0=E4=B8=AD=E7=9A=84=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8ip=E5=92=8C=E7=AB=AF=E5=8F=A3=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APP_Framework/Framework/connection/4g/adapter_4g.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/APP_Framework/Framework/connection/4g/adapter_4g.c b/APP_Framework/Framework/connection/4g/adapter_4g.c index 80b76b682..a0a96cd62 100644 --- a/APP_Framework/Framework/connection/4g/adapter_4g.c +++ b/APP_Framework/Framework/connection/4g/adapter_4g.c @@ -111,3 +111,6 @@ int Adapter4GTest(void) return 0; } // SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_PARAM_NUM(0)|SHELL_CMD_DISABLE_RETURN, Adapter4GTest, Adapter4GTest, show adapter 4G information); +#ifdef ADD_RTTHREAD_FETURES +MSH_CMD_EXPORT(Adapter4GTestRTThread,a 4G adpter sample); +#endif \ No newline at end of file From f621522551b0cb5d6bc07cfff91c1a6f22005a59 Mon Sep 17 00:00:00 2001 From: zhujiarui666 Date: Mon, 27 Jun 2022 16:16:25 +0800 Subject: [PATCH 19/26] =?UTF-8?q?xiuos\APP=5FFramework\Framework\connectio?= =?UTF-8?q?n\wifi\esp07s=5Fwifi\Kconfig=EF=BC=9A=201.=E4=BF=AE=E6=94=B9Kco?= =?UTF-8?q?nfig=E6=96=87=E4=BB=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=94=AF?= =?UTF-8?q?=E6=8C=81rt-thread=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connection/wifi/esp07s_wifi/Kconfig | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/APP_Framework/Framework/connection/wifi/esp07s_wifi/Kconfig b/APP_Framework/Framework/connection/wifi/esp07s_wifi/Kconfig index 4a28b44a7..15fdda3f5 100755 --- a/APP_Framework/Framework/connection/wifi/esp07s_wifi/Kconfig +++ b/APP_Framework/Framework/connection/wifi/esp07s_wifi/Kconfig @@ -46,5 +46,25 @@ if ADD_NUTTX_FETURES endif if ADD_RTTHREAD_FETURES + if ADD_RTTHREAD_FETURES + config ADAPTER_ESP07S_DRIVER_EXTUART + bool "Using extra uart to support wifi" + default n + + config ADAPTER_ESP07S_DRIVER + string "ESP07S device uart driver path" + default "/dev/uart2" + depends on !ADAPTER_ESP07S_DRIVER_EXTUART + + if ADAPTER_ESP07S_DRIVER_EXTUART_RT + config ADAPTER_ESP07S_DRIVER + string "ESP07S device extra uart driver path" + default "/dev/extuart_dev6_rt" + + config ADAPTER_ESP07S_DRIVER_EXT_PORT + int "if ESP07S device using extuart, choose port" + default "6" + endif +endif endif From 109de8911b71b1ea5cd0bafd02177bb9363b08a2 Mon Sep 17 00:00:00 2001 From: zhujiarui666 Date: Mon, 27 Jun 2022 16:17:48 +0800 Subject: [PATCH 20/26] =?UTF-8?q?xiuos\xiuos\xiuos\APP=5FFramework\Framewo?= =?UTF-8?q?rk\connection\wifi\esp07s=5Fwifi\SConscript=EF=BC=9A=201.?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0SConscript=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Framework/connection/wifi/esp07s_wifi/SConscript | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 APP_Framework/Framework/connection/wifi/esp07s_wifi/SConscript diff --git a/APP_Framework/Framework/connection/wifi/esp07s_wifi/SConscript b/APP_Framework/Framework/connection/wifi/esp07s_wifi/SConscript new file mode 100644 index 000000000..9fcef2a1a --- /dev/null +++ b/APP_Framework/Framework/connection/wifi/esp07s_wifi/SConscript @@ -0,0 +1,12 @@ +from building import * +import os + +cwd = GetCurrentDir() +src = [] +if GetDepend(['ADAPTER_ESP07S_WIFI']): + src += ['esp07s_wifi.c'] + +group = DefineGroup('connection wifi esp07s', src, depend = [], CPPPATH = [cwd]) + + +Return('group') \ No newline at end of file From c2d7562f4636c6bcede69c5af305f528f1b5388d Mon Sep 17 00:00:00 2001 From: zhujiarui666 Date: Mon, 27 Jun 2022 16:23:38 +0800 Subject: [PATCH 21/26] =?UTF-8?q?xiuos\APP=5FFramework\Framework\connectio?= =?UTF-8?q?n\wifi\adapter=5Fwifi.c=EF=BC=9A=201.=E6=B7=BB=E5=8A=A0msh?= =?UTF-8?q?=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Framework/connection/wifi/adapter_wifi.c | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/APP_Framework/Framework/connection/wifi/adapter_wifi.c b/APP_Framework/Framework/connection/wifi/adapter_wifi.c index fe5461d71..a42942ac6 100644 --- a/APP_Framework/Framework/connection/wifi/adapter_wifi.c +++ b/APP_Framework/Framework/connection/wifi/adapter_wifi.c @@ -199,6 +199,9 @@ int wifiopen(void) #ifdef ADD_XIZI_FETURES SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_PARAM_NUM(0)|SHELL_CMD_DISABLE_RETURN, wifiopen, wifiopen, open adapter wifi ); #endif +#ifdef ADD_RTTHREAD_FETURES +MSH_CMD_EXPORT(wifiopen,a wifi adpter sample); +#endif int wificlose(void) { struct Adapter* adapter = AdapterDeviceFindByName(ADAPTER_WIFI_NAME); @@ -207,6 +210,9 @@ int wificlose(void) #ifdef ADD_XIZI_FETURES SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC)|SHELL_CMD_PARAM_NUM(0)|SHELL_CMD_DISABLE_RETURN, wificlose, wificlose, close adapter wifi ); #endif +#ifdef ADD_RTTHREAD_FETURES +MSH_CMD_EXPORT(wificlose,a wifi adpter sample); +#endif int wifisetup(int argc, char *argv[]) { struct Adapter* adapter = AdapterDeviceFindByName(ADAPTER_WIFI_NAME); @@ -222,6 +228,9 @@ int wifisetup(int argc, char *argv[]) #ifdef ADD_XIZI_FETURES SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN)|SHELL_CMD_PARAM_NUM(3)|SHELL_CMD_DISABLE_RETURN, wifisetup, wifisetup, setup adapter wifi ); #endif +#ifdef ADD_RTTHREAD_FETURES +MSH_CMD_EXPORT(wifisetup,a wifi adpter sample:wifisetup ); +#endif int wifiaddrset(int argc, char *argv[]) { struct Adapter* adapter = AdapterDeviceFindByName(ADAPTER_WIFI_NAME); @@ -236,6 +245,9 @@ int wifiaddrset(int argc, char *argv[]) #ifdef ADD_XIZI_FETURES SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN)|SHELL_CMD_PARAM_NUM(4)|SHELL_CMD_DISABLE_RETURN, wifiaddrset, wifiaddrset, addrset adapter wifi); #endif +#ifdef ADD_RTTHREAD_FETURES +MSH_CMD_EXPORT(wifiaddrset,a wifi adpter sample:wifiaddrset ); +#endif int wifiping(int argc, char *argv[]) { struct Adapter* adapter = AdapterDeviceFindByName(ADAPTER_WIFI_NAME); @@ -245,6 +257,9 @@ int wifiping(int argc, char *argv[]) #ifdef ADD_XIZI_FETURES SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN)|SHELL_CMD_PARAM_NUM(3), wifiping, wifiping, wifiping adapter ); #endif +#ifdef ADD_RTTHREAD_FETURES +MSH_CMD_EXPORT(wifiping,a wifi adpter sample:wifiping ); +#endif int wificonnect(int argc, char *argv[]) { struct Adapter* adapter = AdapterDeviceFindByName(ADAPTER_WIFI_NAME); @@ -266,6 +281,9 @@ int wificonnect(int argc, char *argv[]) #ifdef ADD_XIZI_FETURES SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN)|SHELL_CMD_PARAM_NUM(4)|SHELL_CMD_DISABLE_RETURN, wificonnect, wificonnect, wificonnect adapter); #endif +#ifdef ADD_RTTHREAD_FETURES +MSH_CMD_EXPORT(wificonnect,a wifi adpter sample:wificonnect ); +#endif int wifisend(int argc, char *argv[]) { struct Adapter* adapter = AdapterDeviceFindByName(ADAPTER_WIFI_NAME); @@ -281,6 +299,9 @@ int wifisend(int argc, char *argv[]) #ifdef ADD_XIZI_FETURES SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN)|SHELL_CMD_PARAM_NUM(3)|SHELL_CMD_DISABLE_RETURN, wifisend, wifisend, wifisend adapter wifi information); #endif +#ifdef ADD_RTTHREAD_FETURES +MSH_CMD_EXPORT(wifisend,a wifi adpter sample:wifisend ); +#endif int wifirecv(int argc, char *argv[]) { struct Adapter* adapter = AdapterDeviceFindByName(ADAPTER_WIFI_NAME); @@ -295,6 +316,9 @@ int wifirecv(int argc, char *argv[]) #ifdef ADD_XIZI_FETURES SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN)|SHELL_CMD_PARAM_NUM(3)|SHELL_CMD_DISABLE_RETURN, wifirecv, wifirecv, wifirecv adapter wifi information); #endif +#ifdef ADD_RTTHREAD_FETURES +MSH_CMD_EXPORT(wifirecv,a wifi adpter sample:wifirecv ); +#endif #ifdef ADD_NUTTX_FETURES From 9f0a316c6db3c80588905d2d90a340158b4e2feb Mon Sep 17 00:00:00 2001 From: zhujiarui666 Date: Mon, 27 Jun 2022 16:27:12 +0800 Subject: [PATCH 22/26] =?UTF-8?q?xiuos\Ubiquitous\RT-Thread=5FFusion=5FXiU?= =?UTF-8?q?OS\aiit=5Fboard\xidatong-arm32\applications\main.c=EF=BC=9A=201?= =?UTF-8?q?.=E6=B7=BB=E5=8A=A0usb=E6=B5=8B=E8=AF=95=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xidatong-arm32/applications/main.c | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/applications/main.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/applications/main.c index dc9f23b9c..4c54c8355 100644 --- a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/applications/main.c +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/applications/main.c @@ -48,3 +48,68 @@ static void sdram_test2(void) } MSH_CMD_EXPORT(sdram_test2, sdram test2); #endif + +#ifdef BSP_USB1_HOST +#include +static char test_data[120], buffer[120]; +#define TEST_FN "/testusb.c" +void readwrite(const char* filename) +{ + int fd; + int index, length; + + fd = open(TEST_FN, O_WRONLY | O_CREAT | O_TRUNC, 0); + if (fd < 0) + { + rt_kprintf("open file for write failed\n"); + return; + } + + for (index = 0; index < sizeof(test_data); index ++) + { + test_data[index] = index + 27; + } + + length = write(fd, test_data, sizeof(test_data)); + if (length != sizeof(test_data)) + { + rt_kprintf("write data failed\n"); + close(fd); + return; + } + + close(fd); + + fd = open(TEST_FN, O_RDONLY, 0); + if (fd < 0) + { + rt_kprintf("check: open file for read failed\n"); + return; + } + + length = read(fd, buffer, sizeof(buffer)); + if (length != sizeof(buffer)) + { + rt_kprintf("check: read file failed\n"); + close(fd); + return; + } + + for (index = 0; index < sizeof(test_data); index ++) + { + if (test_data[index] != buffer[index]) + { + rt_kprintf("check: check data failed at %d\n", index); + close(fd); + return; + } + } + + rt_kprintf("usb host read/write udisk successful\r\n"); + + close(fd); +} + +MSH_CMD_EXPORT(readwrite, usb host read write test); + +#endif \ No newline at end of file From ee79cd09275fb3eb5d17afc68d935cdfc8cf1e1f Mon Sep 17 00:00:00 2001 From: zhujiarui666 Date: Mon, 27 Jun 2022 16:30:04 +0800 Subject: [PATCH 23/26] =?UTF-8?q?xiuos\Ubiquitous\RT-Thread=5FFusion=5FXiU?= =?UTF-8?q?OS\aiit=5Fboard\xidatong-arm32\board\Kconfig=EF=BC=9A=201.?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0USBHost=E7=9B=B8=E5=85=B3=E7=9A=84=E5=AE=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aiit_board/xidatong-arm32/board/Kconfig | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/Kconfig b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/Kconfig index 5eee78ea2..c06392967 100644 --- a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/Kconfig +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/Kconfig @@ -221,6 +221,14 @@ menu "Onboard Peripheral Drivers" select RT_USING_DFS select RT_USING_DFS_ELMFAT default n + + config BSP_USB0_HOST + bool "Enable USB0 Host" + default n + + config BSP_USB1_HOST + bool "Enable USB1 Host" + default n menuconfig BSP_USING_ETH bool "Enable Ethernet" From 2c9897e10de8ed64361c6d96bcde1f9c30db9545 Mon Sep 17 00:00:00 2001 From: zhujiarui666 Date: Mon, 27 Jun 2022 16:47:04 +0800 Subject: [PATCH 24/26] =?UTF-8?q?xiuos\Ubiquitous\RT-Thread=5FFusion=5FXiU?= =?UTF-8?q?OS\aiit=5Fboard\xidatong-arm32\board\usb=EF=BC=9A=201.usb=20rt-?= =?UTF-8?q?thread=E7=BC=BA=E5=A4=B1=E6=94=AF=E6=8C=81=E6=96=87=E4=BB=B6=20?= =?UTF-8?q?2.SConscript=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xidatong-arm32/board/SConscript | 2 + .../xidatong-arm32/board/usb/drv_usbh.c | 732 ++++++++++++++++++ .../xidatong-arm32/board/usb/drv_usbh.h | 22 + 3 files changed, 756 insertions(+) create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/usb/drv_usbh.c create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/usb/drv_usbh.h diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/SConscript b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/SConscript index 805811108..a6ed1d162 100644 --- a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/SConscript +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/SConscript @@ -18,6 +18,8 @@ if GetDepend('BSP_USING_SDCARD'): if GetDepend(['RT_USING_DFS_ROMFS']): src += ['ports/romfs.c'] src += ['ports/mnt_romfs.c'] +if GetDepend(['RT_USING_USB_HOST']) + src += ['usb/drv_usbh.c'] group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES) Return('group') diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/usb/drv_usbh.c b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/usb/drv_usbh.c new file mode 100644 index 000000000..bb06100d5 --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/usb/drv_usbh.c @@ -0,0 +1,732 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2017-10-30 ZYH the first version + * 2019-12-19 tyustli port to stm32 series + * 2021-01-19 Leslie Lee port to imxrt series + */ +#include + +#if defined(BSP_USB0_HOST) || defined(BSP_USB1_HOST) +#include "drv_usbh.h" +#include +#include +#include +#include +#include +#include +#include + + +/* USB PHY configuration */ +#ifndef BOARD_USB_PHY_D_CAL +#define BOARD_USB_PHY_D_CAL (0x0CU) +#endif +#ifndef BOARD_USB_PHY_TXCAL45DP +#define BOARD_USB_PHY_TXCAL45DP (0x06U) +#endif +#ifndef BOARD_USB_PHY_TXCAL45DM +#define BOARD_USB_PHY_TXCAL45DM (0x06U) +#endif + +#define USB_HOST_INTERRUPT_PRIORITY 3 + +enum +{ +#ifdef BSP_USB0_HOST + USBH0_INDEX, +#endif +#ifdef BSP_USB1_HOST + USBH1_INDEX, +#endif +}; + +struct imxrt_usb_host_pipe +{ + usb_host_pipe_handle pipe_handle; + struct rt_completion urb_completion; + usb_status_t transfer_status; +}; + +struct imxrt_usb_host +{ + struct uhcd uhcd; + usb_host_handle host_handle; + usb_device_handle device_handle; + struct imxrt_usb_host_pipe pipes[16]; + volatile rt_bool_t connect_status; + char *name; +}; + +static struct imxrt_usb_host imxrt_usb_host_obj[] = +{ +#ifdef BSP_USB0_HOST + { + .connect_status = RT_FALSE, + .name = "usbh0" + }, +#endif +#ifdef BSP_USB1_HOST + { + .connect_status = RT_FALSE, + .name = "usbh1" + }, +#endif +}; + +static void _imxrt_usb_host_send_callback(void *param, usb_host_transfer_t *transfer, usb_status_t status) +{ + struct imxrt_usb_host_pipe *pipe = (struct imxrt_usb_host_pipe *)param; + pipe->transfer_status = status; + rt_completion_done(&pipe->urb_completion); +} + + +/*! + * @brief Initializes USB specific setting that was not set by the Clocks tool. + */ +static void USB_HostClockInit(usb_controller_index_t controller_id) +{ + usb_phy_config_struct_t phyConfig = { + BOARD_USB_PHY_D_CAL, BOARD_USB_PHY_TXCAL45DP, BOARD_USB_PHY_TXCAL45DM, + }; + uint32_t notUsed = 0; + + if (controller_id == kUSB_ControllerEhci0) + { + CLOCK_EnableUsbhs0PhyPllClock(kCLOCK_Usbphy480M, 480000000U); + CLOCK_EnableUsbhs0Clock(kCLOCK_Usb480M, 480000000U); + } + else + { + CLOCK_EnableUsbhs1PhyPllClock(kCLOCK_Usbphy480M, 480000000U); + CLOCK_EnableUsbhs1Clock(kCLOCK_Usb480M, 480000000U); + } + + USB_EhciPhyInit(controller_id, 24000000U, &phyConfig); +} + +/*! + * @brief Enables interrupt service routines for device. + */ +void USB_HostIsrEnable(usb_controller_index_t controller_id) +{ + uint8_t irqNumber; +#if ((defined USB_HOST_CONFIG_EHCI) && (USB_HOST_CONFIG_EHCI > 0U)) + IRQn_Type usbHOSTEhciIrq[] = USBHS_IRQS; + irqNumber = usbHOSTEhciIrq[controller_id - kUSB_ControllerEhci0]; +#endif +/* Install isr, set priority, and enable IRQ. */ +#if defined(__GIC_PRIO_BITS) + GIC_SetPriority((IRQn_Type)irqNumber, USB_HOST_INTERRUPT_PRIORITY); +#else + NVIC_SetPriority((IRQn_Type)irqNumber, USB_HOST_INTERRUPT_PRIORITY); +#endif + EnableIRQ((IRQn_Type)irqNumber); +} + +#ifdef BSP_USB0_HOST +void USB_OTG1_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + USB_HostEhciIsrFunction(imxrt_usb_host_obj[USBH0_INDEX].host_handle); + /* leave interrupt */ + rt_interrupt_leave(); +} + +static rt_err_t _ehci0_reset_port(rt_uint8_t port) +{ + // No reset port function available + return RT_EOK; +} + +static uint8_t _ehci0_pipe_buf[64]; +static uint8_t _ehci0_pipe_idx; + +static int _ehci0_pipe_xfer(upipe_t pipe, rt_uint8_t token, void *buffer, int nbytes, int timeouts) +{ + int timeout = timeouts; + + if (!imxrt_usb_host_obj[USBH0_INDEX].connect_status) + { + return -1; + } + usb_host_transfer_t *transfer; + if (imxrt_usb_host_obj[USBH0_INDEX].pipes[pipe->pipe_index].pipe_handle == NULL) + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("error operation on null pipe\n")); + return -1; + } + if (USB_HostMallocTransfer(imxrt_usb_host_obj[USBH0_INDEX].host_handle, &transfer) != kStatus_USB_Success) + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("error to get transfer\n")); + return -1; + } + transfer->transferBuffer = buffer; + transfer->transferLength = nbytes; + transfer->transferSofar = 0; + transfer->callbackFn = _imxrt_usb_host_send_callback; + transfer->callbackParam = &(imxrt_usb_host_obj[USBH0_INDEX].pipes[pipe->pipe_index]); + transfer->direction = (pipe->ep.bEndpointAddress & USB_DIR_IN) ? USB_IN : USB_OUT; + if (pipe->ep.bmAttributes == USB_ENDPOINT_CONTROL) + { + if (token == USBH_PID_SETUP) + { + struct urequest *setup = (struct urequest *)buffer; + transfer->setupStatus = 0; + transfer->setupPacket->bmRequestType = setup->request_type; + transfer->setupPacket->bRequest = setup->bRequest; + transfer->setupPacket->wIndex = setup->wIndex; + transfer->setupPacket->wLength = setup->wLength; + transfer->setupPacket->wValue = setup->wValue; + transfer->transferBuffer = RT_NULL; + transfer->transferLength = 0; + transfer->next = RT_NULL; + if ((transfer->setupPacket->bmRequestType & USB_REQUEST_TYPE_DIR_MASK) == USB_REQUEST_TYPE_DIR_IN) + { + transfer->direction = USB_IN; + transfer->transferBuffer = _ehci0_pipe_buf; + transfer->transferLength = setup->wLength; + _ehci0_pipe_idx = 0; + } + else + { + transfer->direction = USB_OUT; + } + } + else + { + rt_memcpy(buffer, _ehci0_pipe_buf + _ehci0_pipe_idx, nbytes); + imxrt_usb_host_obj[USBH0_INDEX].pipes[pipe->pipe_index].transfer_status = kStatus_USB_Success; + transfer->transferSofar = nbytes; + _ehci0_pipe_idx += nbytes; + if (_ehci0_pipe_idx >= 64) + { + _ehci0_pipe_idx = 0; + } + goto _ehci0_pipe_xfer_finish; + } + + } + rt_completion_init(&(imxrt_usb_host_obj[USBH0_INDEX].pipes[pipe->pipe_index].urb_completion)); + if (USB_HostEhciWritePipe(((usb_host_instance_t *)imxrt_usb_host_obj[USBH0_INDEX].host_handle)->controllerHandle, imxrt_usb_host_obj[USBH0_INDEX].pipes[pipe->pipe_index].pipe_handle, transfer) != kStatus_USB_Success) + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("usb host failed to send\n")); + (void)USB_HostFreeTransfer(imxrt_usb_host_obj[USBH0_INDEX].host_handle, transfer); + return -1; + } + if (-RT_ETIMEOUT == rt_completion_wait(&(imxrt_usb_host_obj[USBH0_INDEX].pipes[pipe->pipe_index].urb_completion), RT_WAITING_FOREVER)) + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("usb transfer timeout\n")); + (void)USB_HostFreeTransfer(imxrt_usb_host_obj[USBH0_INDEX].host_handle, transfer); + return -1; + } + _ehci0_pipe_xfer_finish: + switch (imxrt_usb_host_obj[USBH0_INDEX].pipes[pipe->pipe_index].transfer_status) + { + case kStatus_USB_Success: + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("ok\n")); + pipe->status = UPIPE_STATUS_OK; + if (pipe->callback != RT_NULL) + { + pipe->callback(pipe); + } + size_t size = transfer->transferSofar; + (void)USB_HostFreeTransfer(imxrt_usb_host_obj[USBH0_INDEX].host_handle, transfer); + if (pipe->ep.bEndpointAddress & 0x80) + { + return size; + } + else if (pipe->ep.bEndpointAddress & 0x00) + { + return size; + } + return nbytes; + break; + } + case kStatus_USB_TransferStall: + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("stall\n")); + pipe->status = UPIPE_STATUS_STALL; + if (pipe->callback != RT_NULL) + { + pipe->callback(pipe); + } + (void)USB_HostFreeTransfer(imxrt_usb_host_obj[USBH0_INDEX].host_handle, transfer); + return -1; + break; + } + case kStatus_USB_TransferFailed: + default: + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("error\n")); + pipe->status = UPIPE_STATUS_ERROR; + if (pipe->callback != RT_NULL) + { + pipe->callback(pipe); + } + (void)USB_HostFreeTransfer(imxrt_usb_host_obj[USBH0_INDEX].host_handle, transfer); + return -1; + break; + } + } +} + +static rt_uint16_t _ehci0_pipe_index = 0; +static rt_uint8_t _ehci0_get_free_pipe_index(void) +{ + rt_uint8_t idx; + for (idx = 1; idx < 16; idx++) + { + if (!(_ehci0_pipe_index & (0x01 << idx))) + { + _ehci0_pipe_index |= (0x01 << idx); + return idx; + } + } + return 0xff; +} + +static void _ehci0_free_pipe_index(rt_uint8_t index) +{ + _ehci0_pipe_index &= ~(0x01 << index); +} + +static rt_err_t _ehci0_open_pipe(upipe_t pipe) +{ + pipe->pipe_index = _ehci0_get_free_pipe_index(); + if (pipe->pipe_index == 0xFF) + { + return -RT_ERROR; + } + usb_host_pipe_init_t pipe_init = + { + .devInstance = imxrt_usb_host_obj[USBH0_INDEX].device_handle, + .pipeType = pipe->ep.bmAttributes, + .direction = (pipe->ep.bEndpointAddress & USB_DIR_IN) ? USB_IN : USB_OUT, + .endpointAddress = (pipe->ep.bEndpointAddress & USB_DESCRIPTOR_ENDPOINT_ADDRESS_NUMBER_MASK), + .interval = pipe->ep.bInterval, + .maxPacketSize = (uint16_t)(pipe->ep.wMaxPacketSize & USB_DESCRIPTOR_ENDPOINT_MAXPACKETSIZE_SIZE_MASK), + .numberPerUframe = (uint8_t)(pipe->ep.wMaxPacketSize & USB_DESCRIPTOR_ENDPOINT_MAXPACKETSIZE_MULT_TRANSACTIONS_MASK), + .nakCount = USB_HOST_CONFIG_MAX_NAK, + }; + USB_HostOpenPipe(imxrt_usb_host_obj[USBH0_INDEX].host_handle, &imxrt_usb_host_obj[USBH0_INDEX].pipes[pipe->pipe_index].pipe_handle, &pipe_init); + return RT_EOK; +} + +static rt_err_t _ehci0_close_pipe(upipe_t pipe) +{ + (void)USB_HostClosePipe(imxrt_usb_host_obj[USBH0_INDEX].host_handle, imxrt_usb_host_obj[USBH0_INDEX].pipes[pipe->pipe_index].pipe_handle); + _ehci0_free_pipe_index(pipe->pipe_index); + return RT_EOK; +} + +static struct uhcd_ops _ehci0_uhcd_ops = +{ + _ehci0_reset_port, + _ehci0_pipe_xfer, + _ehci0_open_pipe, + _ehci0_close_pipe, +}; + +static usb_status_t usb0_host_callback(usb_device_handle handle, usb_host_configuration_handle config_handle, rt_uint32_t event_code) +{ + usb_status_t status = kStatus_USB_Success; + + switch (event_code) + { + case kUSB_HostEventAttach: + if (!imxrt_usb_host_obj[USBH0_INDEX].connect_status) + { + imxrt_usb_host_obj[USBH0_INDEX].connect_status = RT_TRUE; + imxrt_usb_host_obj[USBH0_INDEX].device_handle = handle; + RT_DEBUG_LOG(RT_DEBUG_USB, ("usb connected\n")); + rt_usbh_root_hub_connect_handler(&(imxrt_usb_host_obj[USBH0_INDEX].uhcd), OTG_PORT, RT_TRUE); + } + break; + + case kUSB_HostEventNotSupported: + RT_DEBUG_LOG(RT_DEBUG_USB, ("usb device not supported\n")); + break; + + case kUSB_HostEventEnumerationDone: + RT_DEBUG_LOG(RT_DEBUG_USB, ("enumeration done\n")); + break; + + case kUSB_HostEventDetach: + if (imxrt_usb_host_obj[USBH0_INDEX].connect_status) + { + imxrt_usb_host_obj[USBH0_INDEX].connect_status = RT_FALSE; + imxrt_usb_host_obj[USBH0_INDEX].device_handle = handle; + RT_DEBUG_LOG(RT_DEBUG_USB, ("usb disconnnect\n")); + rt_usbh_root_hub_disconnect_handler(&(imxrt_usb_host_obj[USBH0_INDEX].uhcd), OTG_PORT); + (void)USB_HostCloseDeviceInterface(handle, NULL); + } + break; + + default: + break; + } + return status; +} + +rt_thread_t usbh0_thread; + +static void _ehci0_usbh_thread(void* param) +{ + while (1) + { + USB_HostEhciTaskFunction(imxrt_usb_host_obj[USBH0_INDEX].host_handle); + } +} + +static rt_err_t _ehci0_usbh_init(rt_device_t device) +{ + USB_HostClockInit(kUSB_ControllerEhci0); + + if (kStatus_USB_Success == USB_HostInit(kUSB_ControllerEhci0, &imxrt_usb_host_obj[USBH0_INDEX].host_handle, usb0_host_callback)) + { + usbh0_thread = rt_thread_create("ehci0", _ehci0_usbh_thread, RT_NULL, 500, 4, 9999999); + rt_thread_startup(usbh0_thread); + USB_HostIsrEnable(kUSB_ControllerEhci0); + } + else + { + rt_kprintf("USB_HostInit ehci0 error\r\n"); + return -RT_ERROR; + } + return RT_EOK; +} +#endif + +#ifdef BSP_USB1_HOST +void USB_OTG2_IRQHandler(void) +{ + /* enter interrupt */ + rt_interrupt_enter(); + + USB_HostEhciIsrFunction(imxrt_usb_host_obj[USBH1_INDEX].host_handle); + /* leave interrupt */ + rt_interrupt_leave(); +} + +static rt_err_t _ehci1_reset_port(rt_uint8_t port) +{ + // No reset port function available + return RT_EOK; +} + +static uint8_t _ehci1_pipe_buf[64]; +static uint8_t _ehci1_pipe_idx; + +static int _ehci1_pipe_xfer(upipe_t pipe, rt_uint8_t token, void *buffer, int nbytes, int timeouts) +{ + int timeout = timeouts; + + if (!imxrt_usb_host_obj[USBH1_INDEX].connect_status) + { + return -1; + } + usb_host_transfer_t *transfer; + if (imxrt_usb_host_obj[USBH1_INDEX].pipes[pipe->pipe_index].pipe_handle == NULL) + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("error operation on null pipe\n")); + return -1; + } + if (USB_HostMallocTransfer(imxrt_usb_host_obj[USBH1_INDEX].host_handle, &transfer) != kStatus_USB_Success) + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("error to get transfer\n")); + return -1; + } + transfer->transferBuffer = buffer; + transfer->transferLength = nbytes; + transfer->transferSofar = 0; + transfer->callbackFn = _imxrt_usb_host_send_callback; + transfer->callbackParam = &(imxrt_usb_host_obj[USBH1_INDEX].pipes[pipe->pipe_index]); + transfer->direction = (pipe->ep.bEndpointAddress & USB_DIR_IN) ? USB_IN : USB_OUT; + if (pipe->ep.bmAttributes == USB_ENDPOINT_CONTROL) + { + if (token == USBH_PID_SETUP) + { + struct urequest *setup = (struct urequest *)buffer; + transfer->setupStatus = 0; + transfer->setupPacket->bmRequestType = setup->request_type; + transfer->setupPacket->bRequest = setup->bRequest; + transfer->setupPacket->wIndex = setup->wIndex; + transfer->setupPacket->wLength = setup->wLength; + transfer->setupPacket->wValue = setup->wValue; + transfer->transferBuffer = RT_NULL; + transfer->transferLength = 0; + transfer->next = RT_NULL; + if ((transfer->setupPacket->bmRequestType & USB_REQUEST_TYPE_DIR_MASK) == USB_REQUEST_TYPE_DIR_IN) + { + transfer->direction = USB_IN; + transfer->transferBuffer = _ehci1_pipe_buf; + transfer->transferLength = setup->wLength; + _ehci1_pipe_idx = 0; + } + else + { + transfer->direction = USB_OUT; + } + } + else + { + rt_memcpy(buffer, _ehci1_pipe_buf + _ehci1_pipe_idx, nbytes); + imxrt_usb_host_obj[USBH1_INDEX].pipes[pipe->pipe_index].transfer_status = kStatus_USB_Success; + transfer->transferSofar = nbytes; + _ehci1_pipe_idx += nbytes; + if (_ehci1_pipe_idx >= 64) + { + _ehci1_pipe_idx = 0; + } + goto _ehci1_pipe_xfer_finish; + } + + } + rt_completion_init(&(imxrt_usb_host_obj[USBH1_INDEX].pipes[pipe->pipe_index].urb_completion)); + if (USB_HostEhciWritePipe(((usb_host_instance_t *)imxrt_usb_host_obj[USBH1_INDEX].host_handle)->controllerHandle, imxrt_usb_host_obj[USBH1_INDEX].pipes[pipe->pipe_index].pipe_handle, transfer) != kStatus_USB_Success) + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("usb host failed to send\n")); + (void)USB_HostFreeTransfer(imxrt_usb_host_obj[USBH1_INDEX].host_handle, transfer); + return -1; + } + if (-RT_ETIMEOUT == rt_completion_wait(&(imxrt_usb_host_obj[USBH1_INDEX].pipes[pipe->pipe_index].urb_completion), RT_WAITING_FOREVER)) + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("usb transfer timeout\n")); + (void)USB_HostFreeTransfer(imxrt_usb_host_obj[USBH1_INDEX].host_handle, transfer); + return -1; + } + // rt_thread_mdelay(1); + _ehci1_pipe_xfer_finish: + switch (imxrt_usb_host_obj[USBH1_INDEX].pipes[pipe->pipe_index].transfer_status) + { + case kStatus_USB_Success: + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("ok\n")); + pipe->status = UPIPE_STATUS_OK; + if (pipe->callback != RT_NULL) + { + pipe->callback(pipe); + } + size_t size = transfer->transferSofar; + (void)USB_HostFreeTransfer(imxrt_usb_host_obj[USBH1_INDEX].host_handle, transfer); + if (pipe->ep.bEndpointAddress & 0x80) + { + return size; + } + else if (pipe->ep.bEndpointAddress & 0x00) + { + return size; + } + return nbytes; + break; + } + case kStatus_USB_TransferStall: + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("stall\n")); + pipe->status = UPIPE_STATUS_STALL; + if (pipe->callback != RT_NULL) + { + pipe->callback(pipe); + } + (void)USB_HostFreeTransfer(imxrt_usb_host_obj[USBH1_INDEX].host_handle, transfer); + return -1; + break; + } + case kStatus_USB_TransferFailed: + default: + { + RT_DEBUG_LOG(RT_DEBUG_USB, ("error\n")); + pipe->status = UPIPE_STATUS_ERROR; + if (pipe->callback != RT_NULL) + { + pipe->callback(pipe); + } + (void)USB_HostFreeTransfer(imxrt_usb_host_obj[USBH1_INDEX].host_handle, transfer); + return -1; + break; + } + } +} + +static rt_uint16_t _ehci1_pipe_index = 0; +static rt_uint8_t _ehci1_get_free_pipe_index(void) +{ + rt_uint8_t idx; + for (idx = 1; idx < 16; idx++) + { + if (!(_ehci1_pipe_index & (0x01 << idx))) + { + _ehci1_pipe_index |= (0x01 << idx); + return idx; + } + } + return 0xff; +} + +static void _ehci1_free_pipe_index(rt_uint8_t index) +{ + _ehci1_pipe_index &= ~(0x01 << index); +} + +static rt_err_t _ehci1_open_pipe(upipe_t pipe) +{ + pipe->pipe_index = _ehci1_get_free_pipe_index(); + if (pipe->pipe_index == 0xFF) + { + return -RT_ERROR; + } + usb_host_pipe_init_t pipe_init = + { + .devInstance = imxrt_usb_host_obj[USBH1_INDEX].device_handle, + .pipeType = pipe->ep.bmAttributes, + .direction = (pipe->ep.bEndpointAddress & USB_DIR_IN) ? USB_IN : USB_OUT, + .endpointAddress = (pipe->ep.bEndpointAddress & USB_DESCRIPTOR_ENDPOINT_ADDRESS_NUMBER_MASK), + .interval = pipe->ep.bInterval, + .maxPacketSize = (uint16_t)(pipe->ep.wMaxPacketSize & USB_DESCRIPTOR_ENDPOINT_MAXPACKETSIZE_SIZE_MASK), + .numberPerUframe = (uint8_t)(pipe->ep.wMaxPacketSize & USB_DESCRIPTOR_ENDPOINT_MAXPACKETSIZE_MULT_TRANSACTIONS_MASK), + .nakCount = USB_HOST_CONFIG_MAX_NAK, + }; + USB_HostOpenPipe(imxrt_usb_host_obj[USBH1_INDEX].host_handle, &imxrt_usb_host_obj[USBH1_INDEX].pipes[pipe->pipe_index].pipe_handle, &pipe_init); + return RT_EOK; +} + +static rt_err_t _ehci1_close_pipe(upipe_t pipe) +{ + (void)USB_HostClosePipe(imxrt_usb_host_obj[USBH1_INDEX].host_handle, imxrt_usb_host_obj[USBH1_INDEX].pipes[pipe->pipe_index].pipe_handle); + _ehci1_free_pipe_index(pipe->pipe_index); + return RT_EOK; +} + +static struct uhcd_ops _ehci1_uhcd_ops = +{ + _ehci1_reset_port, + _ehci1_pipe_xfer, + _ehci1_open_pipe, + _ehci1_close_pipe, +}; + +static usb_status_t usb1_host_callback(usb_device_handle handle, usb_host_configuration_handle config_handle, rt_uint32_t event_code) +{ + usb_status_t status = kStatus_USB_Success; + + switch (event_code) + { + case kUSB_HostEventAttach: + if (!imxrt_usb_host_obj[USBH1_INDEX].connect_status) + { + imxrt_usb_host_obj[USBH1_INDEX].connect_status = RT_TRUE; + imxrt_usb_host_obj[USBH1_INDEX].device_handle = handle; + RT_DEBUG_LOG(RT_DEBUG_USB, ("usb connected\n")); + rt_usbh_root_hub_connect_handler(&(imxrt_usb_host_obj[USBH1_INDEX].uhcd), OTG_PORT, RT_TRUE); + } + break; + + case kUSB_HostEventNotSupported: + RT_DEBUG_LOG(RT_DEBUG_USB, ("usb device not supported\n")); + break; + + case kUSB_HostEventEnumerationDone: + RT_DEBUG_LOG(RT_DEBUG_USB, ("enumeration done\n")); + break; + + case kUSB_HostEventDetach: + if (imxrt_usb_host_obj[USBH1_INDEX].connect_status) + { + imxrt_usb_host_obj[USBH1_INDEX].connect_status = RT_FALSE; + imxrt_usb_host_obj[USBH1_INDEX].device_handle = handle; + RT_DEBUG_LOG(RT_DEBUG_USB, ("usb disconnnect\n")); + rt_usbh_root_hub_disconnect_handler(&(imxrt_usb_host_obj[USBH1_INDEX].uhcd), OTG_PORT); + (void)USB_HostCloseDeviceInterface(handle, NULL); + } + break; + + default: + break; + } + return status; +} + +rt_thread_t usbh1_thread; + +static void _ehci1_usbh_thread(void* param) +{ + while (1) + { + USB_HostEhciTaskFunction(imxrt_usb_host_obj[USBH1_INDEX].host_handle); + } +} + +static rt_err_t _ehci1_usbh_init(rt_device_t device) +{ + USB_HostClockInit(kUSB_ControllerEhci1); + + if (kStatus_USB_Success == USB_HostInit(kUSB_ControllerEhci1, &imxrt_usb_host_obj[USBH1_INDEX].host_handle, usb1_host_callback)) + { + usbh1_thread = rt_thread_create("ehci1", _ehci1_usbh_thread, RT_NULL, 500, 4, 9999999); + rt_thread_startup(usbh1_thread); + USB_HostIsrEnable(kUSB_ControllerEhci1); + } + else + { + rt_kprintf("USB_HostInit ehci1 error\r\n"); + return -RT_ERROR; + } + return RT_EOK; +} +#endif + +int imxrt_usbh_register(void) +{ + rt_kprintf("register usbh1\r\n"); + rt_err_t res = -RT_ERROR; + struct imxrt_usb_host *usb_host_obj; + +#ifdef BSP_USB0_HOST + usb_host_obj = &(imxrt_usb_host_obj[USBH0_INDEX]); + rt_memset((void *)(&(usb_host_obj->uhcd)), 0, sizeof(struct uhcd)); + usb_host_obj->uhcd.parent.type = RT_Device_Class_USBHost; + usb_host_obj->uhcd.parent.init = _ehci0_usbh_init; + usb_host_obj->uhcd.parent.user_data = usb_host_obj; + usb_host_obj->uhcd.ops = &_ehci0_uhcd_ops; + usb_host_obj->uhcd.num_ports = OTG_PORT; + res = rt_device_register(&(usb_host_obj->uhcd.parent), usb_host_obj->name, RT_DEVICE_FLAG_DEACTIVATE); + if (res != RT_EOK) + { + rt_kprintf("register usb0 host failed res = %d\r\n", res); + return -RT_ERROR; + } + /*modify by zjr*/ + rt_usb_host_init(); +#endif +#ifdef BSP_USB1_HOST + usb_host_obj = &(imxrt_usb_host_obj[USBH1_INDEX]); + rt_memset((void *)(&(usb_host_obj->uhcd)), 0, sizeof(struct uhcd)); + usb_host_obj->uhcd.parent.type = RT_Device_Class_USBHost; + usb_host_obj->uhcd.parent.init = _ehci1_usbh_init; + usb_host_obj->uhcd.parent.user_data = usb_host_obj; + usb_host_obj->uhcd.ops = &_ehci1_uhcd_ops; + usb_host_obj->uhcd.num_ports = OTG_PORT; + res = rt_device_register(&(usb_host_obj->uhcd.parent), usb_host_obj->name, RT_DEVICE_FLAG_DEACTIVATE); + if (res != RT_EOK) + { + rt_kprintf("register usb0 host failed res = %d\r\n", res); + return -RT_ERROR; + } + /*modify by zjr*/ + rt_usb_host_init(); +// rt_usb_host_init(usb_host_obj->name); +#endif + return RT_EOK; +} +INIT_DEVICE_EXPORT(imxrt_usbh_register); + +#endif \ No newline at end of file diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/usb/drv_usbh.h b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/usb/drv_usbh.h new file mode 100644 index 000000000..db1f2074f --- /dev/null +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/usb/drv_usbh.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2017-12-12 ZYH the first version + * 2019-12-19 tyustli port to stm32 series + * 2021-01-19 Leslie Lee port to imxrt series + */ +#ifndef __DRV_USBH_H__ +#define __DRV_USBH_H__ +#include + +#define OTG_PORT 1 + +int imxrt_usbh_register(void); + +#endif + +/************* end of file ************/ \ No newline at end of file From 48c2dde09371085c02ccc48f9cb0614d5c7fd425 Mon Sep 17 00:00:00 2001 From: zhujiarui666 Date: Tue, 28 Jun 2022 10:55:12 +0800 Subject: [PATCH 25/26] =?UTF-8?q?xiuos\Ubiquitous\RT-Thread=5FFusion=5FXiU?= =?UTF-8?q?OS\aiit=5Fboard\xidatong-arm32/test=5Fphoto=EF=BC=9A=201.?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=88=90=E5=8A=9F=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test_photo/EC200t_4G/4G测试成功图.png | Bin 0 -> 167051 bytes .../test_photo/ESP07s_WiFi/WiFi调试成功图.png | Bin 0 -> 86159 bytes .../test_photo/USB/USBHost成功挂载在SD卡.png | Bin 0 -> 28102 bytes .../test_photo/USB/USBHost成功挂载根目录.png | Bin 0 -> 19345 bytes .../test_photo/USB/测试USBHost读写.png | Bin 0 -> 18950 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/EC200t_4G/4G测试成功图.png create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/ESP07s_WiFi/WiFi调试成功图.png create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/USB/USBHost成功挂载在SD卡.png create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/USB/USBHost成功挂载根目录.png create mode 100644 Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/USB/测试USBHost读写.png diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/EC200t_4G/4G测试成功图.png b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/EC200t_4G/4G测试成功图.png new file mode 100644 index 0000000000000000000000000000000000000000..e176cc221e7e5bb7a165c77eb6f9c702d0a63fad GIT binary patch literal 167051 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 DI4Y(Q literal 0 HcmV?d00001 diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/ESP07s_WiFi/WiFi调试成功图.png b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/ESP07s_WiFi/WiFi调试成功图.png new file mode 100644 index 0000000000000000000000000000000000000000..870ec4c01a80390e511f66ee26dbf4056c8f2783 GIT binary patch literal 86159 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 literal 0 HcmV?d00001 diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/USB/USBHost成功挂载根目录.png b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/USB/USBHost成功挂载根目录.png new file mode 100644 index 0000000000000000000000000000000000000000..8e305b009852d2b62ba25fab6c30893d5ce0a916 GIT binary patch literal 19345 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 GLK6VXxF(_i literal 0 HcmV?d00001 diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/USB/测试USBHost读写.png b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/test_photo/USB/测试USBHost读写.png new file mode 100644 index 0000000000000000000000000000000000000000..82ce77d89b83c61e29e8be031b6767f27c1bae86 GIT binary patch literal 18950 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 Date: Tue, 28 Jun 2022 16:21:17 +0800 Subject: [PATCH 26/26] 1.Usbhost Macros in C must be modified 2.Supplement the missing RT thread file 3.Add SConscript file --- .../aiit_board/xidatong-arm32/board/SConscript | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/SConscript b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/SConscript index a6ed1d162..9592fcf7f 100644 --- a/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/SConscript +++ b/Ubiquitous/RT-Thread_Fusion_XiUOS/aiit_board/xidatong-arm32/board/SConscript @@ -9,7 +9,7 @@ MCUX_Config/clock_config.c MCUX_Config/pin_mux.c """) -CPPPATH = [cwd,cwd + '/MCUX_Config',cwd + '/ports'] +CPPPATH = [cwd,cwd + '/MCUX_Config',cwd + '/ports',cwd + '/usb'] CPPDEFINES = ['CPU_MIMXRT1052CVL5B', 'SKIP_SYSCLK_INIT', 'EVK_MCIMXRM', 'FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL=1','XIP_EXTERNAL_FLASH=1'] if GetDepend('BSP_USING_PHY') and GetDepend('PHY_USING_8720A'): src += ['./ports/LAN8720A.c'] @@ -18,7 +18,7 @@ if GetDepend('BSP_USING_SDCARD'): if GetDepend(['RT_USING_DFS_ROMFS']): src += ['ports/romfs.c'] src += ['ports/mnt_romfs.c'] -if GetDepend(['RT_USING_USB_HOST']) +if GetDepend('RT_USING_USB_HOST'): src += ['usb/drv_usbh.c'] group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES)