From 88ed91ab1ca56b21750ef0230cfe5a60cea805ca Mon Sep 17 00:00:00 2001 From: n2232 Date: Wed, 10 Aug 2011 10:20:32 +0000 Subject: [PATCH] =?UTF-8?q?branch/sim=20=E3=81=8B=E3=82=89=E3=83=9E?= =?UTF-8?q?=E3=83=BC=E3=82=B8=EF=BC=88=E8=87=AA=E5=8B=95=E3=81=A7=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E3=81=8C=E6=AE=8B=E3=82=89=E3=81=AA=E3=81=84=EF=BC=9F?= =?UTF-8?q?=E3=80=80/branch/sim=20=E3=81=A8=E5=B7=AE=E5=88=86=E3=82=92?= =?UTF-8?q?=E8=A6=8B=E3=82=8B=E3=81=A8=E8=89=AF=E3=81=84=EF=BC=89=20?= =?UTF-8?q?=EF=BC=88=E5=85=A8=E8=88=AC=EF=BC=89=20=E3=83=BB=E3=83=9E?= =?UTF-8?q?=E3=82=B8=E3=83=83=E3=82=AF=E3=83=8A=E3=83=B3=E3=83=90=E3=83=BC?= =?UTF-8?q?=E3=82=92=E6=96=87=E5=AD=97=E5=88=97=E3=81=AB=20=E3=83=BB?= =?UTF-8?q?=E5=A4=96=E3=81=8B=E3=82=89=E8=AA=AD=E3=81=BE=E3=81=AA=E3=81=84?= =?UTF-8?q?=E7=89=A9=E3=82=92static=E3=81=AB=20batt=5Fparams.c=E3=80=80vol?= =?UTF-8?q?table.c=20=E3=83=BB=E5=AE=9A=E6=95=B0=E3=83=86=E3=83=BC?= =?UTF-8?q?=E3=83=96=E3=83=AB=E3=82=92.h=E3=81=A7=E3=81=AF=E3=81=AA?= =?UTF-8?q?=E3=81=8F.c=E3=81=AB=E3=81=8A=E3=81=84=E3=81=A6=E3=80=81extern?= =?UTF-8?q?=E3=81=A7=E8=AA=AD=E3=82=80=E3=81=93=E3=81=A8=E3=81=AB=E3=80=82?= =?UTF-8?q?=20hal.c=20=E3=83=BB=E6=95=B0=E3=82=AB=E6=89=80=E3=81=8B?= =?UTF-8?q?=E3=82=89=E5=91=BC=E3=81=B6=E3=81=AE=E3=81=A7=E3=80=81hal=5Fres?= =?UTF-8?q?et()=E8=BF=BD=E5=8A=A0=20i2c=5Fctr=20=E3=83=BB=E3=82=B9?= =?UTF-8?q?=E3=82=BF=E3=83=83=E3=82=AF=E3=81=8C=E5=BF=83=E9=85=8D=E3=81=AA?= =?UTF-8?q?=E3=81=AE=E3=81=A7=E3=80=81=E5=89=B2=E3=82=8A=E8=BE=BC=E3=81=BF?= =?UTF-8?q?=E5=84=AA=E5=85=88=E3=82=92=E4=B8=8B=E3=81=92=E3=80=81=E5=A4=9A?= =?UTF-8?q?=E9=87=8D=E5=89=B2=E3=82=8A=E8=BE=BC=E3=81=BF=E3=82=92=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=80=82=E8=A6=8B=E7=A9=8D=E3=82=82=E3=82=8A?= =?UTF-8?q?=E3=83=84=E3=83=BC=E3=83=AB=E3=81=A7=E7=A2=BA=E8=AA=8D=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=81=A8=E5=A4=A7=E4=B8=88=E5=A4=AB=E3=81=9D=E3=81=86?= =?UTF-8?q?=20sw.c=20=E9=9B=BB=E6=BA=90on=E6=99=82=E3=80=81=E3=82=AB?= =?UTF-8?q?=E3=82=A6=E3=83=B3=E3=83=88=E6=99=82=E9=96=93=E3=81=8C=E7=9F=AD?= =?UTF-8?q?=E3=81=84=E3=81=AE=E3=81=A7task=5Fsw=E3=81=AE=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=82=BF=E3=83=BC=E3=83=90=E3=83=AB=E3=82=92=E7=9F=AD=E3=81=8F?= =?UTF-8?q?=E3=81=97=E3=81=A6=E3=81=BF=E3=81=9F=E3=80=82=E2=80=A6=E3=81=8C?= =?UTF-8?q?=E3=80=81=E6=88=BB=E3=81=99=E4=BA=88=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@365 013db118-44a6-b54f-8bf7-843cb86687b1 --- trunk/WDT.c | 3 - trunk/accero.c | 125 ++- trunk/adc.c | 254 +---- trunk/batt_params.c | 84 ++ trunk/batt_params.h | 47 +- trunk/bsr.hex | 2020 ++++++++++++++++++------------------ trunk/bsr.lmf | Bin 167328 -> 177672 bytes trunk/bsr_k0r.map | 1106 +++++++++++--------- trunk/bsr_mcu.dr | 6 +- trunk/bsr_system.h | 6 +- trunk/config.h | 30 +- trunk/fsl_user.h | 7 +- trunk/hal.c | 171 +++ trunk/hal.h | 17 + trunk/hoge.bin | Bin 16387 -> 3 bytes trunk/i2c_ctr.c | 140 +-- trunk/i2c_mcu.c | 24 +- trunk/i2c_twl.c | 27 +- trunk/incs.h | 7 +- trunk/incs_loader.h | 9 + trunk/ini_VECT.c | 19 +- trunk/led.c | 38 +- trunk/led.h | 12 +- trunk/led_cam.c | 11 +- trunk/led_pow.c | 20 +- trunk/loader.c | 186 ++-- trunk/magic.c | 53 +- trunk/main.c | 8 +- trunk/pedo_alg_thre_det2.c | 84 +- trunk/pedo_lpf_coeff.c | 83 ++ trunk/pedometer.h | 7 + trunk/pm.c | 465 +++++---- trunk/pm.h | 45 +- trunk/renge/renge.c | 37 +- trunk/rtc.c | 30 +- trunk/rtc.h | 2 +- trunk/self_flash.c | 66 +- trunk/sw.c | 96 +- trunk/task_debug.c | 15 +- trunk/task_misc.c | 162 ++- trunk/task_status.c | 26 +- trunk/task_sys.c | 319 +++--- trunk/user_define.h | 183 ++-- trunk/voltable.c | 48 + trunk/vreg_ctr.c | 199 ++-- trunk/vreg_ctr.h | 52 +- trunk/yav_mcu_bsr.plg | 184 +--- trunk/yav_mcu_bsr.pri | 131 ++- trunk/yav_mcu_bsr.prj | 1112 ++++++++++---------- trunk/yav_mcu_bsr.prk | 52 +- trunk/yav_mcu_bsr.sdb | 232 +++-- trunk/ベースからの変更.xls | Bin 0 -> 26624 bytes 52 files changed, 4319 insertions(+), 3741 deletions(-) create mode 100644 trunk/batt_params.c create mode 100644 trunk/hal.c create mode 100644 trunk/hal.h create mode 100644 trunk/pedo_lpf_coeff.c create mode 100644 trunk/voltable.c create mode 100644 trunk/ベースからの変更.xls diff --git a/trunk/WDT.c b/trunk/WDT.c index 965b09c..436a51c 100644 --- a/trunk/WDT.c +++ b/trunk/WDT.c @@ -1,5 +1,2 @@ -#pragma sfr - - #include "incs_loader.h" diff --git a/trunk/accero.c b/trunk/accero.c index a5a3353..b8108a3 100644 --- a/trunk/accero.c +++ b/trunk/accero.c @@ -5,6 +5,8 @@ ExZT荞݂^XNo^ĉBiI2C̋Ȃǂ̂Łj ======================================================== */ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT @@ -14,11 +16,13 @@ #pragma MUL #pragma BCD - +#endif #include "config.h" -#ifdef _MCU_BSR_ +#ifndef _WIN32 + #pragma interrupt INTP23 intp23_ACC_ready RB3 // xZTAf[^ + #endif @@ -65,7 +69,7 @@ task_status tsk_soft_int( ); - +#define ACC_RAW_DATA_SIZE 6 /* ======================================================== @E荞݂mFăf[^zグAWX^ɏo܂ E{ł΃R[obN֐o^Ă΂ƂȂ̂łA @@ -75,12 +79,13 @@ task_status tsk_soft_int( ); task_status_immed tski_cbk_accero( ) { // i^jisro^܂ static u8 err_count; + u8 acc_dat_buff[ ACC_RAW_DATA_SIZE ]; // xZTf[^WX^ւ̔f - if( iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, &vreg_ctr[VREG_C_ACC_XL] ) + if( iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), ACC_RAW_DATA_SIZE, acc_dat_buff ) != ERR_SUCCESS ) { - err_count += 1; + err_count ++; if( err_count < 8 ) { // gC @@ -97,6 +102,8 @@ task_status_immed tski_cbk_accero( ) } else { + memcpy( &vreg_ctr[VREG_C_ACC_XL], acc_dat_buff, ACC_RAW_DATA_SIZE ); + err_count = 0; // 펞pX // // xXV荞 @@ -108,8 +115,8 @@ task_status_immed tski_cbk_accero( ) // S~f[^̃Jǂ if( ACC_VALID ) { - u8 temp[6]; - iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, temp ); + u8 temp[ACC_RAW_DATA_SIZE]; + iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), ACC_RAW_DATA_SIZE, temp ); } } if(( system_status.pwr_state != ON_CHECK ) @@ -167,58 +174,74 @@ task_status_immed tski_acc_write( ) ========================================================*/ task_status_immed tski_acc_hosu_set( ) { - u8 str_send_buf[4]; - iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI ); - if( iic_mcu_result == ERR_NOSLAVE ) - { - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR; - return ( ERR_FINISED ); // Ƃ肠A^XN͍폜ȂĂ͂ȂȂ - }else{ - vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR; - } - - str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm -/* -if( system_status.model == MODEL_TS_BOARD ) - { - // TS Final SoC - str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull, - } - else - { - // @hA - str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull, - } -*/ - str_send_buf[2] = 0b00010010; // ʓ|Ȃ̂ŗ...B - str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis +// iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI ); // X^bNȂ̂œWJc +// if( iic_mcu_result == ERR_NOSLAVE ) + { + u8 dummy; - if( ( vreg_ctr[VREG_C_ACC_CONFIG] & - ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) ) == 0 ) - { - PMK23 = 1; - // S~ - str_send_buf[0] = - ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); - } - else - { - PMK23 = 0; - // 100Hz 荞 - str_send_buf[0] = - ( ACC_BITS_PM_NORM << ACC_bP_PM0 - | ACC_BITS_DR_100Hz << ACC_bP_DR0 - | ACC_BITS_ALL_AXIS_ON ); - } - iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, str_send_buf ); + if( iic_mcu_read( IIC_SLA_ACCEL, ACC_REG_WHOAMI, 1, &dummy ) == ERR_NOSLAVE ) + { + vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR; + return ( ERR_FINISED ); // Ƃ肠A^XN͍폜ȂĂ͂ȂȂ + // ܂ + }else{ + vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR; + } + } + + { + u8 str_send_buf[4]; + + str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm + /* + if( system_status.model == MODEL_TS_BOARD ) + { + // TS Final SoC + str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull, + } + else + { + // @hA + str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull, + } + */ + if( system_status.model == MODEL_TS_BOARD ) + { + str_send_buf[2] = bits8(0,0,0,0, 0,0,1,0); // sŝ߁Aƕ + } + else + { + str_send_buf[2] = bits8(0,0,0,1, 0,0,0,0); + } + str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis + + if( ( vreg_ctr[VREG_C_ACC_CONFIG] & + ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) ) == 0 ) + { + PMK23 = 1; + // S~ + str_send_buf[0] = + ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON ); + } + else + { + PMK23 = 0; + // 100Hz 荞 + str_send_buf[0] = + ( ACC_BITS_PM_NORM << ACC_bP_PM0 + | ACC_BITS_DR_100Hz << ACC_bP_DR0 + | ACC_BITS_ALL_AXIS_ON ); + } + iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, str_send_buf ); + } // Jǂ if( ACC_VALID ) { if( system_status.pwr_state == ON ) { - u8 temp[6]; + u8 temp[ACC_RAW_DATA_SIZE]; iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, temp ); } } diff --git a/trunk/adc.c b/trunk/adc.c index 99c093f..c72471e 100644 --- a/trunk/adc.c +++ b/trunk/adc.c @@ -11,25 +11,24 @@ #include "vreg_twl.h" -#define _10db_ -#include "voltable.h" + +// ===================================================== // +static bit adc_updated; +static bit vol_changed_by_ctr; +bit vol_changed_by_twl; +static u8 vol_old; + +static u8 adc_raw_vol; +static u8 adc_raw_dep; + +u8 vol_polling; +u8 vol_level_twl; + +extern const u8 slider_to_codec[]; + // ===================================================== // -bit adc_updated; -bit vol_changed_by_ctr; -bit vol_changed_by_twl; -u8 vol_old; - - -u8 adc_raw_vol; -u8 adc_raw_dep; - -u8 vol_polling; - -u8 vol_level_twl; - - typedef struct filter_work { u8* value_used; @@ -39,14 +38,14 @@ typedef struct filter_work }filter_work; -filter_work work_vr_3d = { +static const filter_work work_vr_3d = { &vreg_ctr[ VREG_C_3D ] }; -u8 vol_data_ctr; -u8 vol_data_ctr_tmp; -filter_work work_vr_vol = { +static u8 vol_data_ctr; +static u8 vol_data_ctr_tmp; +static const filter_work work_vr_vol = { &vol_data_ctr_tmp }; @@ -56,7 +55,7 @@ filter_work work_vr_vol = { twl32 -> 8 e[u 0`1,`4,`8,`13,`18,`23,`28,31 */ -const u8 TWL_VOL_BOUNDARY[] = { +static const u8 TWL_VOL_BOUNDARY[] = { 1, 4, 8, 13, 18, 23, 28, 31 }; @@ -64,6 +63,7 @@ const u8 TWL_VOL_BOUNDARY[] = { extern void nop8(); static void adc_filter( u8 new_val, filter_work* work ); static u8 adc_scaling( u8 ); +static void update_twl_vol( u8 sent_index ); @@ -85,10 +85,6 @@ static u8 adc_scaling( u8 ); ======================================================== */ void tsk_adc( ) { - static u8 old_3D; - static u8 sndvol_codec; - static u8 bt_temp_old; - if( adc_updated ) { adc_updated = false; @@ -120,18 +116,18 @@ void tsk_adc( ) if( vol_polling < 5 ) { renge_task_immed_add( tski_vol_update ); - vol_polling = 200 / SYS_INTERVAL_TICK + 5; // 5/sec + vol_polling = (u8)(200 / SYS_INTERVAL_TICK) + 5; // 5/sec } - vol_polling -= 1; + vol_polling --; ADCEN = 1; - ADM = 0b00001011; // ZNg[hAAfCLK/6 /// + ADM = bits8(0,0,0,0, 1,0,1,1); // ZNg[hAAfCLK/6 // ADPC = 0x06; // ADC|[g̃ZNg ADS = ADC_SEL_3D; nop8(); - ADCS = 1; // ADJnB /// ܂Ł@@܂ł1us=8clkȏJ + ADCS = 1; // ADJnB // ܂Ł@@܂ł1us=8clkȏJ ADIF = 0; ADMK = 0; @@ -156,8 +152,7 @@ void vol_reset() task_status_immed tski_vol_update() { static u8 sent_index, sent_index_twl; - static u8 sent_data; - static bit last_modifyer_is_twl; // 0 = ctr + static bit last_modifyer_is_twl; // false = ctr if( !( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP )){ @@ -165,15 +160,7 @@ task_status_immed tski_vol_update() } // ǂ̉ʂɂ́H // - if( vreg_ctr[ VREG_C_VOL_OPTION ] & ( REG_BIT_VOL_UPDATE_TO_SLIDER ) ) - { - // debug // - NOP(); - // ŗD XC_ɏ㏑ - sent_index = vol_data_ctr; - vreg_ctr[ VREG_C_VOL_OPTION ] &= ~REG_BIT_VOL_UPDATE_TO_SLIDER; - } - else if( vol_changed_by_ctr ) + if( vol_changed_by_ctr ) { // XC_ vol_changed_by_ctr = false; @@ -211,6 +198,21 @@ task_status_immed tski_vol_update() // WX^̍XV // vreg_ctr[ VREG_C_SND_VOL ] = sent_index; + + // twlXV + update_twl_vol( sent_index ); + + // codecɓ` + /// lł + iic_mcu_write_a_byte_codec( CODEC_REG_VOL, slider_to_codec[ sent_index ] ); + + // set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 荞ݔp~ + return( ERR_FINISED ); +} + + +static void update_twl_vol( u8 sent_index ) +{ // XP[O if( sent_index == 0 ) { @@ -218,7 +220,7 @@ task_status_immed tski_vol_update() } else if( sent_index <= 4 ) { - vreg_twl[ REG_TWL_INT_ADRS_VOL ] = 2; + vreg_twl[ REG_TWL_INT_ADRS_VOL ] = 2; // P̓~bVOŐ } else { @@ -248,52 +250,6 @@ task_status_immed tski_vol_update() vol_level_twl = new_level; } } - - - // CODECɏɍsH - if( vreg_ctr[ VREG_C_VOL_OPTION ] & REG_BIT_VOL_BY_SPI ) - { - return( ERR_FINISED ); - // by SPI Ȃ炱܂łł܂ // - } - - // codecɓ` - /// lł - iic_mcu_write_a_byte_codec( CODEC_REG_VOL, slider_to_codec[ sent_index ] ); - - // set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 荞ݔp~ - return( ERR_FINISED ); -} - - - -/* ======================================================== -@ߋR‚minłMAXłȂlԂ - @˔IȃmCYB - @^ƐU -======================================================== */ -static u8 getmean3( u8 * hist ) -{ - if( *hist > *( hist + 1 ) ) - { - if( *hist > *( hist + 2 ) ) - { - return( ( *( hist + 1 ) > *( hist + 2 ) ) ? *( hist + 1 ) : *( hist + 2 ) ); - } - else - { - return( *hist ); - } - }else{ - if( *hist > *( hist + 2 ) ) - { - return( *hist ); - } - else - { - return( ( *( hist + 1 ) < *( hist + 2 ) ) ? *( hist + 1 ) : *( hist + 2 ) ); - } - } } @@ -304,14 +260,7 @@ static u8 getmean3( u8 * hist ) ======================================================== */ __interrupt void int_adc( ) { - static u8 hist_3D[3]; - static u8 hist_snd_vol[3]; - static u8 hist_bt_temp[3]; - static u8 index; - - volatile u8 adc_data; - - adc_data = ADCRH; + volatile u8 adc_data = ADCRH; switch ( ADS ) { @@ -341,15 +290,16 @@ case ( ADC_SEL_AMB_BRIT ): // case ( ADC_SEL_BATT_TEMP ): EI(); - raw_adc_temperature = adc_data; -#ifdef _DEBUG_BT_TEMP_ - if( vreg_ctr[ VREG_C_COMMAND3 ] == 't' ) - { - raw_adc_temperature = vreg_ctr[ VREG_C_DBG01 ]; - } -#endif + if( vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ] == 0xFF ) + { + raw_adc_temperature = adc_data; + } + else + { + raw_adc_temperature = vreg_ctr[ VREG_C_HAL_OVW_TEMPERATURE ]; + } - if( (( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) == 0 ) && + if(// (( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) == 0 ) && (( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) @@ -374,7 +324,6 @@ case ( ADC_SEL_AMB_BRIT ): // { ADCEN = 0; // ~߂Ă܂ adc_updated = true; - index = ( index == 2 ) ? 0 : ( index + 1 ); // mCY̔zCfbNX } ADIF = 0; // ȂƁAÕ`l̃f[^̊ŒɊ荞މ”\ } @@ -392,7 +341,7 @@ u8 get_adc( u8 ch ) ADIF = 0; ADCEN = 1; - ADM = 0b00001011; // ZNg[hAAfCLK/6 ///火 + ADM = bits8(0,0,0,0, 1,0,1,1); // ZNg[hAAfCLK/6 ///火 ADPC = 0x06; // ADC|[g̃ZNg ADS = ch; @@ -451,11 +400,10 @@ static u8 adc_scaling( u8 orig_val ) #define KIKAN 16 static void adc_filter( u8 new_val, filter_work *work ) { - u8 temp; if( abs( new_val - *( work -> value_used )) > 2 ) { // 傫ꂽ - work -> large_diff_count += 1; + work -> large_diff_count ++; if( work -> large_diff_count > 16 ) { *( work -> value_used ) = new_val; @@ -469,11 +417,11 @@ static void adc_filter( u8 new_val, filter_work *work ) // ߏ̒lłAԂłς΂Ă炻Ɋ񂹂 if( *( work -> value_used ) < new_val ) { - work -> diffs += 1; + work -> diffs ++; } else if( *( work -> value_used ) > new_val ) { - work -> diffs -= 1; + work -> diffs --; } if( --( work -> kikan ) == 0 ) @@ -494,91 +442,3 @@ static void adc_filter( u8 new_val, filter_work *work ) } } - - - -#if 0 -// getmeangp // -__interrupt void int_adc( ) -{ - static u8 hist_3D[3]; - static u8 hist_snd_vol[3]; - static u8 hist_bt_temp[3]; - static u8 index; - - volatile u8 adc_data; - - adc_data = ADCRH; - - switch ( ADS ) - { -/* -case ( ADC_SEL_AMB_BRIT ): // ‹邳 - vreg_ctr[ VREG_C_AMBIENT_BRIGHTNESS ] = adc_data; - break; -*/ - - case ( ADC_SEL_3D ): - hist_3D[index] = adc_data; - EI(); -#ifdef _MODEL_WM0_ - adc_raw_dep = 255 - getmean3( hist_3D ); -#else - adc_raw_dep = getmean3( hist_3D ); -#endif - break; - - case ( ADC_SEL_VOL ): - hist_snd_vol[index] = adc_data; - EI(); -#ifdef _MODEL_CTR_ - if( system_status.model == MODEL_TS_BOARD ) - { - adc_raw_vol = getmean3( hist_snd_vol ); - } - else - { - adc_raw_vol = ( 255 - getmean3( hist_snd_vol )); - } -#else - adc_raw_vol = getmean3( hist_snd_vol ); -#endif - - break; - - case ( ADC_SEL_BATT_TEMP ): - hist_bt_temp[index] = adc_data; - EI(); - raw_adc_temperature = getmean3( hist_bt_temp ); - if( (( vreg_ctr[ VREG_C_STATUS_1 ] & REG_BIT_MGIC_ERR ) == 0 ) && - (( system_status.pwr_state == ON ) || - ( system_status.pwr_state == SLEEP ) - ) - ) - { - renge_task_immed_add( tski_BT_temp_update ); - } - break; -/* Ă΂܂ - case ( ADC_SEL_BATT_DET ): - break; -*/ - } - -// Ƃ܂Ƃȏ肻 - if( ADS < ADC_SEL_BATT_DET ) - { - ADS += 1; // ̃`l - ADIF = 0; // ȂƁAÕ`l̃f[^̊ŒɊ荞މ”\ - } - else - { - ADCEN = 0; // ~߂Ă܂ - adc_updated = true; - index = ( index == 2 ) ? 0 : ( index + 1 ); // mCY̔zCfbNX - } -} - - - -#endif diff --git a/trunk/batt_params.c b/trunk/batt_params.c new file mode 100644 index 0000000..74d87df --- /dev/null +++ b/trunk/batt_params.c @@ -0,0 +1,84 @@ +#include "jhl_defs.h" + +#include "batt_params.h" + +/* ======================================================== + eЃobe[p[^ + ======================================================== */ +const bt_param_ bt_param[ _BT_PARAM_NUM_ ] = +{ + // ctr //////////////////////////////////////////////// + // BT_PARAM_CTR_MAXELL + { + { + 0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30, + 0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10, + 0xBD, 0x60, 0xBD, 0xB0, 0xBF, 0xE0, 0xC2, 0xB0, + 0xC4, 0x20, 0xC7, 0xB0, 0xCA, 0xE0, 0xCE, 0x10, + 0x01, 0xF0, 0x14, 0x10, 0x14, 0x20, 0x06, 0x30, + 0x63, 0x90, 0x49, 0x00, 0x6E, 0x00, 0x77, 0x70, + 0x7B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0xF0, + 0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00 + }, + 2, + { 92, (u8)(-256* 0.79), (u8)(-256* 4.35) }, + 0xD800, + { 0xEA, 0xE8 } + }, + + // BT_PARAM_CTR_PANA + { + { + 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, + 0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10, + 0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50, + 0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00, + 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, + 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 + }, + 1, + { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, + 0xDA20, + { 0x69, 0x67 }, + }, + + // spfl /////////////////////////////////////////////// + // BT_PARAM_SPFL_MAXELL + { + { + 0xA1, 0x20, 0xB7, 0x50, 0xB9, 0xD0, 0xBB, 0x00, + 0xBC, 0x30, 0xBC, 0x60, 0xBC, 0xA0, 0xBD, 0x10, + 0xBD, 0xC0, 0xBE, 0x70, 0xBF, 0xD0, 0xC2, 0xA0, + 0xC4, 0x00, 0xC8, 0x50, 0xCC, 0x80, 0xD0, 0xB0, + 0x01, 0xA0, 0x25, 0x10, 0x18, 0xB0, 0x17, 0xC0, + 0x95, 0x20, 0x6F, 0xE0, 0x7C, 0x60, 0x35, 0x10, + 0x35, 0x00, 0x37, 0xF0, 0x16, 0xF0, 0x1C, 0xA0, + 0x17, 0x30, 0x11, 0xD0, 0x11, 0xF0, 0x11, 0xF0 + }, + 2, + { 94, (u8)(-256* 0.35), (u8)(-256* 3.85) }, + 0xDAB0, + { 0xF5, 0xF3 } + }, + + // BT_PARAM_SPFL_PANA !!dummy!! + { + { + 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, + 0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10, + 0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50, + 0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00, + 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, + 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 + }, + 1, + { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, + 0xDA20, + { 0x69, 0x67 }, + } +}; + diff --git a/trunk/batt_params.h b/trunk/batt_params.h index 3b8d542..343b3f4 100644 --- a/trunk/batt_params.h +++ b/trunk/batt_params.h @@ -36,7 +36,7 @@ typedef struct u8 hi,low; } verify_; - typedef struct +typedef struct { u8 mg_param[64]; u8 v_scale; @@ -46,49 +46,4 @@ typedef struct } bt_param_; - - -/* ======================================================== - eЃobe[p[^ - ======================================================== */ -const bt_param_ bt_param[ _BT_PARAM_NUM_ ] = -{ - // BT_PARAM_CTR_MAXELL - { - { - 0xAE, 0xF0, 0xB4, 0x30, 0xB7, 0x40, 0xBA, 0x30, - 0xBB, 0x50, 0xBB, 0xB0, 0xBC, 0x50, 0xBD, 0x10, - 0xBD, 0x60, 0xBD, 0xB0, 0xBF, 0xE0, 0xC2, 0xB0, - 0xC4, 0x20, 0xC7, 0xB0, 0xCA, 0xE0, 0xCE, 0x10, - 0x01, 0xF0, 0x14, 0x10, 0x14, 0x20, 0x06, 0x30, - 0x63, 0x90, 0x49, 0x00, 0x6E, 0x00, 0x77, 0x70, - 0x7B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x17, 0xF0, - 0x1C, 0x60, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00 - }, - 2, - { 92, (u8)(-256* 0.79), (u8)(-256* 4.35) }, - 0xD800, - { 0xEA, 0xE8 } - }, - - // BT_PARAM_CTR_PANA - { - { - 0x8C, 0x30, 0x9C, 0x10, 0xA5, 0xE0, 0xB0, 0x40, - 0xB1, 0xC0, 0xB2, 0x00, 0xB2, 0x50, 0xB3, 0x10, - 0xB4, 0x90, 0xB6, 0x20, 0xB8, 0x60, 0xBA, 0x50, - 0xBF, 0xA0, 0xC6, 0xB0, 0xCE, 0x90, 0xD0, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x7B, 0x30, 0x68, 0x60, 0x20, 0x00, 0x17, 0x00, - 0x17, 0x30, 0x12, 0xF0, 0x0D, 0xE0, 0x07, 0xF0, - 0x07, 0x00, 0x09, 0x30, 0x01, 0xC0, 0x01, 0xC0 - }, - 1, - { 171, (u8)(-256* 1.00), (u8)(-256* 2.60) }, - 0xDA20, - { 0x69, 0x67 }, - } -}; - - #endif diff --git a/trunk/bsr.hex b/trunk/bsr.hex index 0d0597b..58f8615 100644 --- a/trunk/bsr.hex +++ b/trunk/bsr.hex @@ -1,1022 +1,1004 @@ -:02000000260DCB -:040010004D4A4F4ABC -:02001C00244C72 -:02002400904CFE -:02002A00FD4C8B -:08003400264EC84D214E554F28 -:02004A00514A19 -:02005A008C4ACE -:02006200D94E75 -:0400C0007EFBFF04C0 +:02000000760D7B +:02000200FFFFFE +:040010000A490C4944 +:02001C00CC4ACC +:02002400194B76 +:02002A00644B25 +:08003400914C344C8D4CAF4D92 +:02004A000E495D +:02005A00494912 +:02006200334D1C +:0400C0007EFBFF853F :0A00C4001B339499E033F240BFAA09 -:1000CE00C7C1FBF8FFCEABACC736F00071F4C6610A -:1000DE00D8710022F98EA89C018C015C10D1DD0A2A -:1000EE007110D8FB710022F9EF0B8C015C80D1618D -:1000FE00E8710022F98F22F931030FF6BBBBF6B17E -:10010E00614900DD05617900EFF4FDAA01CC000024 -:10011E00CC01008C014C09DE468C01318E04F60FA9 -:10012E00C1317B9EFDC41189728C01318E04F64F54 -:10013E0014896142DF03F6EF01E6600D9B8C0131FD -:10014E008E12490020728C01318E04F64F14896193 -:10015E0042DF03F6EF01E6600D9B615901EFB440FB -:10016E00F84F3A61E86159008BD161E8FD4F0731D4 -:10017E00020406714022F9EF04714822F9FDC7020C -:10018E00EDD300C0C6D7717BFACEA010CEA180E50C -:10019E00F300CEA408F5AAFFF5A9FFD78F22F931F7 -:1001AE00050ACD0003CD0307F40EEF07F400CD03CF -:1001BE0006F40ECE20FFCE23F0CE2EFC8F22F93188 -:1001CE00031FF51005CD01C0F402CD0408F405F4AB -:1001DE0006CD0740F40CF40F7108F200F690BFB490 -:1001EE0001F6BEE0BEE2BED0CBE4FFFFCBE6FFFFE2 -:1001FE00CBD4FFFFCF1105FCF521FFCE22E9CE2493 -:10020E00F3CE25F2CE26FCCE275FCE2CFFCE2FFFCF -:10021E00CF120511F53000F53100F53300F534003D -:10022E00CF350002CF370019F53C00F53E00F543FF -:10023E0000F54700CF530006F55700CBE8FFFFCB84 -:10024E00EAFFFFCBECFFFFCBEEFEFFCED8FFCEDCFE -:10025E00FFCE3831CE3970CF38050AF53905F5376E -:10026E00FF7158F000F530FF7128F0005087BF186D -:10027E0001BF1A01BF1C01BF1E017148F000F5300D -:10028E000271080105F55005F5BCFFF5BDFFF5A59A -:10029E00FFF5A6FFD7C7C1C1FBF8FFCEABAC8C02F2 -:1002AE00D1DD12616902305C03BBF6614900DDEEFF -:1002BE00618900EFF51004C6D7FDEC32FD473CFD19 -:1002CE002705717AFAFDFB23F520F98F22F9310506 -:1002DE00175003C15084FD3103C0625C01D161E847 -:1002EE00CF20F902CFE1FB64FDCC33FD5E48717285 -:1002FE0022712BE7FD4A3CFDEC3C61EDEFF6D7D7C2 -:10030E00C7F616FD2705717BFA3102210571022110 -:10031E00EF0B717AFAA7F647DFECE2EF04717AFA87 -:10032E00F2C6D7C7C1C1FBF8FF17A1C1E0C18C0A45 -:10033E0070C18C0270FD5B031006D2DF05F543FB26 -:10034E00EF04CF43FB028C01721004C6D7C7C1FB6A -:10035E00F8FFFD0E03D2DD03E2EF618B70FD7B042F -:10036E00D2DD077103215202EF528C0870FD90040A -:10037E00FDDB048B6C0170FD9004300400BF240182 -:10038E00301740BF1C01300400BF22018C0A91DFE0 -:10039E0004F6BF2A01710BE2CE44FF3182E202EF76 -:1003AE00FAAC0C148E449961790C61690A8C0AD1ED -:1003BE00DFDAFD0405710BE2710321F2C0C6D7C767 -:1003CE00C1FBF8FFFD0E03D2DD03E2EF25710AE655 -:1003DE008B70FD7B04D2DD077103215202EF138C6B -:1003EE000870FD90048C0A70FD9004FD04057103E5 -:1003FE0021F2C0C6D7C7C1FBF8FFFD0E03D2DD0345 -:10040E00E2EF67710AE6710BE28B70FD7B04D2DDC1 -:10041E00077103215202EF52710BE231722039C77C -:10042E00343CFBAC0C1652048B99A5A792DFF9C68F -:10043E003184BD02EFFA717ABDCEB144CBB43CFB30 -:10044E008C0A318EBEB8CEBB48714BE1714BE57153 -:10045E000ABD8C089E44EF11710BE68C089E448CED -:10046E000A9F42FBAC0CBF40FBF2C0C6D7C716FDBD -:10047E00B30417FD9004D2DD06FD0405E2EF01F290 -:10048E00C6D7C716710AE6710BE2669E443182E248 -:10049E0002EFFAF6420401DD09AF0401BF0C01E2DE -:1004AE00EF01F2C6D7AF2801085CFB08BF2801FD9B -:1004BE000D03AF28015CFBBF2801300400BF2A01E9 -:1004CE00301780BF1C01300400BF2201D7AF2401BA -:1004DE00086C0408BF2401AF28016C0F086C0B08D0 -:1004EE00BF2801FD0D03AF2A01085CFB08BF2A01DE -:1004FE00FD0D03EDB304300400BF2401F6BF2A0145 -:10050E00300B0BBF2801FD0D03300B0FBF2801FD73 -:10051E000D03300F0FBF2801D731142101D77102FF -:10052E0021710BBD0000717BBD713A25713A236AB2 -:10053E000E03713205713B25713203713B23500A54 -:10054E00FDA3027120F000FD0D03F6BF260150241D -:10055E00BF1401CB440014300F0FBF28017173205C -:10056E00710BE2710AE6FDB304CE44FF3182E20262 -:10057E00EFFAFD0405AF0401BF0C017103217112E6 -:10058E0021D731042102EFFAFDDB04713A25713ACD -:10059E00235A0EFC713305713B25713303713B23D6 -:1005AE007128F000711321D7C7880616FD0E03D2ED -:1005BE00DD03E2EF38710AE650A4FD7B04D2DD07BD -:1005CE007103215202EF2617FD90046770FD90040F -:1005DE00FDDB0450A4FD90045020FD9004D944FB93 -:1005EE00FD9004A044FBFD0405710321F2C6D7C79C -:1005FE002008FBF8FFFD59095014C15008FD8B0867 -:10060E00C0CC07048C074C14DE0C8C07318EFD0811 -:10061E000A615907EFEECC07048C074C1461C8ED44 -:10062E00EB06CC06008C064C0461C8EDCA063024DD -:10063E00F9BC02F6BBCEABAC31B2D109C73641051F -:10064E007184C6DEF3F1C73641057184C661DC9C48 -:10065E0005713BD1AC02148F400599715050056164 -:10066E007902617900F0E1614900DD09C736410583 -:10067E007184C6DEC3F1C73641057184C661DC0ED6 -:10068E00059C055040C18C07318E31AD128C063160 -:10069E008E318D03BDD831FFBDDADADAADD8FDD497 -:1006AE000CC0D2DD0C5008C15014FD8B08C0FD915A -:1006BE000B8C05D1DF06615906ED33068C07318EA2 -:1006CE00FD0C0AD2DD0C5008C15014FD8B08C0FD84 -:1006DE00910B8C05D1DF06615907ED27067160502D -:1006EE0005CC0400CC05008C054C09DE2B8C0531A5 -:1006FE008E04F61FC1317B9EFDC41189728C0531AB -:10070E008E04F64F14896142DF03F6EF01E6600EA8 -:10071E00049C04615905EFCF41001140F81F3A6166 -:10072E00E86159048C04D1DF08FD920BFDA40CEF97 -:10073E000C5008C15014FD8B08C0FD910B1008C65B -:10074E00D7C72004FBF8FF715B21CC0100F6BC0279 -:10075E00AC02440900DE3EAC0204F60F1441001157 -:10076E008972AC020C5014896142DF03F6EF01E688 -:10077E00600E019C01AC021249005072AC0204F6EC -:10078E007F14896142DF03F6EF01E6600E019C01E2 -:10079E00617902EFBB40F67FFF61F86159018C0170 -:1007AE00D161F8ED5908CC0100717AFAFD27057177 -:1007BE001300711B20710303710205E0C15003C1C8 -:1007CE005084FDCD0310045013FDA302500FC1E061 -:1007DE00C15084FDCD031004CEABAC6159018C0128 -:1007EE0091DD068C014C03DF03E6EF01F66061FB41 -:1007FE007151018C014C0861F8CC010031320705B2 -:10080E00A082FCEF03F582FC4082FC11DC11F58224 -:10081E00FCF0C15003C15084FDCD031004EF12E66D -:10082E00BC02F6614902DDB000000000617902EF02 -:10083E00F1CE3708CBE4FFFFCBE6FFF7CED4FFCFE8 -:10084E00370008F5120561FDF5ABFFFD5909D250D1 -:10085E0008C15014FD8B08C0D2FD910B1004C6D7F1 -:10086E003184BD02EFFA717BBDCBE4FFFFCBE6FF17 -:10087E00FFCBD4FFFF717ABED7717BBED7C7C12025 -:10088E000CFBF8FF8C0C318E31ADC1317B9DD4C089 -:10089E00BC068DD49C088C149C0B8C14318E040CCD -:1008AE0000128C0B318EBDD813FD630F61C8ED5451 -:1008BE0009CEABACCC05068C0B318EFD040AD2DD15 -:1008CE00158C0B318EFD080A6169058C05D1DFE7A9 -:1008DE00FD8708E2EF71CC0A008C0A4C04DE54F658 -:1008EE00BC023024F9BBAC06148C089EFD11897233 -:1008FE00AB146299AC06A1BC06617900617902F075 -:10090E00E1614902DFE05040C18C0B318E31AD12F6 -:10091E008C0A318E318D03BDD831FFBDDADADAADF6 -:10092E00D8FDD40CC0D2DD06FD8708E2EF1961595F -:10093E000AEFA68C0B318EFD0C0AD2DD03E2EF0717 -:10094E0061590BEDA808F2100EC6D7C7717B9D71C9 -:10095E007BFAFD6E083024F9FDB70AFD420AC6D7B0 -:10096E00FD5909FD910BFD8708F5ABFFF2D7C7D5F1 -:10097E006AFDDD05B06AFDEF7BCF6AFD023114071B -:10098E00067110E5FBEF047118E5FB8FE5FB7F3078 -:10099E00FD76D1DD5F8FE5FB9F30FD4020F903DF53 -:1009AE0025665C10D1DD1F7122208FE5FB5C10D116 -:1009BE00DD0B5080C15011FDFC37C0EF095040C116 -:1009CE005011FDFC37C04020F903DD064020F9042C -:1009DE00DF22665C02D1DD1C8FE5FB5C02D1DD0BF4 -:1009EE005040C15010FDFC37C0EF095020C15010CF -:0609FE00FDFC37C0C6D766 -:100A04005208EF065203EF025206FEE600FE1B00F8 -:100A1400DC16089F03088F0408089F040862FE245C -:100A240000089F0408EEBF00EEBA00C1C514410ED1 -:100A340011D9D0FF118FD1FF312E45C4C0D7F23167 -:100A4400A2C401E2D79DE261DD4C09DF12717BFA99 -:100A5400C18F06089F7BFDC0CF060800EE2700313A -:100A6400F2FA04CF0608004C00DF05D50008DD16B5 -:100A740061DD717BFAD50608DD0ACDE31F61CD6126 -:100A8400CDEE160061CDFED40061FFFE9A00FCF8A5 -:100A9400FF0EFEB20061CDFED5004C09DF0EC18F02 -:100AA40006086F7BFD9F0608C0EE0400CF06080011 -:100AB400F8E3D75200EF025202FE3700CF7AFD006E -:100AC400CF060800BF0408C716629F000841001142 -:100AD4008F86229B4100118F87229F0108C65100F7 -:100AE400FE62FFEF025205CF060800C1510CFE0A58 -:100AF40000C0D7C1511DFE0200C0D761DD717BFA71 -:100B040070CEC0A59EC47CFF9EC4609EC461CDD738 -:100B140061DD717BFAC18EC45C1BFED6FFCF060873 -:100B240001FED7FFC061CDD731F2FA1AC1AEE4BFDE -:100B34006CFDAEE6BF6EFDAED4BF70FD30FFFFBEF0 -:100B4400E4BEE6BED4C0D731F2FA11C1AF6CFDBE2B -:100B5400E4AF6EFDBEE6AF70FDBED4C0D7C1BF72B8 -:100B6400FD13BF74FD15BF76FD17BF78FDC0D7AF69 -:100B740072FDDB74FDEB76FDFB78FDD7534B3052F1 -:100B84005430324E323030475631323000FFC1508B -:100B9400FEFEAB0061DD717BFACF060800FE0A00A1 -:100BA400FEA4FF61CDF8E3EECF00C7FB0408BF6CE1 -:100BB400FD8FC0009C05C5C337040600BF6EFD351C -:100BC40036F60B300000522BFE6600C2C4C630A4B9 -:100BD4000BB800300000B8022004AF6EFDB800303E -:100BE4000F00B802AF6CFD61FF520AFE3AFFECF849 -:100BF400FF0E717BFAC1C7FB04088C05C65C80FE3E -:100C04000200C0D761DD717BFA70CFC0FFA59FC021 -:100C1400007CFF9FC000609FC00061CDD7618BFE48 -:100C2400E2FF717BBE410011FB000017CEFC0061A6 -:100C3400CB089EFDF31161C999A58392DFF7D7FE16 -:100C4400B1FED57AFDDF23C1CF0308035109FEF4B9 -:100C5400FDC0D2DF37FE3800A20408CF03080751D5 -:100C640009FEE1FDD2B20408DF22C7FB0408318388 -:100C740002C6D7C6510AFECCFD624C1FDF06CF7AEE -:100C8400FD01EF04CF7AFD00C0EE5BFEC0EE55FE21 -:100C9400C7C1FB04088B31196C0161589BC0C6D7CE -:100CA400717BFAFE4DFEAF0408040600C114360839 -:100CB4000C300000522DF3FE77FF8FC000FE2BFE98 -:100CC40061CF5C807C8073C0041900CEFC0F61CBC3 -:100CD400C55404EF03C55417FE18FEC7360008BBFD -:100CE400629C0288089C03D1DD334C41DE2F70F1F5 -:100CF400312DB161090033081C000851FF612A41FC -:100D04000E118FD0FF613B118FD1FF6138DC0E8B48 -:100D14005C03DF0964C6C4FE2BFDEECAFDC6C4EE47 -:020D2400C3FD0D -:100D260061CF5100718C7109FECBF800FEFC940175 -:100D360000F6BF00F953C0F693935820FEDFF94141 -:100D46000036764F3432FDEF05118B99A7A517446F -:100D5600B04FDFF53602F93032FDEF04CC0000A7C4 -:100D660047DFF94100365B4F346CFDEF05118B9977 -:100D7600A7A517445B4FDFF5366CFD306CFDEF041D -:100D8600CC0000A747DFF9FCCE0000EFFE61DD7165 -:100D96007BFABEF0ADD8BEF200AEF661CDD7C36128 -:100DA600DD717BFABEF0ADD8BEF200DBF6FFADDC3E -:100DB600BEF000AEF6BDD8AEF40312ADDABEF20058 -:100DC600AEF661CD03BDDAC2D7C3F33174D9088359 -:100DD600C1F626D8BDD8C031750683C312F623C224 -:100DE600FDF10D93DF0312F623C2D7440000DD2682 -:100DF60061DD717BFACFE80080BEF6F6BEF4BEF286 -:100E0600ADD8BEF0CFE800818FE8003103FAAEF02E -:100E1600F5E80061CDD7B1D7C3F33174D90883C1E2 -:100E2600F626D8BDD8C0317505C312F623C2FD3FDC -:100E36000E93DF0312F623C2D7440000DD2761DDDF -:100E4600717BFACFE80080BEF6F6BEF4BEF2ADD8EE -:100E5600BEF0CFE800818FE8003103FAAFE000F57D -:100E6600E80061CDD7ADD8D7C3F33174DB0F83C1AA -:100E7600F626D8BDD861317026DABDDAC031750DD7 -:100E860083C312F626DCBDDC61317023C2FDA70EDA -:100E960093DF0CF626D8BDD861317026DABDDAC2EA -:100EA600D7C161686BDC6BDDC0DD2F61DD717BFA5C -:100EB600CFE80080BEF4ADDCBEF6ADD8BEF0ADDA4C -:100EC600BEF2CFE800818FE8003103FAAEF0BDD85C -:100ED600AEF2BDDAF5E80061CDD7F6BDD8BDDAD7FA -:100EE6008292DD2B61DD717BFACFE80080BEF0F6E1 -:100EF600BEF2BEF46208BEF6CFE800818FE800318C -:100F060003FAAFE0006072AEF0F5E80061CDD7609D -:100F160072F6B1D706DABDDAADDC06D8BDD861D82F -:100F2600A6DAD7D1DD17C1C3DAD89DD8ADDA311C20 -:100F360061EEB4D8DFF8BDDA13BDD8C2C0D7D1DDB3 -:100F46001BC1C3DADA9DDAADD8311E33311E3371D7 -:100F5600F9B4DADFF4BDD813BDDAC2C0D746D8DD9E -:100F66000771FF7177D971C0D75BDB9DDB605BDAF8 -:100F76009DDAADDC5BD9085BD808BDD8D7C3C7F30B -:100F8600728EFDC162314C4100365C4F1161A07218 -:100F9600C09EFD62C6C2D7C3C7F3728EFDC1625C36 -:100FA6000F0C000FFE00314C410036664F11618078 -:0B0FB6000FFE0073C09EFD63C6C2D793 -:0A0FF60030383A35343A3333000046 -:0A20000030383A35343A333300002B -:10200A00AEF0B430B740BA30BB50BBB0BC50BD1014 -:10201A00BD60BDB0BFE0C2B0C420C7B0CAE0CE1038 -:10202A0001F0141014200630639049006E00777096 -:10203A007B001900190017F01C6012001200120030 -:10204A00AEF0B430B740BA30BB50BBB0BC50BD10D4 -:10205A00BD60BDB0BFE0C2B0C420C7B0CAE0CE10F8 -:10206A0001F0141014200630639049006E00777056 -:10207A007B001900190017F01C60120012001200F0 -:10208A00AEF0B430B740BA30BB50BBB0BC50BD1094 -:10209A00BD60BDB0BFE0C2B0C420C7B0CAE0CE10B8 -:1020AA0001F0141014200630639049006E00777016 -:1020BA007B001900190017F01C60120012001200B0 -:1020CA008C309C10A5E0B040B1C0B200B250B31041 -:1020DA00B490B620B860BA50BFA0C6B0CE90D02097 -:1020EA0000200020002000207B30686020001700BC -:1020FA00173012F00DE007F00700093001C001C0E7 -:10210A008C309C10A5E0B040B1C0B200B250B31000 -:10211A00B490B620B860BA50BFA0C6B0CE90D02056 -:10212A0000200020002000207B306860200017007B -:10213A00173012F00DE007F00700093001C001C0A6 -:10214A008C309C10A5E0B040B1C0B200B250B310C0 -:10215A00B490B620B860BA50BFA0C6B0CE90D02016 -:10216A0000200020002000207B306860200017003B -:10217A00173012F00DE007F00700093001C001C066 -:10218A008C309C10A5E0B040B1C0B200B250B31080 -:10219A00B490B620B860BA50BFA0C6B0CE90D020D6 -:1021AA0000200020002000207B30686020001700FB -:1021BA00173012F00DE007F00700093001C001C026 -:1021CA005C003600A7005C003600A7005C00360001 -:1021DA00A700AB0000006700AB0000006700AB007F -:1021EA0000006700AB000000670000D800D800D8E4 -:1021FA0020DA20DA20DA20DAEAEAEA69696969E8A3 -:10220A00E8E8676767670202020101010105214FD9 -:10221A007B9EC5E91926344453626E777D80807DA2 -:10222A00776E625344342619100A08080808080809 -:10223A0008080A107F7E7D7C7A79787776757472C1 -:10224A0071706F6E6D6C6A696867666564626160F9 -:10225A005F5E5D5C5A5958575655535251504F4E0E -:10226A004D4B4A494948474645434241403F3E3D16 -:10227A003B3A39380104080D12171C1F08010102E4 -:10228A000203030200FEFBF7F3F0F0F3FA0412254F -:10229A00384D5F6E777A776E5F4D38251204FAF300 -:1022AA00F0F0F3F7FBFE0002030302020100000054 -:1022BA0000001F003B005A0078009700B500D400C8 -:0822CA00F300110130014E0187 -:1022D200D520F9DD108F33FDB033FDD161E8ED7EFD -:1022E20023CF33FD33FD7F234002F94BDC1640023E -:1022F200F9B9DE10400EF928DE05A00EF9EF2771BC -:102302003320EF224002F93EDC064002F9BDDC1028 -:10231200400FF928DE05A00FF9EF0B713220EF060E -:10232200F50EF9F50FF93132200D31042009310291 -:102332000705713304EF0371320431140508F510F7 -:10234200F9714302EF0E4010F902DE05A010F9EF19 -:1023520003714202D50BF9DD06B00BF9714202316D -:102362004402067140E5FBEF047148E5FB4020F9A9 -:1023720001DD094020F90561E8FD2227D7C72004C5 -:10238200FBF8FF710407E66130609C038F11F94E80 -:1023920003DD628C039F11F98C03D1DD137130E5EB -:1023A200FB5002C15011FDFC37C0CF0BF91EEF45A7 -:1023B2007138E5FBE0C15011FDFC37C0F50BF91790 -:1023C200A1C15002C1C1506CFD5B031006D2DF0FE8 -:1023D2008C01318E318D080E02081C00BF0CF9AF42 -:1023E2000CF944009BDC05D5E1FBDF095020C1500C -:1023F20011FDFC37C01004C6D7C78F32FD76FD3CF5 -:1024020024D523F9DD05710320EF2D664F32FD61DE -:10241200F83144201A714320FD2705664C07DD037D -:1024220081DF098F22F9310303FDBA24FDDF247114 -:102432000220306426FDA23CC6D7C77162017172C8 -:1024420001E0FDA3025008FD163B629F02F950090C -:10245200FD163B6276716301713822F94002F9F18F -:10246200DC05E523F9EF244002F904DE1BCF23F952 -:10247200025008C1506CFD3103C092DF0ED543FB00 -:10248200DF09713022F9EF03F523F9CF32FD075747 -:1024920000674C08DE1173091722614EDC06679F44 -:1024A20032FDEF0387EFEA4032FD07DF09D523F95A -:1024B20061F8CF23F903C6D7C7C1FBF8FF500AFD65 -:1024C200A302304000BB17C15002C15006C1506C7C -:1024D200FD030410065096FDA302C0C6D7C720080C -:1024E200FBF8FF8F32FD5006D604CA2114F75006BE -:1024F20089A54804F9A390DFF7D523F961E8ED60D7 -:1025020026304A57BB17C15002C1503EC1506CFD24 -:1025120003041006D2DD077100E4FBED60267108AA -:10252200E4FB17040300C15004C1500CC1506CFD00 -:102532005B031006D932FDF10104F42114A9318D97 -:1025420012A9318E616B08616A08BB17C15002C1C2 -:10255200500EC1506CFD03041006F690BB17C1501B -:1025620002C1500CC1506CFD03041006310421025B -:10257200EFFA7172208F32FDF0312E040A20C15021 -:1025820010C15040C1506CFD0304100631042102F9 -:10259200EFFA7172208F32FDF0312E041A20C150F1 -:1025A20010C15050C1506CFD0304100631042102C9 -:1025B200EFFA7172208F32FDF0312E042A20C150C1 -:1025C20010C15060C1506CFD030410063104210299 -:1025D200EFFA7172208F32FDF0312E043A20C15091 -:1025E20010C15070C1506CFD0304100650A5FDA32C -:1025F20002D932FDF10104F42114A9318D12A9315D -:102602008E616B08616A08BB17C15002C1500EC1CE -:10261200506CFD0304100650A5FDA3025004C150E6 -:102622006CFD3103C0629C07E932FD0909224E07A5 -:1026320061C308E932FD0902224E0717040300C1F3 -:102642005004C1500CC1506CFD03041006F6BB17B8 -:10265200C15002C1503EC1506CFD03041006100867 -:10266200C6D7C7C1FBF8FF8F12F94F02F961F8ED27 -:102672001E274014F928DE06A014F9ED1E27F514D2 -:10268200F98F02F99F12F98F02F95070D612307346 -:1026920051230480001231FF318E039F13F99FE012 -:1026A200FBF6BB8F13F97C804C95DC1B8F13F93141 -:1026B2008F241400BDD8AF06F9FD930D1231FF31FE -:1026C2008E03318FBBEF198F13F9318F241400BDA4 -:1026D200D8AF08F9FD930D1231FF318E03318FBB54 -:1026E200D904F9F1610900BB44000171FEDC03F673 -:1026F20090BB8C0101DE02F6BBABABBF8CFC17C1F9 -:102702005002C1500CC1506CFD03041006D2DF0808 -:102712008F02F99F12F9EF047100E4FBF2C0C6D7F1 -:10272200C72006FBF8FF4023F901DF0BCFE1FB6373 -:10273200CFE3FBC8ED7C284023F902DF2C17040409 -:1027420000C15002C15004C1506CFD5B031006D29F -:10275200DD06CFE1FB63EF0A8C049FE1FB8C059F52 -:10276200E2FBCFE3FBC8ED7C2817040400C1500252 -:10277200C15004C1506CFD5B031006D2DD11710023 -:10278200E4FB710320F5E1FB712022F9ED51288C65 -:1027920004318E318D080E05081C00BF0CF9D932A8 -:1027A200FDF1041022148972AF0CF9FDE60EBF0C84 -:1027B200F99C04D1DF08CC0401CC0500EF058F0C95 -:1027C200F99C0517040200C15002C1C1506CFD5BA7 -:1027D200031006D2DF798C029FE3FB8C02318E312B -:1027E2008D080E03081C00BF0CF94401A5DC09CCBE -:1027F2000164F6BF16F9EF57AF0CF92216F944013E -:10280200A0DC09CC011EF6BF16F9EF43AF0CF94468 -:10281200819DDC0BCC010A30F401BF16F9EF30AF19 -:102822000CF944019BDC0BCC010530F401BF16F915 -:10283200EF1DAF0CF9440191DC0BCC010030F40127 -:10284200BF16F9EF0A712022F930F401BF16F931EF -:1028520032040D31140509CFE1FB64F5E2FBEF1AF6 -:102862008C044E01DE0C8C049FE1FB8C059FE2FB85 -:10287200EF088C019FE1FBF5E2FB40E1FB51DC0636 -:10288200CF38FC0FEF3540E1FB33DC06CF38FC0BD1 -:10289200EF2940E1FB0BDC06CF38FC07EF1D40E1DE -:1028A200FB0661D831320406CF38FC03EF0DD5E1C7 -:1028B200FBDD05E538FCEF03F538FC8F18F94FE135 -:1028C200FBDD2B40E1FB0BDE064018F90BDE164068 -:1028D200E1FB06DE064018F906DE0AD5E1FBDF0E53 -:1028E200D518F9DD095020C15011FDFC37C08FE128 -:1028F200FB9F18F9D520F9DF05715320EF3340E132 -:10290200FB0BDE03E6EF01F66061FB7161207114DF -:102912002071672061C831522017715220716420E2 -:10292200711120F171642061DC70C15012FDB60595 -:10293200C01006C6D7C75007C15002C15084FDCD92 -:102942000310045012FDA302500FC15002C1508463 -:10295200FDCD0310045003FDA302501FC15002C15C -:102962005084FDCD0310045016FDA3025003C15044 -:1029720084FD3103C0625C01D1DD107170E5FB5052 -:1029820002C15013FDFC37C0F2EF01E2C6D7C750B7 -:1029920004C15084FD3103C0625C03D1DD40501498 -:1029A200FD292A34E5FB895C9F998A0C7CFF50FF44 -:1029B2005C14D1DD228A0C7CFF5C147234E9FB8941 -:1029C200616A997162075600316207058666D1DF36 -:1029D200F7716307716B2734F8FB895CEB9950023E -:1029E200C15084FD3103C0D2DD335017C15002C142 -:1029F2005084FDCD031004E0FDA3025007C1500234 -:102A0200C15084FDCD0310045033FDA302F0C15028 -:102A120002C15084FDCD0310047178E5FBE0C15082 -:102A220013FDFC37C0C6D7C7C12004FBF8FFCC0298 -:102A3200005004C15084FD3103C0629C038C045CCD -:102A420020D1DD0E8C036C019C038C026C209C0255 -:102A5200EF138C045C10D1DD0C8C035CFE9C038CA8 -:102A6200026C109C028C045C08D1DD0E8C036C029B -:102A72009C038C026C089C02EF138C045C04D1DD75 -:102A82000C8C035CFD9C038C026C049C028C03D1B5 -:102A9200DD05501AFDA3028C0370C15004C150849D -:102AA200FDCD0310048FE5FB5C9F728C03318E31E8 -:102AB2006D148C03318E314D616D08616C5C606107 -:102AC20062629FE5FB8FF1FB7CFF50FF5E02D1DD6E -:102AD200278FF1FB7CFF5E027234E9FB89616A9900 -:102AE200716207CC0100316207086159018C01D182 -:102AF200DFF4716307716B27F21006C6D7D9D9FBD1 -:102B0200C15006C15084FDCD031004D9DAFBC15077 -:102B120007C15084FDCD031004D7FDFF2AF2D771FF -:102B22001300711B20710303710205E0C15003C140 -:102B32005084FDCD0310045013FDA302F0C15005D3 -:102B4200C15084FDCD031004500FC1E0C15084FD7B -:102B5200CD031004500AFDA3027103055008FDA322 -:102B620002501FC1E0C15084FDCD0310045012FD7C -:102B7200A3025003C15084FD3103C0625C01D1DF66 -:102B820002E2D75003C1C15084FDCD03100471028B -:102B920003711A20FDE92CF50AF9F2D75003C1504E -:102BA20084FD3103C0625C01D1DD195014FD292A74 -:102BB200FD90295014FDA302E0C15003C15084FDD1 -:102BC200CD031004711300711B207103035014FD17 -:102BD200A302F0C1E0C15084FDCD031004F0C15046 -:102BE20003C15084FDCD031004D7C72004FBF8FFB6 -:102BF200CC02008F0AF99C035010C150A4FD31038E -:102C0200C0629F0AF9D543FBDD04F2EDC62C8C03AA -:102C12007F0AF95C08D1DD108F0AF95C08D1DF0563 -:102C2200CC0210EF03CC02208C037F0AF95C04D1A2 -:102C3200DD168F0AF95C04D1DF088C026C049C0259 -:102C4200EF068C026C089C028FE4FB5CF3728F0A25 -:102C5200F95C0C6162629FE4FB8FF0FB7CFF50FF2A -:102C62005E029C02D1DD1F34E8FB896E029971621B -:102C720007CC0100316207086159018C01D1DFF4F0 -:102C8200716307716B278F0AF95C40D1DD0950022D -:102C9200C15012FDFC37C08F0AF95C01D1DD08E09A -:102CA200C15012FDFC37C0717AFA8F0AF95C41D12A -:102CB200DD11340AF9895CBE99D90AF9C15010FDB7 -:102CC200B605C0F21004C6D7FD3729F2D7FD902908 -:102CD200F2D7C78FF8FB7617FD292A664FF8FBDF7C -:102CE200F2F5F8FBF2C6D75064FDA30240E1FB0BFC -:102CF200DE03E6EF01F66061FB711120F171142031 -:102D020061DC70C15012FDB605C0FDC039CF49FC6F -:102D120003D77100010571785005713AD5713BD125 -:102D2200713ADD713BD98F10055CFC9F1005CF54C1 -:102D3200054AE5420571104205710042057148508D -:102D4200057130500571205005CF530505CF52054E -:102D52000A7130510571205105713BD571705005D2 -:102D62008F11055CFC9F1105D77178500571080120 -:102D720005D77140F00071783002713AE6713BE29A -:102D8200713BEA713BEE8F10055CFC9F1005CF345E -:102D9200024AE552FF711A52710A527148300271A9 -:102DA20030300271203002CF330205CF32020A7175 -:102DB200303102713BE6717030028F11055CFC9F6D -:102DC200110571603002D7717830027148F000D776 -:102DD200C788061666614FDD0967614EDE0396EF0E -:102DE20001866672C6D7C7161714AA0412A943DD54 -:102DF20029AA0412A923FDB04FC3AC02FDB04F13A0 -:102E0200C2BDD813FD630FDE0C1714AA0212AA0466 -:102E120003BA04EF051714A9BA04AC041231FF3146 -:102E22009E03317F087208C6D7C771201205712030 -:102E320011057100F200304400BFB601300188BFB5 -:102E42009001300984BF9E01BF9C01BF9A01BF98C7 -:102E520001BF9601BF9401BF9201F53CFF30FE0015 -:102E6200BFBE01F6BFBC01BFB80150EEBFBA01A19F -:102E7200BFB201C918FE00711022F94023F901DF27 -:102E820006711822F9EF0B36100571A461D871187A -:102E920022F97128100571281105F6BE6EBE64BEB6 -:102EA2006A7123047153078F22F9310507F5FFFB7D -:102EB200CB6CFF00713321C6D730EF00BFB401F6EF -:102EC200BFBA017108F200712304715307715301F3 -:102ED200D7714321D9FFFBF1E7240000DD1223DD86 -:102EE2001923DD1123DD2623DD3423DD3923DD3FE4 -:102EF200FD6E2FEF3DFD912FEF38D9FEFBC1AE6C79 -:102F0200FDD22DC0F313BE6C712321EF25F0C1AEAB -:102F12006CFDD22DC0F313BE6C712321EF14F6BEEB -:102F22006C712221EF0CCB6CFF00712321EF03FDAA -:102F32000E308F22F9311508712421712104EF0618 -:102F4200712421715101314421218F22F93115104F -:102F5200F6BE64BE6A3124210390EF01F6BE6ED73D -:102F620031242104F690EF01F6BE6AD7CF3AFD472D -:102F7200F5AAFBAE6C317DBFB0FBFDE32FD2DF0EB5 -:102F8200D9FEFBC1AE6CFDD22DC0F313BE6CD7FDD2 -:102F9200E32FD2DD0FCF3AFD47F5AAFBAE6C317DB0 -:102FA200BFB0FBD7E9AAFB091E225080D6BFACFBFB -:102FB20022B0FBBDD8304700FDCF0DBFAEFB30AC19 -:102FC200FBFDE82DF313BE6CB03AFDD53AFDDF10E0 -:102FD200CF3AFD47A0AAFB40AAFB1F61C8F5AAFB96 -:102FE200D740E1FB0BDC05712321F2D740E1FB0660 -:102FF20061D831120511F0C1AE6CFDD22DC0F313B0 -:10300200BE6C712221EF03FD0E30E2D7714221F036 -:10301200C1AE6CFDD22DC0F313BE6CA0B2FB40B2A8 -:10302200FB40DC3DF5B2FBD9B3FBF1313F0436FD89 -:1030320014D9B3FBF1BDD85008FD1E0E087208E684 -:10304200D2DD040192DFFC896158D1DD05712221B4 -:10305200EF03712321A0B3FB40B3FB2061C8F5B39A -:10306200FBD78FB4FBB0B4FBD1DF7331D4D106717F -:103072005BD1E5B6FBD5B6FBDD347140E4FBD9B5D7 -:10308200FBF1E734020023DD0625DD0325DF05F62B -:10309200BE66EF06D9FEFBF1BE66A0B5FB40B5FBEE -:1030A20020DF06F5B5FBB0B6FBCFB4FB19D7CFB422 -:1030B200FB1E7148E4FBD500FCDF04F6BE66D7D9DF -:1030C200FEFBF14266FFDD16D9FEFBF112AE66434E -:1030D200DE05A266FFEF03B266FFCFB4FB03D73172 -:1030E200442101D74020F902DF10F6BE64BE6EBE55 -:1030F2006ABFBEFBBFC4FBBFCAFB31342139F6BF76 -:10310200BAFBBFC0FBBFC6FB22BEFB1231FF31AE12 -:1031120003316FBFBCFBF622C4FB1231FF31AE0399 -:10312200316FBFC2FBF622CAFB1231FF31AE03314F -:103132006FBFC8FBEDF33131642110716321710857 -:1031420004FCF5B8FBF5B7FBEDF331D5B7FB61E84D -:10315200EDF0318F46FB9FB7FB40B8FB1FDC1A71C5 -:103162000004FC4048FBFFDD22A0B9FB8F48FB4F67 -:10317200B9FBDE17F5B8FBEF12D9B8FBF1A1605C21 -:103182001F9FB8FB710804FCF5B9FBE9B8FB094ABB -:10319200FB5080D6BFBAFBE9B8FB096AFB5080D668 -:1031A200BFC0FBE9B8FB098AFB5080D6BFC6FBAFA4 -:1031B200BAFB22BEFB12D947FBF133BDD813FDCFB8 -:1031C2000DBFBCFBAFC0FB22C4FB12D947FBF133DE -:1031D200BDD813FDCF0DBFC2FBAFC6FB22CAFB1287 -:1031E200D947FBF133BDD813FDCF0DBFC8FBB0B734 -:1031F200FB8F22F931151F30C6FBFDE82DF313BEFC -:103202006430BAFBFDE82DF313BE6E30C0FBFDE85F -:103212002DF313BE6AD730C6FBFDE82DF313BE6A49 -:10322200D7C73152210BD5CCFBDD06B0CCFBEDEA82 -:1032320032715321D901FCF1E7240000DD0F23DDB7 -:103242001B23DD1123DD5723DD2923DD3B5600F54A -:103252003BFDEDD6325601F53BFDEF78D53BFDDF68 -:10326200075601E53BFDEF055600F53BFDCFCCFBD4 -:10327200FAEF61D53BFDDF0B5601E53BFDCFCCFB01 -:10328200FAEF51F501FCEF4CD53BFDDF0B5600E5A3 -:103292003BFDCFCCFBFAEF3CCF01FC02EF36D93934 -:1032A200FCF1E7240000DD0923DD2423DD0A23EFFE -:1032B2001E5600F53BFDEF1CD53BFDDF075601E531 -:1032C2003BFDEF055600F53BFDCFCCFBFAEF055673 -:1032D20001E53BFD8F22F93115086661FB7151074B -:1032E200EF066661FB710101C6D7C736F00071F4C3 -:1032F200DC297170F000CE9D08CE9EC0CE9F80F575 -:1033020094FFF593FFF592FFE597FFE596FFE595AC -:10331200FFE598FFCE9C7F7100D8FB711BE3712BF8 -:10332200E3711AE7712BE7717A9D710A9E31929EC1 -:1033320002EFFA710B9E717321710322711322C67F -:10334200D7C73172211E717221710A9E31929E027B -:10335200EFFA3406FC3692FF52078B99A5A792DF4B -:10336200F9710B9EC6D7C788061631022215710263 -:1033720022C734CEFB3092FF1652078B99A5A79233 -:10338200DFF9C666736718CEFBC6D7C771732131E2 -:1033920004221E710322710A9E31929E02EFFA34B8 -:1033A20092FF36CEFB52078B99A5A792DFF9710BDC -:1033B2009E31142213711322717B9E8F0EFC9E9AF2 -:1033C2008F0FFC9E9B717A9EC6D7CFD9FB5CCFDA5A -:1033D200FB5FCFFAFB20CF2EFC36CF2FFCC9D7C71D -:1033E200CFD6FB11CFD7FB0FCFFEFBFFF5FFFBF5CF -:1033F20000FCF501FCF502FCCFFBFB20F5FCFB56C3 -:1034020000664C64DE08723846FB0086EFF3C6D7CE -:10341200C788061617F1E73403002361E3ED40374E -:103422002361F8EDF634B12361E3EDFD342561F853 -:10343200ED0C3524070024070061D8ED4037240B3A -:103442000061F8ED2D352361F8ED74352361F8ED57 -:1034520041352361F8ED18372561F8ED2C372561E8 -:10346200F8EDDD35B12561D8ED013624000061F8B3 -:10347200ED0E362361F8ED40372402002361E3EDBF -:1034820033362361F8ED44362361F8ED5536236176 -:10349200F8ED44362361F8ED66362361F8ED7736B0 -:1034A2002361F8ED86362361F8EDA8362361F8ED45 -:1034B200B4362361F8EDC0362361F8EDC936240233 -:1034C200002361E3ED403724020061F8EDD1362399 -:1034D20061F8EDDD362561F8EDE936240A0061F880 -:1034E200EDF53624120061F8ED12372361F8ED0094 -:1034F20037ED4237679FD8FBED4C37301C2BFDA2CE -:103502003C66736718D6FBED4C3740DBFB6ADF1471 -:1035120040DCFB68DF0E674C6CDF09305645FDA2CC -:103522003C713AD5679FDDFBED4C3767D1DD063044 -:10353200AE40FDA23C34F6FB89616F99ED4C3767D2 -:103542005C02D1DD0830CA2CFDA23CEF0C675C01A5 -:10355200D1DD0630CF2CFDA23C675C3CD1DD1030C2 -:10356200D42CFDA23C675C3C7266736218D6FBEDFC -:103572004C3767D1DD625C01D1DD05300800EF0117 -:10358200F6609F35FC675C02D1DD03E6EF01F6349D -:1035920035FC89616899675C04D1DD04E6A1EF011D -:1035A200F63435FC89616899675C08D1DD05302005 -:1035B20000EF01F63435FC89616899675C10D1DD52 -:1035C20005301000EF01F63435FC89616899675CBB -:1035D20020D161E8716035FCED4C37D51AF9DF096D -:1035E200679FFFFBA01AF9EF13401AF905DE0DD908 -:1035F2001AF9F1B112674836FDA01AF9ED4C376796 -:103602005C0F7266736218D6FBED4C37401AF96490 -:10361200DE1F401AF901DF0667D161F85701E91A86 -:10362200F9671846FBA01AF9401AF90561C87162D8 -:1036320021675C7F70C117F1243000FD6833C0ED53 -:103642004C37675C3F70C117F1243000FD6833C00E -:10365200ED4C37675C0770C117F1243000FD683309 -:10366200C0ED4C37675C1F70C117F1243000FD6854 -:1036720033C0ED4C376770C117F1243000FD683359 -:10368200C0ED4C37CEABAC710A9E31929E02EFFA7E -:10369200D592FFDF05710B9EEFED679E99710B9E30 -:1036A2009F0DFCED4C37711222675C7F9F0EFCED83 -:1036B2004C37711222675C3F9F0FFCED4C37675C01 -:1036C2003F9F10FCED4C37675C1F9F11FCEF7B3076 -:1036D200A03EFDA23C679F16FCEF6F305B3EFDA251 -:1036E2003C679F17FCEF63307D3EFDA23C679F1A4B -:1036F200FCEF57675C01D1DD51FD5E48EF4C403075 -:10370200FCC8DE46E930FC671874FAA030FCEF3AD8 -:10371200679F30FCEF3467318E247200DF06306E13 -:1037220009FDA23C679FF9FBEF208FFCFB617F5CE8 -:1037320010D161E8CF49FC03679FFCFBEF0CEF0A55 -:10374200664C5ADE05736718D6FBC6D7C716664C99 -:1037520030DC094C37DE05FD4333EF67664C02DF90 -:103762001F8FD8FB5C03728F37FC5C03318E316D87 -:1037720008616A08128F37FC5C80312A6162EF4966 -:10378200664C3DDF0AAE90BF32FCF932FCEF3A667E -:103792004C3EDF05F933FCEF30664C4FDF05FD820E -:1037A20048EF26664C61DF09E930FC0974FA72EFD2 -:1037B20018664C7FDF0D302741FDA23C713AD5528D -:1037C2004AEF06667309D6FB72C6D7C78806161774 -:1037D200F1241000240500DC07244C00DD17EF184B -:1037E200717BFA17F104D6FB1489617F99717AFA19 -:1037F200712222EF03A030FCC6D7C7C1C1FBF8FF7C -:103802004020F903DD064020F904DF2F8C02730902 -:10381200DEFB5E0AD1DF248C02318E04D6FB1489D2 -:103822006E0A99716207CC01003162070861590181 -:103832008C01D1DFF4716307716B271004C6D7CFF7 -:1038420037FC03F535FCF539FCF53BFCD7C7880698 -:103852001617F1E734020025DD3E23DD1825DD1DB4 -:1038620023DD0523DD2CEF3C715222679F3AFCCF0A -:1038720049FC03EF2F675C839F37FCEF27675C03EC -:103882009F39FC675C034C0261F8715221FD2332BF -:10389200EF12679F3BFCEF0C6791DF08E0C150120B -:1038A200FDFC37C0C6D7C71617F1E7240000DD3A82 -:1038B20023DD23240300DD0C240200DD2224F90091 -:1038C200DD2FEF3031020705308000EF01F6086F7F -:1038D20038FC7208EF248F35FCF535FC72EF1B8F34 -:1038E20043FC9F44FCF93AFCEF107142235235EF3E -:1038F20009F2EF0666730934FC72C6D7C71617F1D0 -:10390200E7240000DD38241000DD1C23DD1C23DD4C -:1039120030240E00DD18241100DD1B240F00DD12FF -:10392200243000DD15EF1EE2EF1D5202EF195204A2 -:10393200EF155206EF115205EF0D5207EF09F2EFA4 -:10394200065203EF0252FFC6D7C731342241713308 -:10395200228F48FC9FDEFB8F47FC9FFDFB3642FD1A -:10396200C7D947FCFD473B618A70618AFD8C3BC029 -:10397200D94BFCF1312F609F4AFC8F46FC4F4AFC29 -:10398200DD0D7142228F4AFC9F46FCCF49FC034069 -:1039920049FC05DE0A30CD39FDA23CCF49FC6BB0B3 -:1039A20049FC7150F000CE300BCF170006CE310625 -:1039B200FD0D03717A30710BE3710BE7C6D78F4AA5 -:1039C200FC9F46FC8F4AFC9FDFFBD7C74020F903D0 -:1039D200DF064020F904DF04F2EDC23A8FFCFB5C03 -:1039E20010D1DD0C8F4AFC9F4FFC7148FCFBEF614C -:1039F200314422247143227163228FFCFB5C04D187 -:103A0200DD088FFBFB9F50FCEF068F4AFC9F50FCAA -:103A12008F50FC9F4FFCEF39315422237153227196 -:103A22006222D53AFCDF05F551FCEF0B8F3AFC50D0 -:103A320002D6A1609F51FC8F51FC9F4FFCEF1231C7 -:103A42006422088F51FC9F4FFCEF068F50FC9F4F62 -:103A5200FC8F4FFC9FDFFBD54FFCDF05F53AFCEFF7 -:103A62001A404FFC05DE06CF3AFC02EF0ED94FFC9E -:103A7200F11231FE03311F609F3AFC8F53FC4F3A23 -:103A8200FCDD23571F8F3AFC9F53FC5600664C08FF -:103A9200DE1073097E224F3AFCDC046677EF038660 -:103AA200EFEB679F43FC8FFCFB5C01D1DD03F2EF80 -:103AB2000FE94FFC093E2270C15013FDB605C0F25A -:103AC200C6D7C7168B728C01614ADE248B728C02B8 -:103AD200614ADE188C01728C02614ADE068C013169 -:103AE2008EEF048C02318E087208EF268B72EF2261 -:103AF2008B728C02614ADE048B72EF168C01728C1F -:103B0200026142DE068C01318EEF048C02318E0896 -:103B12007208C6D7C716710AE7710BE37150F0003D -:103B2200CE300BCF170006669E31FD0D03717A3041 -:103B3200710BE33182E302EFFA8D1F7158F00071CD -:103B42000BE772C6D7C7C1C1FBF8FF8F2EFC4E022E -:103B5200DC03F2EF318C024F2FFCDC0452FFEF2624 -:103B62008C022F2EFC706131318D128F2FFC2F2E83 -:103B7200FC70613133BDD813FDF10DBB440001DC93 -:103B820003F690BB8B721004C6D7C7C1C1FBF8FF06 -:103B9200AC0A14A91489708C026128706131FDB0DD -:103BA2004F1344030071FEDC24AC0A148A04819A88 -:103BB20004AC0A148A044C11DC11A9148C0299ACCD -:103BC2000A14CA0200AC0A14CA0310EF74AC0A1435 -:103BD200CA0400AC0A14A914894E02DE0AAC0A1403 -:103BE2008A02819A02EF13AC0A14A914894E026167 -:103BF200D308AC0A148A02919A02AC0A148A03917D -:103C02009A03D1DF3CAC0A148A024C10DF10A914CB -:103C120089318EA112AC0A14A9146299EF17AC0A69 -:103C2200148A024CF0DF0EA91489318EB112AC0A4B -:103C320014A9146299AC0A14CA0200AC0A14CA0389 -:103C4200101004C6D7ED8D3C717BFAC7D55EFC61BE -:103C5200F831742230717422711123717322D55E8E -:103C6200FCDD06B05EFCCEABAC717AFA5600664C57 -:103C72000ADD1272F3311C7948FDCEFC0061CAFDE7 -:103C8200EC3C86EFE9717AFAF2C6D7C75600664C69 -:103C920010DE0BF0317E12F67860FC86EFF0C6D7AC -:103CA200C7C1C1FBF8FFCC01008C014C10DE36719C -:103CB2007BFA8C01F0317E0460FC14A96168DF0993 -:103CC200AC02B9717AFAF2EF1D8C01F0317E1279F1 -:103CD20060FC614902DF06717AFAE2EF09717AFA51 -:103CE200615901EFC4E21004C6D7C72004FBF8FFF4 -:103CF200F64260FC61F8EDD13D717BFA9C038C03C6 -:103D02004C10DE3C8C03F0317E0460FC14A9616827 -:103D1200DF05717AFAEF29717AFA8C0372F3311C9A -:103D22007960FCCEFC0061CA629C02D1DF0A8C037E -:103D3200F0317E12E67860FC717BFA615903EFBEC6 -:103D4200CC0200CC01018C02F0317E0460FC14A98B -:103D52006168DD7B8C02F0317E127960FCE743DF23 -:103D6200688C014C10DE628C01F0317E127960FCAD -:103D7200E743DD50717BFA8C01F0317E0460FC1464 -:103D8200A96168DF1B616901717BFA8C01F0317EE8 -:103D920012F67860FC717AFA8C024E01DCE7EF2FA2 -:103DA2008C01F0317E0460FC14A9128C02F0317E89 -:103DB200337860FC8C01F0317E12E67860FC615948 -:103DC20002717AFA615901EF98615902ED483D009A -:103DD200F21004C6D7C72006FBF8FF341BFCC550FF -:103DE20006C150A8C15030FD5B031006D2DD1DA0F4 -:103DF20080FC4080FC08DE03E2EF5A3416FC895C4A -:103E0200FC99FDA03E7110E4FBF2EF49F580FC8FB6 -:103E120016FC5C01D1DD264020F903DF205010C1E1 -:103E220080FDFC37C0C736100571D4C6DE0F17C13E -:103E32005006C150A8C15030FD5B0310064020F966 -:103E420001DD114020F905DD0B8F16FC5C02D1610A -:103E5200E8FD5B45F21006C6D7D917FCC15030FD0C -:103E62003103C0629F1AFC7130E7FB8FEFFB5C08E5 -:103E7200D1DF06716307716B27F2D7D91AFCC1D95A -:103E820019FCC15030FDCD0310047130E7FB8FEFF8 -:103E9200FB5C08D1DF06716307716B27F2D7C7207D -:103EA2000AFBF8FF500FC15030FD3103C04043FB05 -:103EB20002DF077110E4FBF2EF547118E4FBCC0748 -:103EC20000CC0812CC09808F16FC5C03D1DF08718C -:103ED2007AD5CC0607EF06717BD5CC062F170406E0 -:103EE20000C15004C150A0C15030FD03041006C7E8 -:103EF20036100571D4C6DE154020F903DF0F17C155 -:103F02005006C150A8C15030FD5B031006F2100AE2 -:103F1200C6D7C74020F902DF04F6BF84FCB05CFDBF -:103F2200D55CFD61E8ED2440CF5CFD048F20F931C2 -:103F32008FE723DD0B24020024030061C8ED244037 -:103F42003028004284FCDF0AE0C15010FDFC37C07B -:103F5200EF2530FA004284FCDF0B5002C15010FD05 -:103F6200FC37C0EF128FFAFB5010D604FA004284DD -:103F7200FC61D8712022F931340709712323F6BF7D -:103F820084FCEF1731242306F6BF84FCEF0DA284D4 -:103F9200FCF64284FCDF04B1BF84FC8F23F9318F2D -:103FA200E7240000DD0623DD0D23DF123610057144 -:103FB200C4713123EF0B710402713123EF037132AB -:103FC200233132231A4086FC0361D8A086FC408646 -:103FD200FC02DF0E5004C15010FDFC37C0EF03F5A8 -:103FE20086FC3134231A4088FC0361D8A088FC4047 -:103FF20088FC02DF0E5008C15010FDFC37C0EF03F1 -:10400200F588FC314207184087FC0361D8A087FC81 -:104012004087FC02DF0C5010C1FDFC37C0EF03F5F6 -:1040220087FCC6D7C736100571D4DE0730D73DFDF1 -:10403200A23CD24020F903DF413122070630EC2BAB -:10404200FDA23C3144230C7143235080C15012FD28 -:10405200FC37C0D58AFCDD05B08AFCEF1DCF8AFC97 -:10406200068F37FC5C01D1DD118F43FC4F44FCDD30 -:10407200095040C15012FDFC37C04020F903DD0554 -:10408200F6BD1AEF25D502FCDF09F6461ADD1BB68E -:104092001AEF17D9FEFBF1461ADD0FD9FEFB12AD5E -:1040A2001A43DE04A61AEF02B61AC6D7C78FF6FB6A -:1040B20076F5F6FB5C10D161E8715223665C0FD194 -:1040C200DD60665C01D1DD05F520F9EF55665C0225 -:1040D200D1DD15E0C15003C15084FDCD0310047140 -:1040E2001300711B20710303665C04D1DD1271138E -:1040F20000711B20D537FC61F8710303CF37FC0335 -:10410200665C08D161E87103035005FDA3027102E8 -:10411200035003C1C15084FDCD031004711A20FD68 -:10412200E92CF2C6D7C7364105718461D8EDCB417F -:104132003641057194DE0771405005CEABAC31B209 -:10414200D104E2EDDA41713BD1CEABAC401AF909B0 -:10415200DE77D51AF9DF618F22F93133088F23F91F -:104162009F4005EF04CF400504F0C15084FD3103A8 -:10417200C0629F8EFC8F32FD9F8FFC3690FCC75031 -:1041820002C15008C1506CFD5B0310068F8CFC9F6E -:1041920092FC8F02F99F93FC713420E66130127118 -:1041A200042061DC31196162629F94FC8F22F93133 -:1041B20069317A9F95FCEF0BD91AF9F112498DFCFE -:1041C2009F4005A01AF9E2EF0F7160500571485047 -:1041D20005713BD5F51AF9F2C6D7C78F20F9318F91 -:1041E200E724000061F8EDAD4323DD1B2361F8ED08 -:1041F200B4422361F8ED32432361F8ED7B4323613E -:10420200F8ED4A44EDAD43D521F9DF2BF64284FCAB -:10421200DD05F55EFDEF03A05EFD405EFD65DC0998 -:10422200F520F9717222EDCA44AF84FC440A0061A0 -:10423200D8EDCA44E521F9712223F55EFDF5F9FBBB -:10424200FD2705714320FDFB234023F903DF09719C -:104252007222F520F9EDCA44FD222740E3FB9BDEE2 -:1042620009717222F520F9EDCA44714A2771401191 -:104272000571301105713A22715A22711A2EFD21EF -:104282002BD2DD09717222F520F9EDCA4471103585 -:1042920000CF37001D714012054021F901DF05F5FD -:1042A200FFFBEF04CFFFFB03CF20F902FDFF2AED56 -:1042B200CA44FD142DFD742D714A9DFD4138FDE166 -:1042C20033F537FF712BE0F521F9717222CBE43F10 -:1042D200EFCBE6F6F0FD2705713BD48F22F93105CD -:1042E200305004C15084FD3103C0625C03318E3111 -:1042F2005D34E5FB896168995002C15084FD310348 -:10430200C0D2DD067170E5FBEF047178E5FBFDFBC1 -:1043120023FD2B2E710822F9CF20F9038FD8FB5CE5 -:1043220002D1DD095080C15010FDFC37C0EDCA44F6 -:10433200FDCC4431A4E020712BE031020C05FD4696 -:1043420045EF145027C15005C15084FDCD03100420 -:10435200CF20F9047172223154230BA098FCD59816 -:10436200FC61F8FD4645FD39458F22F9314507319B -:10437200040703F520F9EDCA44FDCC4431020C18C0 -:10438200F0C15005C15084FDCD0310045005FDA3BA -:1043920002FD4645CF20F903FD39458F22F931450B -:1043A2000731040703F520F9EDCA44F520F9CFFFE0 -:1043B200FB03F500FCF502FC713221F6426CFF6151 -:1043C200E8EDCA44712822F9F516FCFDA03EFDBBBA -:1043D2002EFD6B2DFDC92D714B9DF5E6FBF5E7FB1F -:1043E200F5E8FBF5E9FB31042102EFFACE3708CB01 -:1043F200E4BFFFCBE6FFF1CED4FFCF37000971480F -:104402001205F6BEE0BEE2BED0716A27FD9E2B7198 -:104412004307714B27714810057148110571381017 -:104422000571381105713302713B22715302715BC0 -:104432002271130E711B2EFD9005F55EFDCF20F942 -:1044420005712223F6BF84FC3102072CFDFB23AF4A -:1044520084FC440A00DC06E521F9E520F9D523F9BC -:1044620061E8FD90058F22F931455D502EFDA302D2 -:10447200E521F9E520F9EF50D50BF9DF4BF521F9EC -:10448200FD9005FD7F237173017132043112050223 -:10449200EFFA71430271032071422031949E02EFC0 -:1044A200FA712AE7CEA409F5F30061FD310407038E -:1044B200712323E5F300CEA408712BE7E520F98FE1 -:1044C20022F9314503F520F9C6D7D599FCDF1E3113 -:1044D2000200195003C15084FD3103C0625C01D156 -:1044E200DF07F520F9717222D7E599FCD74099FCD4 -:1044F200F0DF083104003FF599FCD74099FCC8DF92 -:104502000BF520F9717222CF99FCF0D73102000429 -:10451200A099FCD7F0C15004C15084FDCD03100412 -:104522008FE5FB5C9F9FE5FB7110F6FB30AE40FD13 -:10453200A23CCF99FCF0D78F22F9312506F520F95C -:10454200717222D7715323F598FC717207FD0D0326 -:10455200717307D7FDFD05F2D7C7200CFBF8FF8F5B -:104562001CFCF0F91BFCF303FDB04F13BC048F1EBF -:10457200FCF0F91DFCF303FDB04F13BC028F20FCCD -:10458200F0F91FFCF303FDB04F13BBAC04BDD8F62A -:10459200BDDAAC04311EBDDCF6BDDEFDA40DADD826 -:1045A200BDDCADDABDDEAC02BDD8F6BDDAAC02319F -:1045B2001EDADCC3DADEC3BDDCF6BDDEFDA40DC04F -:1045C200BDDEC0BDDCADDEFD1A0FADD8BDDCADDA9F -:1045D200BDDEABBDD8F6BDDAAB311EDADCC3DADE46 -:1045E200C3BDDCF6BDDEFDA40DC0BDDEC0BDDCADCD -:1045F200DEFD1A0FDADAADD8FDAC49C3C58F26FD50 -:104602005C3FF0317E04A6FC14C2C0B9A026FDF6C0 -:10461200BC08BC0A9C078C074C2EDD3E8F26FD0E83 -:104622000770F161DC605C3FF0317E1279A6FCBD5F -:10463200D8F6BDDA8C0773098822318FBDDC70BDD4 -:10464200DEFDA40DAC08BDDCAC0AFD1A0FADDABC70 -:104652000AADD8BC08615907EFBCAC08BDD8AC0A9A -:10466200BDDAC9DC0004F6FD6E0EC9DCFFFFF6FD03 -:104672006F0FADD8BFA0FCAF9AFC42A0FCDD12AF19 -:104682009CFCBF9EFCAF9AFCBF9CFCAFA0FCBF9AF7 -:10469200FCAF9CFC429EFCDC50AF9AFC429CFCDED0 -:1046A20048AF60FD429AFCDE404064FD16DC1F40CC -:1046B20064FDA0DE168FA2FC4F64FDDE0EAF9AFCF5 -:1046C20022A4FC44691061C8FD3447F564FDAF9A29 -:1046D200FC445146DC0BAF9AFC241027BF62FDEF6D -:1046E2001930F82ABF62FDEF114064FDFFDD03E6D9 -:1046F200EF01F63464FD89610899AF9EFC429CFC8F -:10470200DC1BAF9CFC429AFCDE13AF9AFC4262FDBA -:10471200DE0BF5A2FCAF9AFCBFA4FCEF1140A2FC99 -:10472200FFDD03E6EF01F634A2FC89610899100C63 -:10473200C6D7C72006FBF8FFA021FCD521FCDF1C51 -:10474200A022FCD522FCDF14A023FCD523FCDF0C25 -:10475200CF21FCFFCF22FCFFCF23FCFF717BFA713C -:104762000A9E31929E02EFFA8E98FD830F9C039F60 -:104772002AFD8E949F65FD8E969F66FD8E979F679C -:10478200FD8E939F28FD8E929F29FDFD154913BC36 -:1047920004BDD8F6BDDA46DADF03B146D8DF198C9C -:1047A200035C0391DF03E6EF01F6046D01313D1274 -:1047B2000103B1BC046169038F68FD4E03DF12AFD0 -:1047C2002CFD614904DE40AC04222CFDFD3648EF8D -:1047D200368C03318EB112D968FDF143DF1E8C0392 -:1047E2005C0391DF03E6EF01F6046D01313D120136 -:1047F20003222CFD610904FD3648EF0B8F68FD4E44 -:1048020003DE04F6FD36488C039F68FDAC04BF2C22 -:10481200FDD927FDF1010424F9BB14A944FFFFDFF0 -:1048220004E6B9EF0BAB14A944FEFFDD03A9A1B95D -:104832001006C6D7C7161744A90061C836A800A03B -:1048420027FD4027FDA861C8F527FDF927FDF331B3 -:104852001CF67824F9B7F647DFE5C6D7C756A896FF -:1048620066F0317E12F6B17824F966D1DFF1F521D6 -:10487200FCF522FCF523FCF527FDC6D7716323D78F -:10488200C72004FBF8FFD91AF9F1E7240000DD1173 -:1048920023DD1C23DD2123DD2623DD2F23DD34EF61 -:1048A2003A8F27FD9F2EFDA01AF9F965FDEF60A052 -:1048B2001AF9F966FDEF58A01AF9F967FDEF50A051 -:1048C2001AF98F2AFDFD9D0F72EF44A01AF9F928FB -:1048D200FDEF3CA01AF9F929FDEF34F92EFDF33171 -:1048E2001C7924F9BB316223058B9C03EF128C01E6 -:1048F2009C03D52EFDDF06CF2EFDA7EF03B02EFDC4 -:10490200718071672361DC61FB7161238C0372101A -:1049120004C6D7C72008FBF8FF8E989C058E979C8B -:10492200048E969C038E949C028E939C018E929B85 -:10493200710B9E717AFA8C05FD830F9C058C04FD28 -:10494200830F9C048C03FD830F9C038C02FD830F59 -:104952009C028C04F0317E1279B822BC068C055C74 -:1049620003D1DF098C044C0361C86179068C0331E1 -:104972008EB1610906BC06313D120103BC068C06EC -:104982000E02708C071C00BC068F26FC4E01DC0D4B -:104992008C014F26FCDC0B8F27FC4DDE05AC06128A -:1049A200EF04AC06B1121008C6D7C7C3C12008FB7A -:1049B200F8FFF661490A61F8614908DF07F7340038 -:1049C20000ED494AE6BC04F6BC06AC0ABC02AC08DF -:1049D200BBAC06614902AC0461F8614900DE28AC57 -:1049E20004BDD8AC06BDDAE1FD290FADDABC06ADD7 -:1049F200D8BC04ABBDD8AC02BDDAE1FD440FADDAE0 -:104A0200BC02ADD8BBEFCAAC06BC02AC04BBAC085E -:104A1200BDD8AC0ABDDAAC04BDDCAC06FDA70EAC59 -:104A220004BDDCAC06FD1A0FE1FD440FADDABC0695 -:104A3200ADD8BC04AC06614902AC0461F86149001E -:0B4A4200DCC5AC0214AB12100CC6D790 -:104A4D0061FC61FCC1C3C5C7520C929269D4FEC111 -:104A5D00DFF88EFD708EFCC1717AFA4020F903DF0C -:104A6D000630EC2BFDA23CC09EFC609EFD34D4FEB6 -:104A7D005206C0B9A5A592DFF9C6C4C2C061FC61DA -:104A8D00DF520C929269D4FEC1DFF88EFD708EFC60 -:104A9D00C1717AFAC736410571A4C6DC51F534FDF2 -:104AAD0071485005716050053124223671620771CD -:104ABD0023228FE6FB5FEEFBD1DF1B8FE7FB5FEF62 -:104ACD00FBD1DF128FE8FB5FF0FBD1DF098FE9FB34 -:104ADD005FF1FBD1DD0C31620702EFFA71630771F3 -:104AED006B27FD7E48FD8D33F51AF9ED104CC73659 -:104AFD0041057184C6DE0DF534FD71485005FD8DFF -:104B0D0033ED104CC73641057194C6DE154034FDAA -:104B1D0003DD0C4034FD04DD064034FD0161F8F584 -:104B2D0034FDD934FDF1E7240000DD0823DD132326 -:104B3D00DD39EF6071405005E534FD71505005EDE4 -:104B4D00104C8F40059F1BF99F1EF9D91BF9FD4E87 -:104B5D0037629F1DF9401BF97FDD06CF34FD02EF53 -:104B6D0003F534FD71505005ED104CC736410571FC -:104B7D0094C6DE1CC736410571C4C6DE06CF34FDB2 -:104B8D0003EF11F534FD7148500571605005EF7359 -:104B9D00CF34FD044034FD03DF138F1DF99F400515 -:104BAD00D91DF9C1D91BF9FDCD37C0EF108F4005C7 -:104BBD0076C7D91BF9FD1234C071505005D91EF9B5 -:104BCD00F1242900DD2D240400DD28242200DD231D -:104BDD00241100DD0C240100DD19241E00DD14EF6D -:104BED000C401BF960DF0CCF1BF961EF06F51AF9CC -:104BFD00A01BF94034FD03DF0AD91BF9FD4E3762C6 -:104C0D009F1DF9C09EFC609EFD34D4FE5206C0B9B6 -:104C1D00A5A592DFF961FCC1C3C5C7520C9292697B -:104C2D00D4FEC1DFF88EFD708EFCC1F616717AFAD6 -:104C3D00714AE5717BBD51405F0401D1DD05A7F6D9 -:104C4D0047DFF3300400BF2401F6BF2A01300B0B00 -:104C5D00BF2801FD0D03300B0FBF2801FD0D0330E3 -:104C6D000F0FBF2801710AE6710321C09EFC609EE3 -:104C7D00FD34D4FE5206C0B9A5A592DFF9C6C4C253 -:104C8D00C061FCC1C3C5C7520C929269D4FEC1DF8D -:104C9D00F88EFD708EFCC1717AFAD542FBDD0EEBFC -:104CAD0040FB899E44A240FBB042FBEF2B710AE60C -:104CBD00300400BF2401F6BF2A01300B0BBF2801C1 -:104CCD00FD0D03300B0FBF2801FD0D03300F0FBF7E -:104CDD002801717320710321C09EFC609EFD34D4A8 -:104CED00FE5206C0B9A5A592DFF9C6C4C2C061FCCB -:104CFD0061EF520C929269D4FEC1DFF88EFD708E79 -:104D0D00FCC12008FBF8FF71503002CEABACCC01DA -:104D1D0000F6BC0231B2E20F617902F6614902DFA1 -:104D2D00F371603002EF7E8E519B713BE28B5C0222 -:104D3D00D1DD1D8B5C08D1DF0971503002CC010033 -:104D4D00EFCF8C0770FDA838629E50CC0102EFC1E9 -:104D5D008B5C03D1DF408E509C05715030028C016D -:104D6D00D1DF0E8C0570FDFE38629C07CC0101EF82 -:104D7D00318C014C02DF0671603002EF28CF340216 -:104D8D005A716030028C0570C18C0770FD4F38C0B0 -:104D9D00CF34024AEF0F8B5C01D1DD06716030021A -:104DAD00EF03ED1E4D1008C09EFC609EFD34D4FE39 -:104DBD005206C0B9A5A592DFF961FCC1C3C5C752A2 -:104DCD000C929269D4FEC1DFF88EFD708EFCC1711C -:104DDD000A9E31929E02EFFA8F10FC4F96FFDF195B -:104DED008F11FC4F97FFDF118F12FC4F98FFDF09DA -:104DFD005004C15011FDFC37C0710B9EC09EFC606C -:104E0D009EFD34D4FE5206C0B9A5A592DFF9C6C4E5 -:104E1D00C2C061FCA05EFC61FCC1C3C5C7520C924F -:104E2D009269D4FEC1DFF88EFD708EFCC1C1FBF816 -:104E3D00FF8D1F9C018E31318EE7240600DD082386 -:104E4D00DD0F23DD25EF45717AFA8C019F48FCEFCC -:104E5D003B717AFA4023F901DF078C019F47FCEF84 -:104E6D002B51FF2E019F47FCEF22717AFA8C019F87 -:104E7D0002F98FE4FB5C01D1DF124020F903DD065E -:104E8D004020F904DF06306426FDA23C4031FF09C5 -:104E9D00DE05A031FFEF197158F000713222405D2F -:104EAD00FC02DF03F6EF05D95DFCF1A1609F5DFC0F -:104EBD00710BE3C0C09EFC609EFD34D4FE5206C053 -:104ECD00B9A5A592DFF9C6C4C2C061FC61FF520C41 -:104EDD00929269D4FEC1DFF88EFD708EFCC1717A9D -:104EED00FA8F16FC5C03D1DD194020F903DD064075 -:104EFD0020F904DF0D36100571D4DE0630D73DFDE7 -:104F0D00A23CC09EFC609EFD34D4FE5206C0B9A5E5 -:104F1D00A592DFF961FC61FC61FC61FC61FC61FC47 -:104F2D0061FC61FC61FC61FC61FC61FC61FC61FC8C -:104F3D0061FC61FC61FC61FC61FC61FC61FC61FC7C -:0E4F4D0061FC61FC61FC61FC61FC61FC61FCCB -:0A4F5C0000060C12181E242A30363D -:104F660000163248648096122844607692082440DF -:104F7600FF000000555555554700DEFB00000000B8 -:104F86004BFC00000000143F4B39D222D32E643074 -:104F9600E130233226407C09DC4101000000983ACA -:0A4FA600F82AFF23301299000000E2 -:084FB000317503F7332312D71A -:0A4FF60030383A35343A3333000006 +:0A00CE00FFFFFFFFFFFFFFFFFFFF32 +:1000D800C7C1FBF8FFCEABACC736F00071F4C66100 +:1000E800D8710016F98EA89C018C015C10D1DD0A2C +:1000F8007110BEFB710016F9EF0B8C015C80D161A9 +:10010800E8710016F98F16F931030EF6B1BBF661E6 +:100118004900DD05618900EFF5FDDE01FD3201FDD5 +:100128008A01FD6E02EFAEC0C6D7C7360000674C25 +:1001380009DE3F318E04F60FC1317B9EFDC4118963 +:100148007267318E04F64F14896142DF03F6EF01BE +:10015800E660610667318E124900207267318E04AD +:10016800F64F14896142DF03F6EF01E66061068706 +:10017800EFBC40F84F3A61E88666D161E8FDDB06DE +:10018800C6D751105B0C319E609F18F94018F901D1 +:10019800DF05CD2F05EF03CD2F078F16F95CE39F01 +:1001A80016F951035B04318EE7240000DD1023DDCE +:1001B8000823DF0E712016F9D7713016F9D7714070 +:1001C80016F9D7717BFACEA010CEA180E5F300CE48 +:1001D800A408F5AAFFD78F16F9310508CD0003CD7D +:1001E8000307EF03CD030ECE23F88F16F931030B67 +:1001F800CD0408CD0508F690BFB401CF1105F8F578 +:1002080021FFCE22E9CE24F3CE25FACE26FCCE2736 +:100218005FCE2EFCCF120511CF350002CF37001963 +:10022800CF530006CBEEFEFFCE3831CE3970CF3833 +:10023800050A308700BF1801BF1A01BF1C01BF1E85 +:1002480001D7C7C1C1FBF8FFCEABAC8C02D1DD1220 +:10025800616902305C03BBF6614900DDEE6189002B +:10026800EFF51004C6D7FD410AFD7309FD6E2FFD99 +:100278005338FDCC04717AFAFDAE23F514F98F16C4 +:10028800F93105135003FD5E2B625C01D161E8CFA3 +:1002980014F902CFC7FB64FD4E30FDB74471025F0D +:1002A800712BE7FD5638FDF53861EDEFF6D7D7C766 +:1002B800F616FDCC04717BFA31225D0871225D715E +:1002C8007AFAEF0B717AFAA7F647DFE9E2EF01F263 +:1002D800C6D7C7C1C1FBF8FF17A1C1E0C18C0A701E +:1002E800C18C0270FD02031006D2DF04F437EF035D +:1002F800CD37028C01721004C6D7C7C1FBF8FFFDC9 +:10030800B702D2DD03E2EF618B70FD2004D2DD0776 +:1003180071235D5202EF528C0870FD3504FD800494 +:100328008B6C0170FD3504300400BF240130174088 +:10033800BF1C01300400BF22018C0A91DF04F6BF04 +:100348002A01710BE2CE44FF3182E202EFFAAC0CD3 +:10035800148E449961790C61690A8C0AD1DFDAFD3F +:10036800A904710BE271235DF2C0C6D7C7C1FBF8BF +:10037800FFFDB702D2DD03E2EF25710AE68B70FDBF +:100388002004D2DD0771235D5202EF138C0870FD43 +:1003980035048C0A70FD3504FDA90471235DF2C093 +:1003A800C6D7C7C1FBF8FFFDB702D2DD03E2EF6590 +:1003B800710AE6710BE28B70FD2004D2DD07712310 +:1003C8005D5202EF50710BE231125D39C73432FBD6 +:1003D800AC0C1652048B99A5A792DFF9C63184BDDF +:1003E80002EFFA717ABDCEB144CBB432FB8C0A313C +:1003F8008EBEB8CEBB48714BE1714BE5710ABD8C1E +:10040800089E44EF0F710BE68C089E448C0A9D36BB +:10041800AC0CBD34F2C0C6D7C716FD580417FD355D +:1004280004D2DD06FDA904E2EF01F2C6D7C71671B2 +:100438000AE6710BE2669E443182E202EFFAF64266 +:100448000401DD09AF0401BF0C01E2EF01F2C6D7D8 +:10045800AF2801085CFB08BF2801FDB602AF2801E0 +:100468005CFBBF2801300400BF2A01301780BF1C85 +:1004780001300400BF2201D7AF2401086C0408BF73 +:100488002401AF28016C0F086C0B08BF2801FDB6CA +:1004980002AF2A01085CFB08BF2A01FDB602ED582D +:1004A80004300400BF2401F6BF2A01300B0BBF281B +:1004B80001FDB602300B0FBF2801FDB602300F0F49 +:1004C800BF2801D731345D01D771225D710BBD00A2 +:1004D80000717BBD6A0E03713B25713B23E0FD4A29 +:1004E800027120F000FDB602F6BF26015024BF14A9 +:1004F80001CB440014300F0FBF280171135D710B3D +:10050800E2710AE6FD5804CE44FF3182E202EFFAB6 +:10051800FDA904AF0401BF0C0171235D71325DD7E1 +:1005280031245D02EFFAFD8004713A25713A235AAD +:100538000EFC7128F00071335DD7C7880616FDB729 +:1005480002D2DD03E2EF38710AE650A4FD2004D29E +:10055800DD0771235D5202EF2617FD35046770FD34 +:100568003504FD800450A4FD35045020FD3504D920 +:1005780036FBFD3504A036FBFDA90471235DF2C6E8 +:10058800D7C72008FBF8FFFDD9085014C15008FD53 +:100598000B08C0CC07048C074C14DE0C8C07318E7A +:1005A800FD580A615907EFEECC07048C074C14611B +:1005B800C8ED7706CC06008C064C0461C8ED5606DB +:1005C800301AF9BC02F6BBCEABAC31B2D109C73692 +:1005D80041057184C6DEF3F1C73641057184C661F1 +:1005E800DC9C05713BD1AC02148F400599715050C9 +:1005F80005617902617900F0E1614900DD09C736DA +:1006080041057184C6DEC3F1C73641057184C661F0 +:10061800DC0E059C055040C18C07318E31AD128C23 +:1006280006318E318D03BDD831FFBDDADADAADD8A7 +:10063800FD240DC0D2DD0C5008C15014FD0B08C0BC +:10064800FDE10B8C05D1DF06615906EDBF058C076E +:10065800318EFD5C0AD2DD0C5008C15014FD0B0828 +:10066800C0FDE10B8C05D1DF06615907EDB30571BB +:10067800605005CC0400CC05008C054C09DE2B8CA1 +:1006880005318E04F61FC1317B9EFDC41189728C21 +:1006980005318E04F64F14896142DF03F6EF01E657 +:1006A800600E049C04615905EFCF41001140F81F0A +:1006B8003A61E86159048C04D1DF08FDE20BFDF4CE +:1006C8000CEF0C5008C15014FD0B08C0FDE10B10D5 +:1006D80008C6D7C72004FBF8FF715B21CC0100F6E0 +:1006E800BC02AC02440900DE3EAC0204F60F144121 +:1006F80000118972AC020C5014896142DF03F6EFD5 +:1007080001E6600E019C01AC021249005072AC0275 +:1007180004F67F14896142DF03F6EF01E6600E01FB +:100728009C01617902EFBB40F67FFF61F8615901D6 +:100738008C01D161F8EDD907CC0100717AFAFDCCB2 +:1007480004711300711B20710303710205E0C1508D +:1007580003FD4D2BC05013FD4A02500FC1E0FD4D63 +:100768002BC0CEABAC6159018C0191DD068C014CDC +:1007780003DF03E6EF01F66061FB7151018C014C68 +:100788000861F8CC010031320705A044FCEF03F5FD +:1007980044FC4044FC11DC0DF544FCF0C15003FD61 +:1007A8004D2BC0EF12E6BC02F6614902DDB4000031 +:1007B8000000617902EFF1CE3708CBE4FFFFCBE60A +:1007C800FFF7CED4FFCF370008F5120561FDF5AB72 +:1007D800FFFDD908D25008C15014FD0B08C0D2FD46 +:1007E800E10B1004C6D73184BD02EFFA717BBDCB93 +:1007F800E4FFFFCBE6FFFFCBD4FFFF717ABED771D2 +:100808007BBED7C7C1200CFBF8FF8C0C318E31ADF5 +:10081800C1317B9DD4C0BC068DD49C088C149C0B24 +:100828008C14318E040C00128C0B318EBDD813FD44 +:10083800B30F61C8EDD408CEABACCC05068C0B3138 +:100848008EFD540AD2DD158C0B318EFD580A616974 +:10085800058C05D1DFE7FD0708E2EF71CC0A008CB3 +:100868000A4C04DE54F6BC02301AF9BBAC06148CF0 +:10087800089EFD118972AB146299AC06A1BC066191 +:100888007900617902F0E1614902DFE05040C18CF2 +:100898000B318E31AD128C0A318E318D03BDD831BA +:1008A800FFBDDADADAADD8FD240DC0D2DD06FD07CA +:1008B80008E2EF1961590AEFA68C0B318EFD5C0A2C +:1008C800D2DD03E2EF0761590BED2808F2100EC6DE +:1008D800D7C7717B9D717BFAFDEE07301AF9FD07CA +:1008E8000BFD920AC6D7FDD908FDE10BFD0708F5F7 +:1008F800ABFFF2D7C7317460067110CBFBEF047100 +:1009080018CBFB8FCBFB7FF4FC76D1DD5C8FCBFB68 +:100918009FF4FC4014F903DF22665C10D1DD1C8FC4 +:10092800CBFB5C10D1DD0B5080C15011FDA634C04B +:10093800EF095040C15011FDA634C04014F903DD41 +:10094800064014F904DF22665C02D1DD1C8FCBFB64 +:100958005C02D1DD0B5040C15010FDA634C0EF0938 +:100968005020C15010FDA634C0C6D7C78F0EFC76E4 +:100978008F0FFC77665C80D1DD10675C80D1DF0566 +:10098800712360EF0B712260EF067104077121601B +:10099800665C40D1DD10675C40D1DF05713360EFE4 +:1009A8000B713260EF06711405713160665C01D11C +:1009B800DD10675C01D1DF05714360EF0B714260A8 +:1009C800EF06713407714160665C02D1DD10675C27 +:1009D80002D1DF05715360EF1D715260EF184017A7 +:1009E800F901DF08710402715160EF0AC73610057A +:1009F80071C4C6715160665C04D1DD10675C04D1B6 +:100A0800DF05716360EF0B716260EF067144077177 +:100A18006160665C08D1DD10675C08D1DF05717321 +:100A280060EF0B717260EF06711407717160665C9C +:100A380010D161E8715AD1C6D7F50EFCF510FCCF7C +:0C0A480016FCFFCF12FCFFCF13FCFFD701 +:100A54005208EF065203EF025206FEE600FE1B00A8 +:100A6400DC16089F03088F0408089F040862FE240C +:100A740000089F0408EEBF00EEBA00C1C514410E81 +:100A840011D9D0FF118FD1FF312E45C4C0D7F23117 +:100A9400A2C401E2D79DE261DD4C09DF12717BFA49 +:100AA400C18F06089F53FDC0CF060800EE27003112 +:100AB400F2FA04CF0608004C00DF05D50008DD1665 +:100AC40061DD717BFAD50608DD0ACDE31F61CD61D6 +:100AD400CDEE160061CDFED40061FFFE9A00FCF855 +:100AE400FF0EFEB20061CDFED5004C09DF0EC18FB2 +:100AF40006086F53FD9F0608C0EE0400CF060800E9 +:100B0400F8E3D75200EF025202FE3700CF52FD0045 +:100B1400CF060800BF0408C716629F0008410011F1 +:100B24008F26209B4100118F27209F0108C651006A +:100B3400FE62FFEF025205CF060800C1510CFE0A07 +:100B440000C0D7C1511DFE0200C0D761DD717BFA20 +:100B540070CEC0A59EC47CFF9EC4609EC461CDD7E8 +:100B640061DD717BFAC18EC45C1BFED6FFCF060823 +:100B740001FED7FFC061CDD731F2FA1AC1AEE4BF8E +:100B840044FDAEE6BF46FDAED4BF48FD30FFFFBE18 +:100B9400E4BEE6BED4C0D731F2FA11C1AF44FDBE03 +:100BA400E4AF46FDBEE6AF48FDBED4C0D7C1BF4AE0 +:100BB400FD13BF4CFD15BF4EFD17BF50FDC0D7AF91 +:100BC4004AFDDB4CFDEB4EFDFB50FDD7534B305241 +:100BD4005430324E323030475631323000FFC1503B +:100BE400FEFEAB0061DD717BFACF060800FE0A0051 +:100BF400FEA4FF61CDF8E3EECF00C7FB0408BF44B9 +:100C0400FD8FC0009C05C5C337040600BF46FD35F3 +:100C140036460C300000522BFE6600C2C4C630F4C7 +:100C24000BB800300000B8022004AF46FDB8003015 +:100C34000F00B802AF44FD61FF520AFE3AFFECF820 +:100C4400FF0E717BFAC1C7FB04088C05C65C80FEED +:100C54000200C0D761DD717BFA70CFC0FFA59FC0D1 +:100C6400007CFF9FC000609FC00061CDD7618BFEF8 +:100C7400E2FF717BBE410011FB000017CEFC006156 +:100C8400CB089EFDF31161C999A58392DFF7D7FEC6 +:100C9400B1FED552FDDF23C1CF0308035109FEF491 +:100CA400FDC0D2DF37FE3800A20408CF0308075185 +:100CB40009FEE1FDD2B20408DF22C7FB0408318338 +:100CC40002C6D7C6510AFECCFD624C1FDF06CF52C6 +:100CD400FD01EF04CF52FD00C0EE5BFEC0EE55FEF9 +:100CE400C7C1FB04088B31196C0161589BC0C6D77E +:100CF400717BFAFE4DFEAF0408040600C114365899 +:100D04000C300000522DF3FE77FF8FC000FE2BFE47 +:100D140061CF5C807C8073C0041900CEFC0F61CB72 +:100D2400C55404EF03C55417FE18FEC7360008BBAC +:100D3400629C0288089C03D1DD334C41DE2F70F1A4 +:100D4400312DB161090033081C000851FF612A41AB +:100D54000E118FD0FF613B118FD1FF6138DC0E8BF8 +:100D64005C03DF0964C6C4FE2BFDEECAFDC6C4EEF7 +:020D7400C3FDBD +:100D760061CF5100718C7109FECBF800FEFCCB01EE +:100D860000F6BF00F953C0F693935820FEDFF941F1 +:100D96000036C04D34FEFCEF05118B99A7A517440C +:100DA600064EDFF53602F930FEFCEF04CC0000A754 +:100DB60047DFF9410036064E3420FEEF05118B99C8 +:100DC600A7A517440E4EDFF53628FE305CFEEF046D +:100DD600CC0000A747DFF9FCD80000EFFE61DD710B +:100DE6007BFABEF0ADD8BEF200AEF661CDD7C361D8 +:100DF600DD717BFABEF0ADD8BEF200DBF6FFADDCEE +:100E0600BEF000AEF6BDD8AEF40312ADDABEF20007 +:100E1600AEF661CD03BDDAC2D7C3F33174D9088308 +:100E2600C1F626D8BDD8C031750683C312F623C2D3 +:100E3600FD410E93DF0312F623C2D7440000DD26E0 +:100E460061DD717BFACFE80080BEF6F6BEF4BEF235 +:100E5600ADD8BEF0CFE800818FE8003103FAAEF0DE +:100E6600F5E80061CDD7B1D7C3F33174D90883C192 +:100E7600F626D8BDD8C0317505C312F623C2FD8F3C +:100E86000E93DF0312F623C2D7440000DD2761DD8F +:100E9600717BFACFE80080BEF6F6BEF4BEF2ADD89E +:100EA600BEF0CFE800818FE8003103FAAFE000F52D +:100EB600E80061CDD7ADD8D7C3F33174DB0F83C15A +:100EC600F626D8BDD861317026DABDDAC031750D87 +:100ED60083C312F626DCBDDC61317023C2FDF70E3A +:100EE60093DF0CF626D8BDD861317026DABDDAC29A +:100EF600D7C161686BDC6BDDC0DD2F61DD717BFA0C +:100F0600CFE80080BEF4ADDCBEF6ADD8BEF0ADDAFB +:100F1600BEF2CFE800818FE8003103FAAEF0BDD80B +:100F2600AEF2BDDAF5E80061CDD7F6BDD8BDDAD7A9 +:100F36008292DD2B61DD717BFACFE80080BEF0F690 +:100F4600BEF2BEF46208BEF6CFE800818FE800313B +:100F560003FAAFE0006072AEF0F5E80061CDD7604D +:100F660072F6B1D706DABDDAADDC06D8BDD861D8DF +:100F7600A6DAD7D1DD17C1C3DAD89DD8ADDA311CD0 +:100F860061EEB4D8DFF8BDDA13BDD8C2C0D7D1DD63 +:100F96001BC1C3DADA9DDAADD8311E33311E337187 +:100FA600F9B4DADFF4BDD813BDDAC2C0D746D8DD4E +:100FB6000771FF7177D971C0D75BDB9DDB605BDAA8 +:100FC6009DDAADDC5BD9085BD808BDD8D7C3C7F3BB +:100FD600728EFDC162314C410036B64D1161A07270 +:070FE600C09EFD62C6C2D7E8 +:0A0FF60031383A34303A303400004C +:0A20000031383A34303A3034000031 +:10200A0005214F7B9EC5E900C4FB0000000040FE8D +:10201A00000000000104080D12171C1F080100002F +:10202A001F003B005A0078009700B500D400F30067 +:10203A00110130014E011926344453626E777D80B6 +:10204A00807D776E625344342619100A08080808FE +:10205A00080808080A10AEF0B430B740BA30BB50CE +:10206A00BBB0BC50BD10BD60BDB0BFE0C2B0C420A3 +:10207A00C7B0CAE0CE1001F01410142006306390E5 +:10208A0049006E0077707B001900190017F01C6078 +:10209A0012001200120002005C003600A70000D8ED +:1020AA00EAE88C309C10A5E0B040B1C0B200B25052 +:1020BA00B310B490B620B860BA50BFA0C6B0CE90E4 +:1020CA00D02000200020002000207B306860200003 +:1020DA001700173012F00DE007F00700093001C0B1 +:1020EA0001C00100AB000000670020DA6967A12087 +:1020FA00B750B9D0BB00BC30BC60BCA0BD10BDC0DD +:10210A00BE70BFD0C2A0C400C850CC80D0B001A05D +:10211A00251018B017C095206FE07C603510350087 +:10212A0037F016F01CA0173011D011F011F0020090 +:10213A005E00A7002700B0DAF5F38C309C10A5E00A +:10214A00B040B1C0B200B250B310B490B620B8607B +:10215A00BA50BFA0C6B0CE90D020002000200020E8 +:10216A0000207B30686020001700173012F00DE065 +:10217A0007F00700093001C001C00100AB000000F0 +:10218A00670020DA69670000000000000000000014 +:10219A000000000000000000000000000000000035 +:1021AA000000000000000000000000000000000025 +:1021BA000000000000000000000000000000000015 +:1021CA000000000000000000000000000000000005 +:1021DA0000000000000000000000000000000000F5 +:1021EA0000000000000000000000000000000000E5 +:1021FA0000000000000000000000000000000000D5 +:10220A0000000000000000000000000000000000C4 +:10221A0000000000000000000000000000007F7EB7 +:10222A007D7C7A7978777675747271706F6E6D6C61 +:10223A006A6968676665646261605F5E5D5C5A5977 +:10224A0058575655535251504F4E4D4B4A4949488B +:10225A00474645434241403F3E3D3B3A39380102F9 +:10226A000203030200FEFBF7F3F0F0F3FA0412256F +:10227A00384D5F6E777A776E5F4D38251204FAF320 +:0E228A00F0F0F3F7FBFE000203030202010076 +:102298008F04F9B004F9D1DF47CF04F91EFD4723B5 +:1022A800FDE92231325C0D31045C0931226005718F +:1022B8003304EF03713204FD202331225C0571429F +:1022C80002EF03714302D42ADD05B42A71420231B8 +:1022D8004402067140CBFBEF047148CBFBFD1C2682 +:1022E800D74A284BDC134A28B9DE0E4005F928DE08 +:1022F80004A005F9D771335CD74A283EDC054A2883 +:10230800BDDC0E4006F928DE04A006F9D771325C60 +:10231800D7F505F9F506F9D73132600E4007F9020D +:10232800DE04A007F9D771235CD73132040A40C70D +:10233800FB3CDE0471235CD771225CF507F9D7C733 +:10234800C1FBF8FF71445C712760DE57712460712E +:10235800415C312260127130CBFB5002C15011FD3B +:10236800A634C0CD2A32EF3B7138CBFBE0C1501107 +:10237800FDA634C0F42A17C15002FD352BC0D2DFA8 +:102388000D8B318E318D080E01081C00BD2CAD2C33 +:1023980044009BDC05D5C7FBDF095020C15011FD67 +:1023A800A634C0C0C6D7C78D2076FDF023FD692BA3 +:1023B800D517F9DD0571035CEF2C664B2061F83108 +:1023C800545C1A71535CFDCC04664C07DD0381DF55 +:1023D800098F16F9310303FD7924FD8D2471025C00 +:1023E800307025FDAB38C6D7C771620171720150D4 +:1023F80005FD4A025008FD2837629D285009FD282E +:10240800376276716301711816F94A28F1DC05E51F +:1024180017F9EF224A2804DE1ACF17F9025008C12B +:10242800506CFDDA02C092DF0DD437DF0971101647 +:10243800F9EF03F517F94017F901DF05710A22EFE3 +:1024480006710B22710302CD20075700674C08DE86 +:102458001073090A20614EDC05679D20EF0387EFA2 +:10246800EB4A2007DF09D517F961F8CF17F903C63A +:10247800D7500AFD4A02304000C15006FD182BC053 +:102488005096ED4A02C72006FBF8FFD517F961E818 +:10249800ED6C25304A57C1503EFD182BC0D2DD07E0 +:1024A8007100CAFBED6C257108CAFB17040200C154 +:1024B8005004C1500CC1506CFD02031006EA30AA4A +:1024C80048318D12AA48318E616B08616A08C15083 +:1024D8000EFD182BC0F690C1500CFD182BC0CC0176 +:1024E800008C014C04DE2831245D02EFFA71125D84 +:1024F800EA308C015010D605C15010C18C01D604A9 +:102508004000C1506CFDAA031006615901EFD2507A +:10251800A5FD4A02EA30AA48318D12AA48318E61D7 +:102528006B08616A08C1500EFD182BC050A5FD4A02 +:10253800025004C1506CFDDA02C0629C01EA308A84 +:102548004B4E0161C3048A4A4E0117040200C15070 +:1025580004C1500CC1506CFDAA031006F6C1503ED0 +:10256800FD182BC01006C6D7C78F08F94B2861F88D +:10257800ED1926400AF928DE06A00AF9ED1926F514 +:102588000AF98D289F08F98D285070D6123073519A +:10259800230480001231FF318E039F09F99FC6FB87 +:1025A800F68F09F97C804C95DC1C8F09F9318F2452 +:1025B8001400EA30BDD8AA44FDE30D1231FF318E74 +:1025C80003318F16EF1A8F09F9318F241400EA307E +:1025D800BDD8AA46FDE30D1231FF318E03318F16A7 +:1025E800EA308A427217F3031644000171FE61C88B +:1025F80036FF001701DE02F61617BD4EC7500CFD58 +:10260800182BC0D2DF078D289F08F9EF047100CA84 +:10261800FBF2C6D7C72008FBF8FF4017F901DD0613 +:102628004017F902DF1C17040600FD102CD2DF0A40 +:102638008C069C058C079C04EF4ACC0563CC0400EF +:10264800EF4217040600FD102CD2DD0F7100CAFB03 +:1026580071035CCC050071025DEF298C06318E3167 +:102668008D080E07081C00BBEA308A4072ABFD36A5 +:102678000FBB8C019C05D1DF08CC0501CC0400EF11 +:10268800038B9C0417040600FD2D2CD2DD06CC0616 +:10269800C8CC07008C069FC9FB8C06318E318D088B +:1026A8000E07081C00BD2CAD2C4401A5DC09CC0389 +:1026B80064F6BF0CF9EF52AD2C220CF94401A0DCF2 +:1026C80009CC031EF6BF0CF9EF3FAD2C44819DDC0D +:1026D8000BCC030A30F401BF0CF9EF2DAD2C4401EB +:1026E8009BDC0BCC030530F401BF0CF9EF1BAD2CC0 +:1026F800440191DC0BCC030030F401BF0CF9EF0965 +:1027080071025D30F401BF0CF93132040C31245CE4 +:1027180008CC0564CC0400EF0D8C034E05DE078C55 +:10272800039C05CC04008C059FC7FB8C049FC8FB49 +:10273800FD9D2B8F0EF94E05DD2B40C7FB0BDE06EA +:10274800400EF90BDE1640C7FB06DE06400EF90602 +:10275800DE0AD5C7FBDF0ED50EF9DD095020C150C2 +:1027680011FDA634C08FC7FB9F0EF9FDDA2B1008A8 +:10277800C6D7C7D82FC15002FD4D2BC04018F9014C +:1027880061F8712010055012FD4A028D2F6C0870F7 +:10279800C15002FD4D2BC05003FD4A028D2F6C180D +:1027A80070C15002FD4D2BC05016FD4A025003FD6A +:1027B8005E2B625C01D1DD107170CBFB5002C15001 +:1027C80013FDA634C0F2EF01E2C6D7C75004FD5E80 +:1027D8002B625C03D1DD405014FD6A2834CBFB89A1 +:1027E8005C9F998A0C7CFF50FF5C14D1DD228A0C17 +:1027F8007CFF5C147234CFFB89616A997162075659 +:1028080000316207058666D1DFF7716307716B27B0 +:1028180034DEFB895CEB99712810055002FD5E2BB4 +:10282800D2DD354018F901DF05500AFD4A028D2F27 +:102838006C1070C15002FD4D2BC0E0FD4A02D82F2C +:10284800C15002FD4D2BC05033FD4A02F0C1500269 +:10285800FD4D2BC07178CBFBE0C15013FDA634C0F1 +:10286800C6D7C7C12004FBF8FFCC02005004FD5EA8 +:102878002B629C038C045C20D1DD0E8C036C019CC4 +:10288800038C026C209C02EF138C045C10D1DD0CCD +:102898008C035CFE9C038C026C109C028C045C080C +:1028A800D1DD0E8C036C029C038C026C089C02EF39 +:1028B800138C045C04D1DD0C8C035CFD9C038C023E +:1028C8006C049C028C03D1DD05501AFD4A028C036E +:1028D80070C15004FD4D2BC08FCBFB5C9F728C03E5 +:1028E800318E316D148C03318E314D616D08616C00 +:1028F8005C606162629FCBFB8FD7FB7CFF50FF5E01 +:1029080002D1DD278FD7FB7CFF5E027234CFFB89B3 +:10291800616A99716207CC01003162070861590147 +:102928008C01D1DFF4716307716B27F21006C6D7EB +:10293800D9BFFBC15006FD4D2BC0D9C0FBC1500704 +:10294800FD4D2BC0D7FD3829F2D7C7711300711B75 +:1029580020710303710205E0C15003FD4D2BC050E7 +:1029680013FD4A02F0C15005FD4D2BC0500FC1E0C8 +:10297800FD4D2BC0500AFD4A027103055008FD4A5F +:1029880002501FC1E0FD4D2BC05012FD4A025003FA +:10299800FD5E2B625C01D1DF03E2EF24F0FD5E2BCC +:1029A800629D2E3602F9C75008FD352BC05003C171 +:1029B800FD4D2BC0710203711A20FDF52AF429F28E +:1029C800C6D75003FD5E2B625C01D1DD155014FDA6 +:1029D8006A28FDD3275014FD4A02E0C15003FD4D7B +:1029E8002BC0711300711B207103035014FD4A02A0 +:1029F800F0C1E0FD4D2BC0F0C15003FD4D2BC0D7F9 +:102A0800C72004FBF8FFCC02008D299C035010C19D +:102A180050A4FDDA02C0629D29D437DD04F2EDD25C +:102A28002A8C037B295C08D1DD0F8D295C08D1DF56 +:102A380005CC0210EF03CC02208C037B295C04D167 +:102A4800DD158D295C04D1DF088C026C049C02EF33 +:102A5800068C026C089C028FCAFB5CF3728D295CA1 +:102A68000C6162629FCAFB8FD6FB7CFF50FF5E023F +:102A78009C02D1DD1F34CEFB896E0299716207CCAE +:102A88000100316207086159018C01D1DFF47163DB +:102A980007716B278D295C40D1DD095002C15012A6 +:102AA800FDA634C08D295C01D1DD08E0C15012FDBE +:102AB800A634C0717AFA8D295C41D1DD0C5A29BE41 +:102AC800D829C15010FD4205C0F21004C6D7FD7ABE +:102AD80027F2D7FDD327F2D7C78FDEFB7617FD6A1B +:102AE80028664FDEFBDFF2F5DEFBF2C6D75064FD49 +:102AF8004A02FD452C6261FB71115CF171145C6145 +:102B0800DC70C15012FD4205C0FD4C36CD3D03D7E7 +:102B1800C7C1C1FBF8FFAC0ABB17C15002C18C0288 +:102B280070C1506CFDAA0310061004C6D7C7C1FBBC +:102B3800F8FFAC08C15002C18B70C1506CFD020394 +:102B48001006C0C6D7C78806166770C1C75084FD6F +:102B580074031004C6D7C716C75084FDDA02C0C66E +:102B6800D7C74A2004DE045600EF0256014018F980 +:102B780001DF048686EF0A4018F902DF0451046178 +:102B88000666318F12504CD633514CD6610A046018 +:102B980020BD30C6D740C7FB51DC05CF1EFC0FD780 +:102BA80040C7FB33DC05CF1EFC0BD740C7FB0BDC53 +:102BB80005CF1EFC07D740C7FB0661D83132040594 +:102BC800CF1EFC03D7D5C7FBDD04E51EFCD7F51ED9 +:102BD800FCD7D514F9DF0471635CD7FD452C62611D +:102BE800FB71715C71145C71775C61C831625C1750 +:102BF80071625C71745C71115CF171745C61DC70A0 +:102C0800C15012FD4205C0D7C7164012FCFFDD0CAB +:102C18008F12FC9B1714CA0100F2EF07C75004FD7E +:102C2800352BC0C6D7C7164013FCFFDD078F13FC32 +:102C38009BF2EF07C75002FD352BC0C6D740C7FB34 +:102C48000BDE02E2D7F2D7710001057178500571E9 +:102C58003AD5713BD18F10055CFC9F1005CF540508 +:102C68004AE5420571104205710042057148500558 +:102C78007130500571205005CF530505CF52050A14 +:102C88007130510571205105713BD5717050058F18 +:102C980011055CFC9F1105F422D771785005710865 +:102CA8000105D77140F00071783002713AE6713B46 +:102CB800E2713BEA713BEE8F10055CFC9F1005CF7B +:102CC80034024AE552FF711A52710A5271483002B1 +:102CD8007130300271203002CF330205CF32020A40 +:102CE80071303102713BE6717030028F11055CFC66 +:102CF8009F110571603002D7717830027148F00079 +:102D0800D7C788061666614FDD0967614EDE0396F0 +:102D1800EF01866672C6D7C7161714AA0412A9430C +:102D2800DD29AA0412A923FD0E4EC3AC02FD0E4EE6 +:102D380013C2BDD813FDB30FDE0C1714AA0212AAD2 +:102D48000403BA04EF051714A9BA04AC041231FF3E +:102D5800319E03317F087208C6D77100F2003044F3 +:102D680000BFB601300188BF9001300984BF9E01C1 +:102D7800BF9C01BF9A01BF9801BF9601BF9401BFD4 +:102D88009201F53CFF30FE00BFBE01F6BFBC01BF9B +:102D9800B80150EEBFBA01A1BFB201C918FE00F6D2 +:102DA800BE6EBE64BE6A7123047153078F16F93173 +:102DB8000507F5E5FBCB6CFF0071535D71425DD7EC +:102DC80030EF00BFB401F6BFBA017108F2007123F9 +:102DD8000471530771435DD78F9CFBB09CFBD1DF17 +:102DE8007331D4D106715BD1E59EFBD59EFBDD34F2 +:102DF8007140CAFBD99DFBF1E734020023DD0625AB +:102E0800DD0325DF05F6BE66EF06D9E4FBF1BE66F5 +:102E1800A09DFB409DFB20DF06F59DFBB09EFBCFF0 +:102E28009CFB19D7CF9CFB1E7148CAFBD5E6FBDF7C +:102E380004F6BE66D7D9E4FBF14266FFDD16D9E495 +:102E4800FBF112AE6643DE05A266FFEF03B266FF32 +:102E5800CF9CFB03D7C7161714F6B9AA0412F6239A +:102E68001231FF31AE03316FBA02C6D7C7C1FBF8C2 +:102E7800FF8C085080D612AB1413B9AB14AA0412F5 +:102E8800A92312D939FBF133BDD813FD1F0EBA029D +:102E9800C0C6D731645D01D74014F902DF10F6BE11 +:102EA80064BE6EBE6ABFA6FBBFACFBBFB2FB3154AB +:102EB8005D1530A2FBFD5D2E30A8FBFD5D2E30AE0A +:102EC800FBFD5D2EED4F2F31745D0F71735D710841 +:102ED800EAFBF5A0FBF59FFBEF6DD59FFBDF658F48 +:102EE80038FB9F9FFB40A0FB1FDC1A7100EAFB40E8 +:102EF8003AFBFFDD22A0A1FB8F3AFB4FA1FBDE17B7 +:102F0800F5A0FBEF12D9A0FBF1A1605C1F9FA0FB0D +:102F18007108EAFBF5A1FBE9A0FB093CFB70C13095 +:102F2800A2FBFD742EC0E9A0FB095CFB70C130A8B0 +:102F3800FBFD742EC0E9A0FB097CFB70C130AEFB21 +:102F4800FD742EC0B09FFB30A2FBFD1F2DF313BEF6 +:102F58006E30A8FBFD1F2DF313BE6A30AEFBFD1FBC +:102F68002DF313BE64D7C736F00071F4DC297170F5 +:102F7800F000CE9D08CE9EC0CE9F80F594FFF593BD +:102F8800FFF592FFE597FFE596FFE595FFE598FFCA +:102F9800CE9C7F7100BEFB711BE3712BE3711AE7B6 +:102FA800712BE7717A9D710A9E31929E02EFFA7138 +:102FB8000B9E71035E71135E71235EC6D7C7310223 +:102FC8005E1E71025E710A9E31929E02EFFA34EC27 +:102FD800FB3692FF52078B99A5A792DFF9710B9EDA +:102FE800C6D7C788061631125E1571125EC734B48B +:102FF800FB3092FF1652078B99A5A792DFF9C66698 +:10300800736718B4FBC6D7C771035E31145E1E71AF +:10301800135E710A9E31929E02EFFA3492FF36B423 +:10302800FB52078B99A5A792DFF9710B9E31245E9D +:103038001371235E717B9E8FF4FB9E9A8FF5FB9E26 +:103048009B717A9EC6D7CFBFFB5CCFC0FB5FCFE03A +:10305800FB5DCF14FC36CF15FCC9E5EBFBD7C7CF1A +:10306800BCFB12CFBDFB02CFE4FBFFF5E5FBF5E6A9 +:10307800FBF5E7FBF5E8FB5600664C64DE087238A2 +:1030880038FB0086EFF3C6D7C788061617F1E73472 +:1030980003002361E3EDD6332361F8ED8131B123D9 +:1030A80061E3ED8B312561F8ED9A31B1240D0061B2 +:1030B800D8EDD633240B0061F8EDBB312361F8ED70 +:1030C80002322361F8EDCF312361F8ED9A332406FB +:1030D8000061F8ED6B32B12561D8ED87322400002C +:1030E80061F8ED94322361F8EDD6332361F8EDB43D +:1030F80033B12361E3EDB7322361F8EDC8322361C0 +:10310800F8EDD9322361F8EDC8322361F8EDEA32DF +:103118002361F8EDFB322361F8ED0A332361F8ED02 +:103128002C332361F8ED38332361F8ED4433236100 +:10313800F8ED4D332402002361E3EDD63324020079 +:1031480061F8ED56332361F8ED63332561F8ED6FCF +:1031580033B124060061D8EDD63324000061F8EDC0 +:10316800D9332561F8ED7B3324120061F8ED9533EE +:103178002361F8ED8633EDDA3334BEFB89615F995C +:10318800EDE733304D29FDAB3866736718BCFBEDAE +:10319800E73340C1FB6ADF1440C2FB68DF0E674CAF +:1031A8006CDF0930DD41FDAB38713AD5679FC3FB51 +:1031B800EDE73367D1DD0D30013DFDAB3834DCFB85 +:1031C80089616F99EDE733675C02D1DD0830D62A53 +:1031D800FDAB38EF0C675C01D1DD0630DB2AFDABB7 +:1031E80038675C3CD1DD1030E02AFDAB38675C3CC9 +:1031F8007266736218BCFBEDE73367D1DD625C0170 +:10320800D1DD05300800EF01F6609F1BFC675C020A +:10321800D1DD03E6EF01F6341BFC89616899675C30 +:1032280004D1DD04E6A1EF01F6341BFC896168993D +:10323800675C08D1DD05302000EF01F6341BFC89FE +:10324800616899675C10D1DD05301000EF01F63434 +:103258001BFC89616899675C20D161E871601BFC7F +:10326800EDE733D432DF08679FE5FBA432EF0D4A60 +:103278003205DE08E83267183FFDA432EDE7336710 +:103288005C0F7266736218BCFBEDE7334A3264DE8A +:103298001B4A3201DF0667D161F85701E832671827 +:1032A80038FBA4324A320561C871725DEDE73367B5 +:1032B8005C7F70C117F1243000FDEA2FC0EDE733C1 +:1032C800675C3F70C117F1243000FDEA2FC0EDE7BD +:1032D80033675C0770C117F1243000FDEA2FC0ED99 +:1032E800E733675C1F70C117F1243000FDEA2FC077 +:1032F800EDE7336770C117F1243000FDEA2FC0ED08 +:10330800E733CEABAC710A9E31929E02EFFAD592AA +:10331800FFDF05710B9EEFED679E99710B9E9FF382 +:10332800FBEDE73371225E675C7F9FF4FBEDE733CB +:1033380071225E675C3F9FF5FBEDE733675C3F9F5B +:10334800F6FBEDE733675C1F9FF7FBEDE73330B81B +:103358003AFDAB38679FFCFBEDE73330733AFDABC2 +:1033680038679FFDFBEF7830953AFDAB38679F00D3 +:10337800FCEF6C675C01D161E8FDB744EF614A3846 +:10338800C8DE08E83867186AFAA438EF52679D382B +:10339800EF4D67318E247000DD0D240200DF4030D0 +:1033A800EE08FDAB38EF3871625FEF33675C01D12F +:1033B800DD05711202EF03711302675C02D1DD05AE +:1033C800712202EF03712302679FEBFBEF1100EFFD +:1033D8000E00664C5BDE07736718BCFBEF0100C686 +:1033E800D7C716664C30DC094C37DE05FDC52FEF14 +:1033F8006E664C02DF1F8FBEFB5C03728F1DFC5C88 +:1034080003318E316D08616A08128F1DFC5C8031B2 +:103418002A6162EF59664C3DDF0AAE90BF18FCF98D +:1034280018FCEF4A664C3EDF05F919FCEF40664C84 +:103438004FDF05FDDF44EF36664C61DF08E83809E9 +:103448006AFA72EF29664C7FDF05FD773DEF1F664C +:103458004C4EDF0B31745F045210EF12F2EF0F661F +:103468004C5BDC0452FFEF06667309BCFB72C6D7DF +:10347800C788061617F1241000240500DC07244C21 +:1034880000DD17EF17717BFA17F104BCFB14896193 +:103498007F99717AFA71325EEF02A438C6D7C7C134 +:1034A800C1FBF8FF4014F903DD064014F904DF2FCF +:1034B8008C027309C4FB5E0AD1DF248C02318E04AE +:1034C800BCFB14896E0A99716207CC01003162074E +:1034D800086159018C01D1DFF4716307716B271002 +:1034E80004C6D7CF1DFC03F51BFCF51FFCF521FC1A +:1034F800D7C788061617F1E734020025DD3D23DD1E +:103508001725DD1C23DD0523DD2BEF3B71625E678C +:103518009F20FCCD3D03EF2F675C839F1DFCEF27A9 +:10352800675C039F1FFC675C034C0261F8711260C3 +:10353800FDD246EF12679F21FCEF0C6791DF08E090 +:10354800C15012FDA634C0C6D7C71617F1E724002C +:1035580000DD2A23DD1E240300DD0724FB00DD2413 +:10356800EF2531226005308000EF01F6086F1EFC60 +:103578007208EF198F1BFCF51BFC72EF1071425F8C +:103588005235EF09F2EF066673091AFC72C6D7C7FF +:103598001617F1E7240000DD38241000DD1C23DDB8 +:1035A8001C23DD30240E00DD18241100DD1B240F40 +:1035B80000DD12243000DD15EF1EE2EF1D5202EF90 +:1035C800195204EF155206EF115205EF0D5207EF8D +:1035D80009F2EF065203EF0252FFC6D7C731445E25 +:1035E8003771435E8D3C9FC4FB8D3B9FE3FB3618D0 +:1035F80020C7D83BFD5937618A70618AFD9E37C064 +:10360800D840F1312F609D3F8D3A4B3FDD0A715212 +:103618005E8D3F9D3ACD3D034A3D05DE0930563665 +:10362800FDAB38CD3D6BB43D7150F000CE300BCFC3 +:10363800170006CE3106FDB602717A30710BE371C0 +:103648000BE7C6D78D3F9D3A8D3F9FC5FBD74014EA +:10365800F903DF064014F904DF02F2D731545E0D96 +:1036680071535E71735E8D3F9F2AFCEF3831645E43 +:103678002371635E71725ED520FCDF05F52BFCEFCC +:103688000B8F20FC5002D6A1609F2BFC8F2BFC9F38 +:103698002AFCEF1131745E088F2BFC9F2AFCEF0582 +:1036A8008D3F9F2AFC8F2AFC9FC5FBD92AFCFDC9A8 +:1036B80036E92AFC09282270C15013FD4205C0F2E0 +:1036C800D7C7C1C1FBF8FF8C02D1DF05F520FCEF9D +:1036D8001A8C024C05DE06CF20FC02EF0E8C02315C +:1036E8008E1231FE03311F609F20FC8F2CFC4F206F +:1036F800FCDD29CC011F8F20FC9F2CFCCC00008B0B +:103708004C08DE148B73091E204F20FCDC058B9CB3 +:1037180001EF05615900EFE78C019D3E1004C6D703 +:10372800C716710AE7710BE37150F000CE300BCF6A +:10373800170006669E31FDB602717A30710BE331CF +:1037480082E302EFFA8D1F7158F000710BE772C621 +:10375800D7C7C1C1FBF8FF8F14FC4E02DC03F2EFA0 +:10376800318C024F15FCDC0452FFEF268C022F141B +:10377800FC706131318D128F15FC2F14FC70613192 +:1037880033BDD813FD410EBB440001DC03F690BBEA +:103798008B721004C6D7C7C1FBF8FFAC0814A91474 +:1037A80089708B6128706131FD0E4E1344030071DE +:1037B800FEDC23AC08148A04819A04AC08148A0439 +:1037C8004C11DC10A9148B99AC0814CA0200AC087F +:1037D80014CA0310EF72AC0814CA0400AC0814A988 +:1037E80014894DDE0AAC08148A02819A02EF12ACE1 +:1037F8000814A914894D61D308AC08148A02919A57 +:1038080002AC08148A03919A03D1DF3CAC08148AED +:10381800024C10DF10A91489318EA112AC0814A92A +:10382800146299EF17AC08148A024CF0DF0EA91441 +:1038380089318EB112AC0814A9146299AC0814CA63 +:103848000200AC0814CA0310C0C6D7ED9638717BC5 +:10385800FAC7D44261F831045F2E71045F71215FA9 +:1038680071035FD442DD05B442CEABAC717AFA562F +:1038780000664C0ADD1272F3311C79FEFCCEFC00A6 +:1038880061CAFDF53886EFE9717AFAF2C6D7C756EC +:1038980000664C0ADE0BF0317E12F6782EFC86EFBD +:1038A800F0C6D7C7C1C1FBF8FFCC01008C014C0A98 +:1038B800DE36717BFA8C01F0317E042EFC14A9618E +:1038C80068DF09AC02B9717AFAF2EF1D8C01F031A8 +:1038D8007E12792EFC614902DF06717AFAE2EF095D +:1038E800717AFA615901EFC4E21004C6D7C72004FF +:1038F800FBF8FFF6422EFC61F8EDD739717BFA9C94 +:10390800038C034C0ADE3C8C03F0317E042EFC143D +:10391800A96168DF05717AFAEF29717AFA8C037266 +:10392800F3311C792EFCCEFC0061CA629C02D1DF07 +:103938000A8C03F0317E12E6782EFC717BFA61590D +:1039480003EFBECC0200CC01018C02F0317E042EC4 +:10395800FC14A96168DD788C02F0317E12792EFCA6 +:10396800E743DF658C014C0ADE5F8C01F0317E1283 +:10397800792EFCE743DD4D717BFA8C01F0317E0432 +:103988002EFC14A96168DF186169018C01F0317E91 +:1039980012F6782EFC8C024E01DCED717AFAEF2FCC +:1039A8008C01F0317E042EFC14A9128C02F0317EB9 +:1039B80033782EFC8C01F0317E12E6782EFC6159AA +:1039C80002717AFA615901EF9B615902ED51390090 +:1039D800F21004C6D7C7200CFBF8FF17040600C175 +:1039E8005006C150A8C15030FD02031006D2DD1D9B +:1039F800A042FC4042FC08DE03E2EF6B34FCFB898A +:103A08005CFC99FDB83A7110CAFBF2EF5A30060017 +:103A1800C117040600C13001FCFD164E1004F54222 +:103A2800FC8FFCFB5C01D1DD264014F903DF20503C +:103A380010C180FDA634C0C736100571D4C6DE0F8C +:103A480017C15006C150A8C15030FD0203100640EE +:103A580014F901DD114014F905DD0B8FFCFB5C0244 +:103A6800D161E8FDE241F2100CC6D7D9FDFBC15087 +:103A780030FDDA02C0629F00FC7130CDFB8FD5FBB0 +:103A88005C08D1DF06716307716B27F2D7D900FC98 +:103A9800C1D9FFFBC15030FD740310047130CDFB58 +:103AA8008FD5FB5C08D1DF06716307716B27F2D7EE +:103AB800C72006FBF8FF17040500C1E0C1500FC17D +:103AC8005030FD02031006624C02DF077110CAFB7A +:103AD800F2EF5F7118CAFBCC03004017F901DF054C +:103AE800CC0402EF03CC0410CC05808FFCFB5C03F4 +:103AF800D1DF08717AD5CC0207EF06717BD5CC02ED +:103B08002F17040200C15004C150A0C15030FDAAB3 +:103B1800031006C736100571D4C6DE154014F90324 +:103B2800DF0F17C15006C150A8C15030FD02031065 +:103B380006F21006C6D7D514F9DF03F6BD444014C3 +:103B4800F901DD0DD546FCDD04B046FCD7CF46FCB7 +:103B5800038F14F9318FE723DD0B240200240300BF +:103B680061C8ED663C8F16F931233E301B00464490 +:103B7800DF0AE0C15010FDA634C0EF1D30770146C2 +:103B880044DF165002C15010FDA634C0F6464ADF85 +:103B9800088FE0FB5010D6BD4AF6464ADD36B64AD5 +:103BA800464ADF3071025DEF2B301B004644DF13BD +:103BB800F6464CDF18E0C15010FDA634C0C94C537E +:103BC80007EF0A307701464461F871025DF6464C0A +:103BD80061E8B64C3144600871335FF6BD44EF14B8 +:103BE80031345F05F6BD44EF0BA644F6464461F850 +:103BF800C944FFFF315260194A4605DE16A4464AF9 +:103C08004605DF0FA4465004C15010FDA634C0EF8E +:103C180002F446315460194A4805DE16A4484A4859 +:103C280005DF0FA4485008C15010FDA634C0EF02AC +:103C3800F448D449DD03B449D7316260174A4705CF +:103C4800DE14A4474A4705DF0DA4475010C1FDA65E +:103C580034C0EF02F4474A470661F8CD4925D7C773 +:103C680036100571D4DE0730DD39FDAB38D240148B +:103C7800F903DF1D3122070630082AFDAB3831442D +:103C88005F0C71435F5080C15012FDA634C0FDA87F +:103C98003CFDD33C31645F0671635FFDB143C6D719 +:103CA8008F1DFC5C01D1DD22D549FCDD04B049FC47 +:103CB800D7CF49FC098D3E4F48FCDD0E8D3E9F480D +:103CC800FC5040C15012FDA634C0D74014F903DDA2 +:103CD80004F6BD1AD7D5E8FBDF08F6461ADD19B693 +:103CE8001AD7D9E4FBF1461ADD0ED9E4FB12AD1A56 +:103CF80043DE03A61AD7B61AD7717BFAC78FDCFB47 +:103D080076F5DCFB717AFA5C10D161E871525F6676 +:103D18005C0FD1DD57665C01D1DD05F514F9EF4C78 +:103D2800665C02D1DD11E0C15003FD4D2BC071135B +:103D380000711B20710303665C04D1DD117113004F +:103D4800711B20D51DFC61F8710303FDEB34665C23 +:103D580008D161E87103035005FD4A02710203505E +:103D680003C1FD4D2BC0711A20FDF52AF2C6D7C735 +:103D780056FF4A321361C8ED513E8F16F9311505C9 +:103D8800300400EF0F8F16F9314505300500EF04B8 +:103D9800D917F9F1609F4CFC8D4E9F4DFC71345C36 +:103DA800E661301271045C61DC31196162629F4E18 +:103DB800FCE54FFC31140205308000EF01F6C131FB +:103DC800346005304000EF01F6C2616B08616A0893 +:103DD800C131340405302000EF01F6C2616B08617F +:103DE8006A08C131240205300800EF01F6C2616B90 +:103DF80008616A08C131646005300400EF01F6C249 +:103E0800616B08616A08C131546004E6A1EF01F6EC +:103E1800C2616B08616A08C131446003E6EF01F6CC +:103E2800C2616B08616A9F50FCF171240461DC9FD8 +:103E38004AFCF171540761DC9F4BFCD832F1010454 +:103E480012FD14A9148976A4326672C6D7C7FD7309 +:103E5800098F14F9318FE724000061F8ED31402310 +:103E6800DD1B2361F8ED3B3F2361F8EDB73F23618C +:103E7800F8ED00402361F8EDD140ED2E404015F9F2 +:103E880001DF303124601FF64644DD05F538FDEFCB +:103E980003A038FD4038FD65DC0FF6BD44F514F984 +:103EA80071025FED5641FDAE23AD44440A0061D86E +:103EB800ED564171325FFDCC0471535CFDAE234079 +:103EC80017F903DF0971025FF514F9ED5641FD1C7E +:103ED8002640C9FB9BDE0D3124600971025FF51491 +:103EE800F9ED5641714A277140110571301105717C +:103EF8003A22715A2271501105FD5229D2DD0971F9 +:103F0800025FF514F9ED564171103500CF37001DE9 +:103F1800714012054015F901DD064015F903DF056A +:103F2800F5E5FBEF04CFE5FB03CF14F902FD3829D3 +:103F3800ED5641FD4F2CFDAB2C714A9DFDEB34FD38 +:103F48006630F537FF712BE0F515F971025FCBE4A8 +:103F58003FEFCBE6F6F0FDCC04713BD47112027151 +:103F680023028F16F93105285004FD5E2B625C038D +:103F7800318E315D34CBFB896168995002FD5E2B2F +:103F8800D2DD067170CBFBEF047178CBFBFDAE235D +:103F9800FD622D710816F9CF14F9038FBEFB5C0280 +:103FA800D1DD095080C15010FDA634C0ED5641FD49 +:103FB800584131545F2FA450D450DD0831A4E00A91 +:103FC80031020C06712BE0FDCE4131A4E01731041B +:103FD8000C13712BE05027C15005FD4D2BC0CF1499 +:103FE800F90471025FFDC3418F16F93125073124A9 +:103FF8006003F514F9ED5641FD584131020C14F0F7 +:10400800C15005FD4D2BC05005FD4A02FDCE41CFE4 +:1040180014F903FDC3418F16F931250731246003D4 +:10402800F514F9ED5641F514F9CFE5FB03F5E6FB78 +:10403800F5E8FB71525DF6426CFF61E8ED5641F61A +:10404800BD4A71035DF5FCFBFDB83AFDC82DFDA224 +:104058002CFD002D714B9D711302712302F5CCFBD1 +:10406800F5CDFBF5CEFBF5CFFB31245D02EFFACEA3 +:104078003708CBE4BFFFCBE6FFF3CED4FFCF370042 +:104088000971481205F6BEE0BEE2BED0716A27FD8E +:10409800CA29714307714B277148100571481105EA +:1040A8007138100571381105713302713B22715353 +:1040B80002715B227158100571581105CF14F9056A +:1040C80071325FF6BD44FD410AF515F9F538FD3149 +:1040D800246004D42ADD2371335FE515F9E514F96A +:1040E8008F16F9312568F510FCF50EFC502EFD4AA7 +:1040F80002CF15F903E514F9EF54FD2805FD472310 +:1041080071730171320471430271035C71525C3145 +:10411800949E02EFFA712AE7CEA409F5F300312440 +:10412800600261FDF442FD7309E5F300CEA4083195 +:10413800226006CF14F905EF0971335FE515F9E53B +:1041480014F9712BE78F16F9312503F514F9C6D741 +:10415800D552FCDF1A310200155003FD5E2B625C5C +:1041680001D1DF07F514F971025FD7E552FCD7409A +:1041780052FCF0DF0831040041F552FCD74052FCF4 +:10418800C8DF0BF514F971025FCF52FCF0D731028A +:10419800000A4052FCFFDD22A052FCD7F0C15004B7 +:1041A800FD4D2BC08FCBFB5C9F9FCBFB7110DCFBC5 +:1041B80030013DFDAB38CF52FCF0D731045D06F538 +:1041C80014F971025FD771535FF450717207FDB62D +:1041D80002717307D7FD8905F2D7717BFAC7200CE6 +:1041E800FBF8FF8F02FCF0F901FCF303FD0E4E1300 +:1041F800BC048F04FCF0F903FCF303FD0E4E13BC62 +:10420800028F06FCF0F905FCF303FD0E4E13BB719B +:104218007AFAAC04BDD8F6BDDAAC04311EBDDCF6C2 +:10422800BDDEFDF40DADD8BDDCADDABDDEAC02BD42 +:10423800D8F6BDDAAC02311EDADCC3DADEC3BDDC87 +:10424800F6BDDEFDF40DC0BDDEC0BDDCADDEFD6A31 +:104258000FADD8BDDCADDABDDEABBDD8F6BDDAAB8F +:10426800311EDADCC3DADEC3BDDCF6BDDEFDF40DDB +:10427800C0BDDEC0BDDCADDEFD6A0FDADAADD8FD4B +:10428800CD45C3C58FECFC5C3FF0317E046CFC145B +:10429800C2C0B9A0ECFCF6BC08BC0A9C078C074C51 +:1042A8002EDD3E8FECFC0E0770F161DC605C3FF0A8 +:1042B800317E12796CFCBDD8F6BDDA8C07730968BB +:1042C80022318FBDDC70BDDEFDF40DAC08BDDCAC69 +:1042D8000AFD6A0FADDABC0AADD8BC08615907EF10 +:1042E800BCAC08BDD8AC0ABDDAC9DC0004F6FDBE1A +:1042F8000EC9DCFFFFF6FDBF0FADD8BF66FCAF608F +:10430800FC4266FCDD12AF62FCBF64FCAF60FCBF20 +:1043180062FCAF66FCBF60FCAF62FC4264FCDC5030 +:10432800AF60FC4262FCDE48AF3AFD4260FCDE4012 +:10433800403EFD16DC1F403EFDA0DE168F68FC4F98 +:104348003EFDDE0EAF60FC226AFC44691061C8FDC8 +:10435800B143F53EFDAF60FC445146DC0BAF60FC59 +:10436800241027BF3CFDEF1130F82ABF3CFDEF09B0 +:10437800403EFDFF61E8A03EFDAF64FC4262FCDC0C +:104388001BAF62FC4260FCDE13AF60FC423CFDDE0A +:104398000BF568FCAF60FCBF6AFCEF094068FCFFE6 +:1043A80061E8A068FC100CC6D7717BFAC7710A9E39 +:1043B80031929E02EFFA8E949F5AFC8E969F5BFC78 +:1043C8008E979F5CFC8E989F5DFC8E939F5EFC8E03 +:1043D800929F5FFC710B9E717AFA8F5DFCFDD30F83 +:1043E80076FD4B4513BD56D507FCDF0AD508FCDF23 +:1043F80005D509FCDD25F6B14656DF11C956372229 +:10440800665C0391DF060A56181A57009617FD6E68 +:104418004613FD894431745F02EF61520692926936 +:104428005AFC6854FCDFF6AD56BD54F852F3311C03 +:10443800791AF944FEFFDD44D852F101041AF9143F +:10444800A944FFFFDF04E6B9EF0BD852F101041AC3 +:10445800F914A9A1B9717BFAA007FCD507FCDF1CE8 +:10446800A008FCD508FCDF14A009FCD509FCDF0C6A +:10447800CF07FCFFCF08FCFFCF09FCFFC6717AFA13 +:10448800D7C716D852F10744A800DC0571725FEF50 +:104498001CF647DD18A4524A52A8DC0571725FEF7A +:1044A8000CF852F3311CF6781AF9B7EFE4C6D7C7FF +:1044B80056A89666F0317E12F6B1781AF966D1DF01 +:1044C800F1717BFAF507FCF508FCF509FCF452716B +:1044D800735FC6717AFAD7C72004FBF8FFD432DFBE +:1044E800178D529FEDFC717BFA520692926954FC2B +:1044F80068EEFCDFF6717AFA4A3206DE0EE8320917 +:10450800EEFC9C03A4328C0372EF34F9EDFCF3311A +:104518001C791AF9BB310260058B9C03EF128C01E0 +:104528009C03D5EDFCDF06CFEDFCA7EF03B0EDFC57 +:10453800718071076061DC61FB7101608C0372102E +:1045480004C6D7C72008FBF8FF8F5DFCFDD30F9C7E +:10455800078F5CFCFDD30F9C068F5BFCFDD30F9C83 +:10456800058F5AFCFDD30F9C048F5EFC9C038F5F64 +:10457800FC9C028C06318E0112792620BB8C075CCC +:1045880003D1DF098C064C0361C86179008C0531C1 +:104598008EB1610900BB313D120103BB8B0E047063 +:1045A8008C011C00BB8F0CFC4E03DC0E8C034F0CE3 +:1045B800FCDC0B8C024F0DFCDC04AB12EF03ABB13F +:1045C800121008C6D7C7C3C12008FBF8FFF6614917 +:1045D8000A61F8614908DF07F7340000ED6A46E62A +:1045E800BC04F6BC06AC0ABC02AC08BBAC0661490C +:1045F80002AC0461F8614900DE28AC04BDD8AC0601 +:10460800BDDAE1FD790FADDABC06ADD8BC04ABBDAF +:10461800D8AC02BDDAE1FD940FADDABC02ADD8BB6F +:10462800EFCAAC06BC02AC04BBAC08BDD8AC0ABD32 +:10463800DAAC04BDDCAC06FDF70EAC04BDDCAC06A0 +:10464800FD6A0FE1FD940FADDABC06ADD8BC04AC31 +:1046580006614902AC0461F8614900DCC5AC02148A +:10466800AB12100CC6D7C7C12004FBF8FF8F57FC4C +:10467800FDD30F9C034E04DF1CAD544656DE07AD38 +:1046880056265412EF40F64656DF074654DD03E738 +:10469800EF34F7EF318C04318EB1128C03318E4335 +:1046A800DF1830382226540656BB8C045C0391DF91 +:1046B80005AB041800BBAB12EF0C8C034E04DE05EF +:1046C80032A900EF01F71006C6D7717BFA311260E4 +:1046D80009F64658DD04B658EF7C711360717AFA12 +:1046E8004014F904DF07715307F424EF69D9E7FB95 +:1046F800F1E7240000DD0F23DD1A23DD1023DD534D +:1047080023DD2723DD38715307F424EF497152075D +:10471800F424EF42D424DF07715207E424EF057133 +:104728005307F424C958FA00EF2CD424DF0B715234 +:1047380007E424C958FA00EF1DF5E7FBEF18D42465 +:10474800DF0B715307E424C958FA00EF09CFE7FBE0 +:1047580002EF03FD5F47D7D91FFCF1E7240000DD16 +:104768000923DD2123DD0923EF1B715307F424D727 +:10477800D424DF07715207E424EF05715307F424AA +:10478800C9582D01D7715207E424D731425D01D7AA +:1047980071635DD9E5FBF1E7240000DD1223DD1923 +:1047A80023DD1123DD2623DD3423DD3923DD3FFD21 +:1047B8001F48EF3DFD4048EF38D9E4FBC1AE6CFD22 +:1047C800092DC0F313BE6C712304EF25F0C1AE6C44 +:1047D800FD092DC0F313BE6C712304EF14F6BE6CF3 +:1047E800712204EF0CCB6CFF00712304EF03FDB4BE +:1047F800484014F905DD064014F901DF0671230469 +:1048080071635D31645D0FF6BE64BE6A31220402D5 +:10481800EF02F690BE6ED7CD2647F45AAE6C317DC6 +:10482800BFFAFCFD8948D2DF0ED9E4FBC1AE6CFDAE +:10483800092DC0F313BE6CD7FD8948D2DD0DCD26F6 +:1048480047F45AAE6C317DBFFAFCD7E85A094020CC +:104858005080D6BFF6FC22FAFCBDD8304700FD1FB9 +:104868000EBFF8FC30F6FCFD1F2DF313BE6CB4260A +:10487800D426DF0CCD2647A45A4A5A1F61C8F45AD9 +:10488800D740C7FB0BDC05712304F2D740C7FB06F2 +:1048980061D831225C11F0C1AE6CFD092DC0F31353 +:1048A800BE6C712204EF03FDB448E2D771625DF07B +:1048B800C1AE6CFD092DC0F313BE6CA0FCFC40FC1E +:1048C800FC40DC3DF5FCFCD9FDFCF1313F0440FD2A +:1048D80014D9FDFCF1BDD85008FD6E0E087208E62B +:1048E800D2DD040192DFFC896158D1DD0571220413 +:1048F800EF03712304A0FDFC40FDFC2061C8F5FD19 +:02490800FCD7DA +:10490A0061FC61FCC1C3C5C7520C929269D4FEC155 +:10491A00DFF88EFD708EFCC1717AFA4014F903DF5C +:10492A000630082AFDAB38C09EFC609EFD34D4FEDA +:10493A005206C0B9A5A592DFF9C6C4C2C061FC611E +:10494A00DF520C929269D4FEC1DFF88EFD708EFCA4 +:10495A00C18F4105775C04D1DD06675C01D1DD506A +:10496A0031345E3671620771335E8FCCFB5FD4FBE4 +:10497A00D1DF1B8FCDFB5FD5FBD1DF128FCEFB5F63 +:10498A00D6FBD1DF098FCFFB5FD7FBD1DD0C3162BC +:10499A000702EFFA716307716B27710360FD0F302D +:1049AA00F4227148500571605005717AFAEDB84ADF +:1049BA00675C02D1DD17D422DD134A2202DD0E0024 +:1049CA00F4227148500571605005717AFA717AFAC9 +:1049DA008D22318FE7240000DD0823DD1423DD3129 +:1049EA00EF50F4327140500571505005E422EDB891 +:1049FA004A8F40059F10F9715050058F10F99F1288 +:104A0A00F9D910F9FDE933629F11F9CD2202EDB807 +:104A1A004A675C02D1DD18675C10D1DD05CD22033F +:104A2A00EF107148500571605005F422EDB84ACD77 +:104A3A0022044A2203DF138F11F99F4005D911F985 +:104A4A00C1D910F9FD7834C0EF228F4005768F1056 +:104A5A00F901DC064010F902DE0671605005EF4EDE +:104A6A00C7D910F9FD9030C071505005D912F9F12B +:104A7A00242900DD2A240400DD25242200DD202447 +:104A8A001100DD0C240100DD16241E00DD11EF0CDF +:104A9A004010F960DF09CF10F961EF03A010F94A5D +:104AAA002203DF0AD910F9FDE933629F11F9C09E8A +:104ABA00FC609EFD34D4FE5206C0B9A5A592DFF96A +:104ACA0061FCC1C7717AFA714AE5717BBD51405FD9 +:104ADA000401D1DD06F616A747DFF2300400BF2431 +:104AEA0001F6BF2A01300B0BBF28010000000000AD +:104AFA00000000510FBF2801000000000000000064 +:104B0A00500FBF2801710AE671235DC6C061FCC15E +:104B1A00C5717AFAD436DD0BEA34899E44A634B4D8 +:104B2A0036EF33710AE6300400BF2401F6BF2A01CA +:104B3A00300B0BBF28010000000000000000510FDD +:104B4A00BF28010000000000000000500FBF28012C +:104B5A0071135D71235DC4C061FC61EF520C9292C6 +:104B6A0069D4FEC1DFF88EFD708EFCC12006FBF809 +:104B7A00FF71503002CEABACCC0400F6BB31B2E2CE +:104B8A0010617900F6614900DFF371603002ED1EB1 +:104B9A004C8E519C03713BE28C035C02D1DD1E8C6E +:104BAA00035C08D1DF0971503002CC0400EFCC8CD1 +:104BBA000570FD5135629E50CC0402EFBE8C035C39 +:104BCA0003D1DF408E509C02715030028C04D1DF39 +:104BDA000E8C0270FD9735629C05CC0401EF328C75 +:104BEA00044C02DF0671603002EF29CF34025A7199 +:104BFA006030028C0270C18C0570FDF934C0CF346C +:104C0A00024AEF108C035C01D1DD0671603002EFBD +:104C1A0003ED854B1006C09EFC609EFD34D4FE5207 +:104C2A0006C0B9A5A592DFF961FCC1C3C5C7520C7C +:104C3A00929269D4FEC1DFF88EFD708EFCC1710AB2 +:104C4A009E31929E02EFFA8FF6FB4F96FFDF198F85 +:104C5A00F7FB4F97FFDF118FF8FB4F98FFDF0950E3 +:104C6A0004C15011FDA634C0710B9EC09EFC609E0B +:104C7A00FD34D4FE5206C0B9A5A592DFF9C6C4C256 +:104C8A00C061FCA44261FCC1C3C5C7520C929269BF +:104C9A00D4FEC1DFF88EFD708EFCC1C1FBF8FF8D1A +:104CAA001F9C018E31318EE7240600DD0823DD0EBC +:104CBA0023DD22EF46717AFA8C019D3CEF3D717A31 +:104CCA00FA4017F901DF068C019D3BEF2E51FF2EAA +:104CDA00019D3BEF26717AFA4016FCFFDF068C0134 +:104CEA009D28EF058F16FC9D284014F903DD064028 +:104CFA0014F904DF06307025FDAB384031FF09DEB8 +:104D0A0005A031FFEF077158F00071425E710BE3A5 +:104D1A00C0C09EFC609EFD34D4FE5206C0B9A5A553 +:104D2A0092DFF9C6C4C2C061FC61FF520C9292695B +:104D3A00D4FEC1DFF88EFD708EFCC1717AFA8FFC49 +:104D4A00FB5C03D1DD194014F903DD064014F904B4 +:104D5A00DF0D36100571D4DE0630DD39FDAB38C003 +:104D6A009EFC609EFD34D4FE5206C0B9A5A592DF12 +:104D7A00F961FC61FC61FC61FC61FC61FC61FC6144 +:104D8A00FC61FC61FC61FC61FC61FC61FC61FC6131 +:104D9A00FC61FC61FC61FC61FC61FC61FC61FC6121 +:0B4DAA00FC61FC61FC61FC61FC61FC31 +:0A4DB60000060C12181E242A3036E5 +:104DC0003E3BE43598229347E02D9B2ED246673C2C +:104DD000FC08553E4CFC2EFE20FE02F903F94DFC6A +:104DE00028FE4EFC4FFC18F94AFC6CFF1AFF6EFFC0 +:104DF0006AFF64FF4BFC66FF50FC0000983AF82AFB +:064E0000FF005555555559 +:084E0600FF000000000047005E +:104E0E00317503F7332312D714AEF8C716AC06125A +:104E1E00C5AC0416F643DD078B99A7A5B3EFF5C213 +:024E2E00C6D7E5 +:024FF4000202B7 +:0A4FF60031383A34303A303400000C :00000001FF  \ No newline at end of file diff --git a/trunk/bsr.lmf b/trunk/bsr.lmf index d779fe422a679e3c9575d2f201fd728ac36ebcee..69e93f1a741c93a976688be34e6ec5c22a27ccbc 100644 GIT binary patch literal 177672 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%0AI_RN6oNGP31osV#PY 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 literal 167328 zcmeF)d3;lK{>S^1wP}IUma-#+w(J546hvGoP-L+{DY#c9s09&`0}iO5;*6srl`7*n zqDawk7X_DbRF<}ipd-?O5ewKfxPUr}0koBxq`j~ANkC@N$DRAf{p*(@d7kaNeZJpw za&pe8GcJ9k;b}ZNv3Rv%ywJ`t@(qXKdBo7mrVkJA-n@OhuRgQH=lA6fIAhp#%o#=- zyJ2*<4YnCJCjRY}mv`Zq(bIfNX1%n9-leS!V{K}DnLe#T3~!pI3-XJu96f1j!HI3P z?3Z8OrCRrYY5xCK6RGf&cyp+`t-?P=+i`+(OuY9?-PCdBx#=g)ii^0bJ$+* z6KOV(X5Fu+8QGWZ^*)hi6KOX5YMQ~hxooeu#=73`k><5uO_Muv0^8|*qMVONv*}mU z3>kST+v|NI%>mL>{%V?`gJ!V3-Y3$0OPZ~}kY>c_sbj`Y9_6cKd%aKe&vDYc_X}zA z@#62~2{X7ln2tRM^_PI@mQ z*n0OSO@8M@0ys6z#Id8VESNkpzoE5Z=zXF+xun^2+JB_6j&Djcas0&bhL`ocPo&8s z&3nI)hW?o}bsF1hd)~jLUV0ah=A-{ivs48YO`d4Qpfro)E$^c}3we3@Bd3idaU)+OynP&ZfBBWSRO|Bc z6lu=OV{Fe`ZTaQbDQTt}#w@ni``2G5(onbmF^#^1)uI#SSdIL}!cLT<_7oU5Q7^rJ z{dFRZO8H;Yj2f@@c$->VZ`ZFDG~KJ!d3l^y6^$AD5oz>x{%V@MM4uK-8(B2gx0mhp z*4X*wS3J#$^?bcs=hvE7SvqglOUrYtsrYo?Q>Jqh(<*1eDa&=fsh85uu%_bEm5FKP zzcn$fvAQ!ct#d7%Kk21&D4iGSrSl@4@91T%_F9wiah{m|E!*h4Loc0s=$t|?olj_g z)k|r$AL^yCtNlwa)nEIKUfM?G-a7vF@#D`ojE8t1#jz^IU;A#6J|J>X_h1}A&}ZPnf3O?k&B4-b5G zR|#duW+!c{nUZ!{OaGebA~-folkn|pKq>zuDM37aHV``I6ibF{g4_?`oZ|n;r=0Yr?+`$_K}?f zqE;)r)u*{Wv{n9K|Iq3A!S#dt!=$_)TK>@5^c*u9?yq>w*0ANkme02Q{ev%>n?E?j z`=jRO>U3AMzI*e|tgmsy^jp`wW zz4{EJWBu7i{kcZ{Xrq3tQ9adg*I#6O@DH$yU+DR?*dFj?)Ue>9M)$3tjb_n(H?=*FV)< z|8#TB_Nqjum)ds)GXmGzeZ`J=SAJ)8WtwwaP3+l$vGB0iD3^K5PqBBi>%CT|yV?{w zVt?y5qu54oRC^ok)isf;WB2%Co-yY9EVJL2v17wx51tt~9B!zo+1}7j=@i>>{aM&{j4@)>r2XSn2dYX_=2ey2=fxH}(%id4uKF>Nu(Nth#9nHf zuliWyG}gzlJLvc<99TXt_K6;lCylEn390^|ff7 zm}squ8h=iATa5-pi_L~%F5YYo?_mzlo}KD22f56%dYFS8=2_W=nX$L+ruT?Jwha|M zZG|}%nYIt|jZB}FiRmEuXEcvypX^W?9&a0+VP^3=iAQ$d}X7+dZng(*HjaF%L-5J%-}!m_ zRM%=(VP2KW_P>}>>W2FqoA>&gH}BuS|HZwr&s$dR4z?`xR1s+^8(Z6=)U_+*4qW0s zJjrd~I;SE)MejN?kgxcRP8QkI$caoKJPGb_OnSg{wyz z>3PSyaZC?f;w*LU3VC9Ww}`#kGW;)fN%JV8P9kbv)_sS~XxL<5XU|VI>dswf=j$Ys zOqR`GXKz_}$~Q@>ZMAKkov)HY);Jq(|F=~HEW9zV;r8ah@xUc~zwHVfKRnAr-a5o_ zplV~7oxP^RVcJ~>syNQQ*{`y&4TG?-b=3jQ&^1=N2ZHWWTY)3wI25)uObtqkeWYZ+0}jwiOdc61jyl4$;Md@%G?r`r1}~j_y3ellboVapy

1l0 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ÿr;l65ZJ#V|&PK|nn;J=ODrcHAH=hDc=E;tmzm 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 literal 16387 zcmeHudt6gj*64XACjlV@1O*=H6qqWDF$@Cf{PB3c<$*i#{{LO`)w`KjcCV#hPIjg7=Nvm z>*g_Yr1tl9xDzikbP9Uj&> zw&Ti0LOj&m>T8>cVO2%Czyh|G3MaR)TlOobQg+rCa#MH5&cm zBK*!qquvx+4rNC>%-?ocuXaor=*W>fCO*+|ceG=A)N7eEHobrEy6-eFz-rC6M6{y;u|3MH~4)AzsrNsj_zoOKiV;i?U-Hdokiwbtnx~t55m;bVZz{6wv&0H7A#u^2-QPWWI2WnM8Eg*Pj z#ZrKVXVjD0ty#& zhbi2Xh{sS4Pr{ipiSfYHokT*WOoAkm*<_I4_F?(?4qI_%9mRlH0cl+_vo2w%&g2+@ z$%sH-M_l$u)V73#7+G6Fay*fY5_-&i1is*&tES zi&zVfCdquB+Cm;`0nHiSlI?4IS(83A&a;4`} z82{ug{3N=LcGz1`+w4K3QvD(iflj;mI%G(Lb9}>kocrh?Yq7+D!e=NHl$HK>n2BJ`h1?D#pu$`mzi!7R+5&bUd& zMKO$Y2f^-+g2ajvWVRgot7naJ=%Qz>a_FpQonnhdoBrB#vFU6xDo$xRyhdsI z>*2LZ)5XK<6a;PYtXEP!)yhaujgsNns5JWyuUEdRR{mb2NE;R3%KL4lt8BTξI9 z2iaU37Hx414j#Z%#t_HA?%+F7?(~hXFMF{z3HGoximMr`qdz%$52e9?j~O%RL>q>c zP8qDkPMm7B{UPB`807y%m?&Tb(#enpzPM)-JkCcUiS?i9qihq1T8IIk|9fU zgV&ViGr@ZXXJNmg7yxMj^cUsK2NV-Dqc+)}6Rp1168&JiQc*NMsDTm0;j9GX*nIi1 z!RE_98ib<@#q457ufw^A--4qIa69X)2?r@?M>lu)3v4nXsh4* z4fdkz8;m7y9_kN$gNFX-Kaiti)Qaz*Hu1lwcK93?BX_V{rT0~GoIQ@M&gpIJ1ujP* zE_3{iegFZpe+2T0Y7gQlCwwj3nxFW8A~XxrZ#8xec z_wT!fDYq*2hnohPu2nEi;ajzU%kr9`j+fVjkNPyg+d;nu@?cUdY zu$LXfUH-5;c%!j5wXyp|GZbY(QSUxDmayaU;6ESvus3)Owka5rX5W3?aMF+Rn|t_X z-(z3x`>OmggzA5+hk2}F9gT*@^2Q^cb0?0RGPND~{9K0t?@u$NnKZU1UtNZ+ z$2M1Q!A8ShM*o;{BZmG6tPGop{SL#r|Mrd3R%dwk+!6cH<`1wB9Dgu;`05``e=7gj z;i+#u((&q_O<4SIi)~H03CqATY{vc(=d}G=OlQNJ;SW0iM~W)U)caHwI$Zq!fB*Xu zptDzO+5gG6*tQp*-}>CM&urfGvyC-;_0#Krx^C@LYpN>$ZFL1#{>0-yE_?KmhaYXG^XAT(JqxFp5yp%$;~5+$2$CeQLFxL{{{E{s zDdU7$4?MAc^K+ZmKk>k<2}bHB0$-N~F@#3o!0LExF7_z)4EAg6Ke4meRV)R!;l=pq zoczL-73()YzkU1jo7Y#YEX>atZO}9Ee|kfgDI$z;vC0uv=?s>5S!JA3Y*D^5vjwIR zEM?NMgqG&>U@_-&DP^LC%{2`lS{D*sR7B7mp(1<%!4?u4-madUmVPC{!3PIpi!H}z zCnERz)8P40AjzH-nG~Svlfay^$b?Gf`!(=v^e5Sq)skc=DKPm$Ns$mFStFffH$(`i zVt|4?laI}%^mdxMl*u+1H^OMXGkk1uAeZdkDt&pSw zSzb#7a9bSflp?ZucQC1IF>uD4z`jO?ED^6w(LMx5GbWI-L3bvbEB0%u+^_|bzYzas zhq9m!_~mW@5wg|i&_la6JJ#aRC@;ZPWl!G;qRpg%3jjj;rtg^vw&f4CIOd~5WGcaW zC4livuY@E_W{G z*-&Md!|){yN8pxSUs8yRb;>x(0M|!MJnMKDSo^0`)l$TODujwU8ZckEznJDuQm-s8 zrf=sCQ4GiXV9+_8gYLqgnB?-we+84<%{UFl-horU+^UWnK%sL8lW zrWay3KgfMLGm2&40V159;dw@Gi%IHCkcn{umk^LRvT>!Sp7i!epZ2{x z5dcJRP6kDR=qOcv1q~_|^-jv|lbp1>TZ)y&m0Jt&9%K}Y)xV==3Tg|~IOLOfgE`Xo z$^z1AWvsd1TYeB>RBfNO*x4e2{J~a z5P#RNYsXiIJ?RngAs}T=j}+qd2sTcIEke`n#eM#Sc3f|}h9fi^0^x5V5FH1NRY9*I z5FQ7Ck=Y!HrD2U2!RDKE$gUXbmc&daRg8lHWmqI4cSguX3 zI)x-BxekX6vCdRSh^YXCt8t=}EE`mThB^X3Obm}uK};Nvis30LkODmDF73z!4xD5) z(rgeZx;(pUoFu5zPt(-b1Kdv;Ze3Y9S5e`HoBAaQiR5v(U{6%jj}y1a1X)!ov`oxo z6TB9a%K#d*9t`4ti>4}Z} z(C7xiFp<-b#?sA1X6hnsfD7A=gKR;Bc!K0JP0AxvLSzJH`z@UqsSdg_X_9KmJQueC z4Kt=f`(u_RU`jPN#dkv(9v2y@BVla?gClGd6>c&DJB2_E^v#^&B)5?fG#Cazf_IQ^ zCk!IlPMBgPFe2%w1Wj=mP#6j|WW zKPYlk&)x|W2zFy5QgZ~rI|T;1rslznhCmBDg_L|Uva_sdZx0zkHj+-dc|i3kbWI%a zfk0q(Wu!j*XyVQbBu*V^TKG=Dys$1F|FDc)UDq=cHgM6V3wpS`Z zJqT8j2XS?VQ9E{sdPosLs)XV+m8{F?DEcz5r07ddPw7pb#7L_Tm@VdfIt}Er^t^fko?rI7iraKAdG_O;I^6Rn?s)_E?7=;+ZY~4h2mFgRVSe~6q3GJ7sdER z*?exc&n9BX^9NOs8!(2)=Vkj`4bqVYsWZ5NJ=>|_AM3nuNa{Ky3HiLeSL!(^UAdG` zU=~3$K_Djt>2On}sOh;TU1_SUKPcG`N~WMDbWl2SNb)vFqkZrg$1m-by227Tu9_-+ z2(_RxDx{-?@lfTW0R5ZFs7QWL83kOJ5+J?sMr=-e|8nPWZ>LS1Px*6{Q9P~o|cw0$5c zzn*6Mllp8z&%T}0+11&}{FB){b5jZ(kwS+h@uyvfrQpB0mP+o!lKqG@-k-^1HzoUW zDJq!jk4moP(u$)}AOo;PW6u%k%G>2-$NUCl@jUAfSjI!%c7FvyG zohS>R8M_kQG&OW4nE$mU5i zpK1nyvNhS`_?qnD;(S?}xjR~_jl1yx8<1eBVF~j{o-nuNpOS35qv^v4t(6<9MxBxX z38=D^c^slV)K>oP=*&~nFfI^d)6A*RFu!HLi<0-h>7wQRZ}HDT8(yze=KZtugtuS% zvDYfk^iGgJ^R;=~r4;XJ=^pPjDGFK}3QM8uQs{;h8jv2uDvMSJn3`EjC2WUyHO6H| zOe?vs`>=cqoU8xH9<@NGk+qT-WZPM*7K8s>HT`|y+^9actIwTz zDhZ$jm0wdq`{IqhmuJJ&7#)_DNS{|*jmPwz!ABhZ7*E$!Zm5X017wiTT%c_XhMY$3DY8mMUG?*)$UC_;d#hl_7O0DF zL-{ZSc6r)nLRE%Aa4@57hC4te6qZpwMF!rwG9y7$wbHigmW(S_8>U!o%_?BQ_W|1P z1IB+3aAy|$PQyyywL2OF$NPSRXD4$N;*Tne<^}bKUiD0pBa>wD zzRIHcK{|4mEZ$pLv?53=Qx=Q4l|@`o2TbZV-K-IEPlV_U<((>%p(%1`x*THVI0tB-n;^`$2%{zlV=V%0 z5$+c6umTC0Q!R&fHdaM`w_>A*ZaO$KRa@X;#i0*8C^<=BTF@6N+~UlDAlUO zR7YPFSYq?d3;8^=>t5M?R&vdi-B+cVbCkB8xw0bO!@W|?y`tpLYVNViSJ>(0?gg@I zj=W-lER5g_%&rBpdyXm#`#c$@sO^=RpmQLbpB$Md^A6asYzf{BOw++?ApC)U&c-Kv z%_m%H^~EZpXO{$rR^-x*`6=OQu=XBMS9Eb3fgyxKnO_R}dOurePU07t`6ty@3uSRO zyUJ|gSDN_>bC*p)+o-HT<{VpLf)va8KZJgtclbQPj@y9!Yyn=EG9 z3xRo!*CrEUQct0L#mEkl?D%pRX4evVg-sSL4~+-H?jgD%qya6eVKStNIe zf3I@Sml4yjG?D{i^0$Sut~VRb?5XOV0S)`E8Yj*z4_M(%z5Mu{TvoZ5 z@B@#mlUOkUI#3!FbDYF(zV;@8-sEd)wxGVu?gfy7%{{J_XrX1;~S9d>z|FOm*|)|F+WBA z#Gz?%{JzBjhHSXso)N~@uaWI*WF`RSibwMk<(*~nUS;WA-T+oeaam}M>`Ii;M9WcE z4HFm_wxe5o+e`z^pKT2!!&Ulrf`Ek!De$C)1XPni@t5NYVuqIyGHO?~Oc-R|CP=Oe z5;8?-;?@~ok3nwfNmjAYUHgYn+Dv-5!z25eO34nfenD-F+g1FiUa4J+wKK+c-FDPE zXfne;*VV4kiW+_kyr*X%UpBHL*CPVRP(0L=k!lCO-=6^kgpZ&V6E5^&&pP?YDy3_c z0(SD;dEQkDx6Puo4(LxPA(7boa|!V#~q`*2zIVm^osRA12#o96?4QONa^z z7u3k$Cg_*IB<`t^QC2AUphmuk;Iol+Q_PE#Ne>rnl!If2h}pg&JsV-Si;;vq5O5I& z_ss_zWj0@{<1H4%t(d`DEgCg7;y3G{1!$i-3I#3;;v4OZ8jCQ(5;UUWJjJsX2(_dL z^akG#IDRZ+?dxT*MbxjCAwdUIAc3S8>k=7S53K=CwTe?MLjvJc%g9+Vgi|ed@iN5Q z@UnO}TcFLdKdoXvEklA1Cf7eLgHox%F=R*uYQR^)%M(EEs*(k?wrz7@pF5)t&{)>2 z)!51=1Ar~GB=UEaWV7t^ZkBbf`SOZQvXBgK z_a+$yxL9$!uMqgqyLzx-kTwr1lMNc!OTSg^0%2j0JpimlQxCE zL;EEho=Yv2WyzhwLzU_w9fDoOA~o(O1;$CW%nh6ED$yxDC6?`)3d;=yj44SoDna{! z4oRxsAg~DzSqD|qAX)%bZHGg(9`=q6B8PNq0u6zdVlqnph_-<#p6angu9Uy!Vj^|8 z%cg+EP6uW{mmci(u4m*r8axYi8otm3zA__Efjx*F4TiirZ99XztdTk$9NT*`BUg@U z({|RV>K@bT*ad8p-6CY63)f2v(DSDHTx>__l!bj8>|NQB;N3{E1UmE}_?+q=RO}Bb z|K`_2oG%U0y?w5Qhu6u4aKY+^s_SsMz^ptZUV5!FZ#a|bQUtA3LBc|q_Rn0e(hAi=5fc`PE z!ozJVZcW!9!#%iaz)BAMD|J(O#vFlmNOXdSYn~42q^kd@)z=oXt1N8&b8^>nvcRzK zoYS*Jq6V5)bOn&hV5!7Z$T=p)jm$uZ0+tkcA>w0(mZh|0Tr@z6NKES=vPL5xA`n3> z{{S}BLH$RU`5O{nkPV|0g_X;-Fbt~=Kgt{lCCaeWE5tO#f44GcDu4gJkY5T3QYavW zf>O+Dr$!ojP?Y+WSfrtjUupz1lp4Rzubrrjo6IlL^7l{Vm%$kyl25X53G4+ zekH*_1}2asK5LqCfCf%!Pyn5WLOGY7>eaS4JO2jy-?zVih4jn7Ah!) z0lDR}0M`U>_)d!5|5aqv>PStTIKR>odQRqRwCMD>LF-dSX~43rhG4pka(^U6zDlA) z-f_y62HDi1Ea6Ir?8tcbSOeAA9d7JxpxAMZ{%~VJ`NN2V-HrZ(y^VneB34AO<9huk zdjltj5SkkU&43b6?n)lQJ)oi<_-`=PsNZq-o&3a=sgx~1hnhF#v=hxA)n_W<`MpS{Wb( zyJf!vVZ15_mL7gsDX5hLc6*tU?jH}&`arsCkG!Hx2_ylI`3<@7DFgSZa(z*#OaVY) z$$kC=cv}qaxpvCR?&M8M-QrY_Q|`)uBShCIxH)x=mW8{+M+=;CFr%`Jd@UA7O#KvR=NWPG zDB$kNP(1ggDqj}DJ)aPtEY_UXmkQWpvKYi4+b-g+)DE~~_D1g9ac_ow~hepYv z(Q;_3%s**Cn;r__MmDKYuC1~=OM#QH+M5^THDi=u7^DO{q9$Mfvy*NN_z+^hpcwp^*2K2Y=~`F|t1aE`wv?GI+o!k_V0&)tL2@E$Vjw5az9iIP+yp zPt%sbfP^466AXG!X3X<|V$K>2j=Lokf^v5%d-@J4V&_LoH1upe0|d4TxYuAFiy-?g_MEi>wVrzWl1PUIkb*_-gCF2$V<-z(HZx) z27Cx8B;SeX`!+|>tuuo^$TLYX->o!u+m>M91@cT*Y?G9j?_}MPN~Nn(2^vt<`W(fc zqm1W1g~sBpO<-zZ*tKa&xua9i8PtdKAhPV+3+ksScKGj~7n-K@OjoY33#bYu4W$~p z!Jj@g39L95&j=L0I|xhe!(ik_av`Cq`ss>&x&r>t&~(Me$(-DB@{_jGL|7Bg4z>hu z)GF1ra!X9Tz!(<0P&DtC%l9k!X9r6)%^$t{F8aFa)QM)O9Q=Wb>K8WewE9azxr*v6 zg-=^pt9d3k!g-6?<(HoLD>(JCT!Qq(1xOfO0qKd0kkGk;(i4{?2!Me21mq`DBR2RA z7G;?&1jhCm_s75835#c#2_FRP&65&a~aOWxzb^>@kxk^ku8H_#xOtP9W!GesX ziB=pFMq9^WLYkOp&x(}8hLRQGL=E)3J}aV<*WY6C9|r`+u?h{6-q+V-wULj`wM?lARQ@` z#5}^u>(&JreuD`DFO!1%1#Hyowy$;tRDUZ-Kjf z7rHr&-GvMyI#dJDMXys^t^908#ePRSPKYfKBHtOb*E-;%E`9l1Ks9u z9L$V3_z~bME1){bn@>E7Qh))Ub5$#2W;6q6xtP2QT~}jBWS^$U!2Fmf#SQ1PFYOo}nW&V+9Y%|JBeHe=a(o?L%c8Gx zH5h!7i&psw;$j#h2;aIFd@g9hqL4T(Z&!Kv&nfg{-0&Hs#V_>AKpSC5#HNf>=wb0cC# z3r);u@sHHdTJ(SS7sWJ*#!=&}lWh<}h+${pyATYs%jkK0E;G|5r>zZa-l0R>k s?!bJc^KZ<#F&W`v*pJ}f5{&&Bc|Ff!{1-;J|LbDq|6inZE9(D$0pF*t-T(jq diff --git a/trunk/i2c_ctr.c b/trunk/i2c_ctr.c index 4d56ebf..8899cda 100644 --- a/trunk/i2c_ctr.c +++ b/trunk/i2c_ctr.c @@ -6,10 +6,9 @@ #include "config.h" -#ifdef _MCU_KE3_ -#pragma interrupt INTIICA int_iic_ctr // CTR -#else // TS̓}U{ŃeRAWM͉H}eRŌLjvc + +#ifndef _WIN32 #pragma interrupt INTIICA1 int_iic_ctr RB1 #endif @@ -49,18 +48,12 @@ #define SMC SMC1 #define DFC DFC1 - #endif + + // ============================================== -extern bit irq_readed; // ꂩIRQWX^ǂ܂ꂽ - -u8 iic_burst_state; - - -/* ======================================================== - ======================================================== */ -enum IIC_STATE +enum en_IIC_STATE { IIC_IDLE = 0, IIC_RCV_REG_ADRS, @@ -70,24 +63,37 @@ enum IIC_STATE }; -// 1oCg̓xɊ荞݂o[W + +// ============================================== +extern bit irq_readed; // ꂩIRQWX^ǂ܂ꂽ + +u8 iic_burst_state; +static enum en_IIC_STATE state = IIC_IDLE; + +#define bit_iics_spd (i2c_stat & (1<<0)) +#define bit_iics_std (i2c_stat & (1<<1)) +#define bit_iics_ackd (i2c_stat & (1<<2)) +#define bit_iics_trc (i2c_stat & (1<<3)) +#define bit_iics_coi (i2c_stat & (1<<4)) + +// ============================================== __interrupt void int_iic_ctr( ) { - static u8 state = IIC_IDLE; static u8 reg_adrs; - static u8 reg_adrs_internal; static u8 tx_buf; u8 rx_buf; - static u8 adrs_access_from; + static u8 adrs_access_from; // o[XgANZX̎Ɏg - EI(); + u8 i2c_stat = IICS1; // volatilê // ǂݏoI - if( !ACKD ) // 荞ݗvNAKif[^M̍Ōj + if( !bit_iics_ackd // 荞ݗvNAKif[^M̍Ōj + || bit_iics_spd ) // XgbvRfBV(!ACKD ɗƂ͊荞ݗȂ (SPIE = 0)) { - state = IIC_IDLE; - SPIE = 0; - LREL = 1; + /* + I2C̔xẴtOOSTDĂ܂Ƃ + ǁAȂ삷‚ + */ // WX^[hŁA荞݃slQ[g // ܂ǂ܂ĂȂ荞݂΁AēxAT[g @@ -104,58 +110,68 @@ __interrupt void int_iic_ctr( ) IRQ0_ast; } } + + // I2CIɉ镨 // hosu_read_end( ); // vǂݏoI rtc_unlock( ); - iic_burst_state = 0; - return; - } - if( SPD ) // 荞ݗv̓XgbvRfBV - // ʐM̍ŌB !ACKD ɗƂ͊荞ݗȂ (SPIE = 0 ̂ ) - { state = IIC_IDLE; SPIE = 0; - // I2CIɉ镨 // - rtc_unlock( ); + LREL = 1; + EI(); return; } - if( STD ) // 荞ݗvFX^[gRfBV + if( bit_iics_std ) // 荞ݗvFX^[gRfBV { - if( ( state == IIC_TX ) || ( state == IIC_RX ) - || ( state == IIC_RCV_REG_ADRS ) - ) + if( !( state == IIC_IDLE || state == IIC_TX_OR_RX )) { + // sp/nack 葹˂ + dbg_nop(); // Ȃ͂... +/* + // pPbg̐擪stƌȂB + // ʂɑs state = IIC_IDLE; - // no break // - } - } +/*/ + // gCĂ炤 + state = IIC_IDLE; + SPIE = 0; + LREL = 1; + EI(); +//*/ + } + // ʏ + } + + EI(); switch ( state ) { case ( IIC_IDLE ): // njĂяoɉB // Ȃ + iic_burst_state = 0; SPIE = 1; - state = IIC_RCV_REG_ADRS; WREL = 1; // EFCg - break; + state = IIC_RCV_REG_ADRS; + return; case ( IIC_RCV_REG_ADRS ): // QoCgځiWX^AhXjMɗ // WX^AhXM reg_adrs = IICA; + + WREL = 1; adrs_access_from = reg_adrs; tx_buf = vreg_ctr_read( reg_adrs ); // f[^̏Ă state = IIC_TX_OR_RX; - WREL = 1; - break; + return; case ( IIC_TX_OR_RX ): // ̎ɗ銄荞݁BSTȂ瑗MAf[^珑܂ -// if( TRC ){ // MtO ŋʂ̂́A荞ݒxɕsN肦 - if( STD ) + // if( TRC ) // MtO ŋʂ̂́A荞ݒxɕsN肦 + if( bit_iics_std ) { // X^[gRfBVotO // [h - if( COI ) + if( bit_iics_coi ) { // AhXvtO state = IIC_TX; // no break, no return // @@ -163,9 +179,9 @@ __interrupt void int_iic_ctr( ) else { // X^[gňႤfoCXĂ΂ꂽI - state = IIC_IDLE; // I SPIE = 0; LREL = 1; // EFCg? + state = IIC_IDLE; // I return; } } @@ -174,6 +190,7 @@ __interrupt void int_iic_ctr( ) state = IIC_RX; // f[^1oCgM̊荞݂ // no break, no return // } + /* FALLTHROUGH */ default: // o[Xg R/W łĂ΂邱ƂɂȂ if( state == IIC_TX ) @@ -184,11 +201,19 @@ __interrupt void int_iic_ctr( ) else { // M rx_buf = IICA; - vreg_ctr_write( reg_adrs, rx_buf ); - WREL = 1; - } - // WX^AhX̃CNg +#ifdef _I2C_ERR_ABORT_ + if( reg_adrs >= 0x80 || reg_adrs <= 1 ) + { + LREL = 1; // Ȃ񂩃f[^̂ŒʐMI nakԂ̂Ȃc + return; + } +#endif + vreg_ctr_write( reg_adrs, rx_buf ); + WREL = 1; + } + + // WX^AhX̃CNg /// ANZX|C^i߂ȂȃWX^ switch( adrs_access_from ) { @@ -205,8 +230,7 @@ __interrupt void int_iic_ctr( ) } break; default: - iic_burst_state = 0; // ی - reg_adrs += 1; + reg_adrs ++; } if( state == IIC_TX ) @@ -230,14 +254,10 @@ void IIC_ctr_Init( void ) IICAMK = 1; /* INTIICA disable */ IICAIF = 0; /* clear INTIICA interrupt flag */ - IICAPR0 = 1; /* set INTIICA high priority */ - IICAPR1 = 0; /* set INTIICA high priority */ +// IICAPR0 = 1; /* set INTIICA high priority */ +// IICAPR1 = 0; /* set INTIICA high priority */ X^bNs -#ifdef _MODEL_TEG2_ - P6 &= ~0x3; -#else P20 &= ~0x3; -#endif SVA = IIC_C_SLAVEADDRESS; IICF = 0x01; @@ -247,7 +267,7 @@ void IIC_ctr_Init( void ) SPIE = 0; // XgbvRfBVł̊荞݂֎~ WTIM = 1; // ACKԂclkLɌŒ肷 - ACKE = 1; // _CPU͖Ď̒ʐM͂߂邩ȂőclkJȂƂȂ + ACKE = 1; IICWH = 5; IICWL = 10; // LԂ̒ @@ -259,11 +279,9 @@ void IIC_ctr_Init( void ) IICE = 1; -#ifdef _MODEL_TEG2_ - PM6 &= ~0x3; /* set clock pin for IICA */ -#else PM20 &= ~0x3; /* set clock pin for IICA */ -#endif + + state = IIC_IDLE; } diff --git a/trunk/i2c_mcu.c b/trunk/i2c_mcu.c index 7ee4929..1c3e44c 100644 --- a/trunk/i2c_mcu.c +++ b/trunk/i2c_mcu.c @@ -3,17 +3,18 @@ de JHL cJZ '09 Feb - ======================================================== */ +#ifndef _WIN32 #pragma sfr #pragma di #pragma ei #pragma nop #pragma inline // memcpy()CCWJ(̕I) +#endif #include "incs_loader.h" #include "i2c_mcu.h" - // ======================================================== // WX^̃rbg // vtBbNXbAꕔ̃rbgWX^ɂԂ邽... @@ -42,14 +43,13 @@ #define TSF0 ( 1 << 6 ) // SOn -#define TAUS_MASK 0b0000101100001011; +#define TAUS_MASK 0x0B0B; // DMCn #define DRS ( 1 << 6 ) - // ======================================================== static void iic_mcu_send_st( ); static void iic_mcu_send_re_st( ); @@ -62,12 +62,12 @@ static err iic_mcu_call_slave( u8 slave ); // ======================================================== bit iic_mcu_wo_dma; volatile bit iic_mcu_busy; -volatile bit iic_mcu_initialized; +static volatile bit iic_mcu_initialized; -u8 iic_send_work[4]; -u8 *p_iic_send_wo_dma_dat; -u8 iic_send_wo_dma_len; +static u8 iic_send_work[4]; +static u8 *p_iic_send_wo_dma_dat; +static u8 iic_send_wo_dma_len; u8 iic_mcu_result; // ꕶ[h̎̓f[^ԂB // Xe[^XKvȂ炱Ă @@ -79,7 +79,7 @@ extern bit i2c_mcu_time_out_error; // ======================================================== void nop8() { - // nop11 ʂȂ̂ + // ɗ call 3clk, return 6clk } @@ -419,8 +419,8 @@ __interrupt void int_iic10( ) if( iic_send_wo_dma_len != 0 ) { SIO10 = *p_iic_send_wo_dma_dat; - p_iic_send_wo_dma_dat++; - iic_send_wo_dma_len--; + p_iic_send_wo_dma_dat ++; + iic_send_wo_dma_len --; return; } @@ -562,7 +562,7 @@ void iic_mcu_start( ) DEN1 = 0; I2C_PU_on(); - wait_ms( 20 ); // オ̂50usʂ + wait_ms( 1 ); // オ̂50usʂ SAU0EN = 1; nop8(); @@ -647,7 +647,7 @@ err iic_mcu_write_a_byte_codec( u8 adrs, u8 dat ) iic_mcu_send_a_byte( 0x20 ); iic_mcu_send_a_byte( count ); - count++; + count ++; iic_mcu_send_sp( ); iic_mcu_busy = false; diff --git a/trunk/i2c_twl.c b/trunk/i2c_twl.c index 1a2fa17..48c1447 100644 --- a/trunk/i2c_twl.c +++ b/trunk/i2c_twl.c @@ -1,13 +1,18 @@ +#ifndef _WIN32 + #pragma sfr /* @\WX^gp */ +#endif /*============================================================================*/ #include "config.h" -#ifdef _MCU_KE3_ -#else + +#ifndef _WIN32 + #pragma interrupt INTIICA0 int_iic_twl RB2 + #endif #include "incs.h" @@ -47,7 +52,7 @@ extern u8 vreg_twl[]; #define SMC SMC0 #define TRC TRC0 -#endif +#endif // _MCU_BSR_ #ifndef _MCU_BSR_ @@ -58,7 +63,7 @@ void IIC_twl_Stop( void ) void IIC_twl_Init( void ) { } -#else +#else // _MCU_BSR_ @@ -77,7 +82,7 @@ enum IIC_TWL_STATE{ #define wait_next { \ tot = 0; \ while( IICAIF != 1 ){ \ - tot++; \ + tot ++; \ if( tot == 0 ){ \ LREL = 1; \ return; \ @@ -89,9 +94,6 @@ enum IIC_TWL_STATE{ __interrupt void int_iic_twl( ) { u8 vreg_adrs; - u8 pre_dat; - u8 rcvd; - u16 tot; u8 state; // @ @@ -103,9 +105,12 @@ __interrupt void int_iic_twl( ) { u8 my_iics; - wait_next; // PoCgM҂ + { + u16 tot; + wait_next; // PoCgM҂ + } - my_iics = IICS; + my_iics = IICS; IICAIF = 0; if( my_iics & 0x02 ) // ( STD && !SPD ) @@ -129,6 +134,8 @@ __interrupt void int_iic_twl( ) } else if( ( my_iics & 0x03 ) == 0 ) // ( !STD && !SPD ) { + u8 rcvd; + // 炩M rcvd = IICA; WREL = 1; diff --git a/trunk/incs.h b/trunk/incs.h index 4ac3b15..cd33a79 100644 --- a/trunk/incs.h +++ b/trunk/incs.h @@ -1,19 +1,20 @@ +#ifndef _WIN32 #pragma SFR #pragma di #pragma ei #pragma nop #pragma stop #pragma halt +#endif #ifndef _WIN32 #pragma section @@CODE ROM_CODE //#pragma section @@CNST ROM_CNST #endif -# ifdef _WIN32 +#ifdef _WIN32 // VC̐Ԑǂɂ #include "sim/simOnWin.h" - # endif @@ -28,6 +29,8 @@ #include "jhl_defs.h" #include "user_define.h" +#include "hal.h" + #include "bsr_system.h" #include "renge\renge.h" #include "loader.h" diff --git a/trunk/incs_loader.h b/trunk/incs_loader.h index 535be09..4bb13b5 100644 --- a/trunk/incs_loader.h +++ b/trunk/incs_loader.h @@ -1,3 +1,4 @@ +#ifndef _WIN32 #pragma SFR #pragma di #pragma ei @@ -13,12 +14,20 @@ //#pragma section @@CNST FSL_CNST // ZbgĂȂ #pragma section @@CNSTL LDR_CNSL +#endif + +# ifdef _WIN32 +// VC̐Ԑǂɂ +#include "sim/simOnWin.h" +# endif //========================================================= #include "jhl_defs.h" #include "user_define.h" +#include "hal.h" + #include "bsr_system.h" #include "renge\renge.h" diff --git a/trunk/ini_VECT.c b/trunk/ini_VECT.c index 38bdea9..10ea9ea 100644 --- a/trunk/ini_VECT.c +++ b/trunk/ini_VECT.c @@ -1,8 +1,12 @@ +#ifndef _WIN32 + #pragma nop +#endif #include "config.h" +#ifndef _WIN32 //#pragma interrupt INTWDTI fn_intwdti // gp //#pragma interrupt INTLVI fn_intlvi // gp @@ -48,19 +52,10 @@ /* -ꂼ .c -#ifdef _MCU_KE3_ -#pragma interrupt INTIICA int_iic_ctr RB1 // CTR -#else // TS̓}U{ŃeRAWM͉H}eRŌLjvc #pragma interrupt INTIICA1 int_iic_ctr RB1 -#endif - -#ifdef _MCU_KE3_ -#else #pragma interrupt INTIICA0 int_iic_twl RB2 -#endif */ //#pragma interrupt INTTM00 fn_inttm00 @@ -79,6 +74,7 @@ //#pragma interrupt INTTM06 fn_inttm06 //#pragma interrupt INTTM07 fn_inttm07 + //#define _irq_debug_ /****************************************************/ /* gp̃_~[֐` */ @@ -379,4 +375,9 @@ __interrupt void intp5( ) } +#else + +#include "sim/sim_interrupt_decrare.c" + +#endif diff --git a/trunk/led.c b/trunk/led.c index aa78b7d..9dc9cc0 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -1,8 +1,11 @@ /* ======================================================== LED.c ======================================================== */ +#ifndef _WIN32 + #pragma sfr +#endif #include "incs.h" #include "led.h" @@ -54,11 +57,11 @@ u8 fade_to( u8 now, u8 goal ) { if( now > goal ) { - now -= 1; + now --; } else { - now += 1; + now ++; } } return( now ); @@ -119,14 +122,14 @@ void LED_init( ) 1 << BIT_CKS0 | 0 << BIT_CCS0 | 0 << BIT_MASTER0 | 4 << BIT_STS0 | 0 << BIT_CIS0 | 4 << BIT_MD123 | 1 << BIT_MD0; ISC = 0; - TOM0 = 0b0000000011111110; // o̓[hB4PWMo͂Ȃ1ɂȂTO5ȍ~ɃNbN͂Ȃ + TOM0 = 0x00FE; // o̓[hB4PWMo͂Ȃ1ɂȂTO5ȍ~ɃNbN͂Ȃ - TOL0 = 0b0000000000000000; // o͂𔽓]邩tO + TOL0 = 0x0000; // o͂𔽓]邩tO - TO0 = 0; // ^C}[쒆ŁA^C}[o͂ɂĂȂƂ̃s̃b`B^C}[o͂gȂȂO - TOE0 = 0b0000000011101110; // TOx^C}[W[H + TO0 = 0x0000; // ^C}[쒆ŁA^C}[o͂ɂĂȂƂ̃s̃b`B^C}[o͂gȂȂO + TOE0 = 0x00EE; // TOx^C}[W[H - TS0 = 0b0000000011101111; // Jn + TS0 = 0x00EF; // Jn TDR00 = LED_BRIGHT_MAX - 1; // 10bit @@ -151,8 +154,8 @@ void LED_init( ) void LED_stop( ) { - TT0 = 0b0000000011101111; // Ē~iȂƂ߁j - TOE0 = 0b0000000000000000; // TOx^C}[W[H(GPIOɂȂ) + TT0 = 0x00EF; // Ē~iȂƂ߁j + TOE0 = 0x0000; // TOx^C}[W[H(GPIOɂȂ) TAU0EN = 0; LED_pow_red = 0; LED_CAM = 0; @@ -201,11 +204,11 @@ void tsk_led_wifi( ) default: LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT]; } - state_wifi_tx++; + state_wifi_tx ++; if( state_wifi_tx == 32 ) // _ŌA_ĂԂ̒ { state_wifi_tx = 0; - flag_wifi_TX -= 1; + flag_wifi_TX --; } task_interval = 25; return; @@ -228,11 +231,11 @@ void tsk_led_wifi( ) } else if( LED_duty_WiFi < vreg_ctr[VREG_C_LED_BRIGHT] ) { - LED_duty_WiFi += 1; + LED_duty_WiFi ++; } else { - LED_duty_WiFi -= 1; + LED_duty_WiFi --; } } task_interval = 3; @@ -243,20 +246,19 @@ void tsk_led_wifi( ) - bit info_led_pattern_updated; /* ======================================================== m点LED ======================================================== */ // Of[VvZȂ -void calc_info_led_fade_out( st_LED_dim_status* tgt_led ) +static void calc_info_led_fade_out( st_LED_dim_status* tgt_led ) { tgt_led -> to = 0; tgt_led -> delta = ( 0 - tgt_led -> now ) / 64; } -void calc_info_led_next_frame( st_LED_dim_status* tgt_led, u8 color ) +static void calc_info_led_next_frame( st_LED_dim_status* tgt_led, u8 color ) { tgt_led -> to = color * 128; // Of[Ṽf^vZ @@ -317,7 +319,7 @@ void tsk_led_notify( ) vreg_ctr[ VREG_C_LED_NOTIFY_FLAG ] |= REG_BIT_IN_LOOP; if( info_LED.info_LED.last_loop != 255 ) // 255:[v { - loops++; + loops ++; if( loops > info_LED.info_LED.last_loop ) { frame = 0; @@ -337,7 +339,7 @@ void tsk_led_notify( ) calc_info_led_next_frame( &LED_dim_status_info_B, info_LED.info_LED.blu[frame] ); } - time_to_next_frame -= 1; + time_to_next_frame --; } } diff --git a/trunk/led.h b/trunk/led.h index d745ba4..e92d209 100644 --- a/trunk/led.h +++ b/trunk/led.h @@ -17,9 +17,13 @@ #define LED_duty_notify_blu TDR02 // dutyς܂ +#ifndef _WIN32 #define LED_pow_red P4.2 #define LED_CAM P7.5 - +#else +#define LED_pow_red mcuRegP[ _P4_2 ] +#define LED_CAM mcuRegP[ _P7_5 ] +#endif #define NOTIFY_LED_TERM 32 @@ -27,11 +31,7 @@ #define LED_BRIGHT_MAX 0x00FF // ==================================== -#ifdef _MCU_BSR_ // dgMpX -#define WIFI_txLatch PIF21 -#else -#define WIFI_txLatch PIF7 -#endif +#define WIFI_txLatch PIF21 // dgMpX diff --git a/trunk/led_cam.c b/trunk/led_cam.c index a49477e..6e0d28a 100644 --- a/trunk/led_cam.c +++ b/trunk/led_cam.c @@ -3,8 +3,12 @@ \n BLINK,*_PLUSE ̎́A1͕K̏ԂɂȂ܂B \n ̊Ԃ OFFBLINK ȂǂƁAOFF܂B *********************************************************/ +#ifndef _WIN32 + #pragma sfr +#endif + #include "incs.h" #include "led.h" @@ -31,11 +35,12 @@ void tsk_led_cam( ) { if( task_interval != 0 ) { - task_interval -= 1; + task_interval --; return; } } - cam_led_update = false; // TWL ̃uNݒiꔭ_ĵ + + cam_led_update = false; // TWL ̃uNݒiꔭ_ĵ EI(); if( system_status.pwr_state == SLEEP ) // sleepA @@ -128,7 +133,7 @@ void cam_led_twl() LED_CAM = 0; state_led_cam = 0; } - task_interval = 600 / SYS_INTERVAL_TICK + 250; + task_interval = (u8)( 600 / SYS_INTERVAL_TICK ) + 250; break; case( TWL_CAMLED_ON ): diff --git a/trunk/led_pow.c b/trunk/led_pow.c index 2d0bbe9..5906ee8 100644 --- a/trunk/led_pow.c +++ b/trunk/led_pow.c @@ -20,8 +20,12 @@ enum LED_ILUM_MODE{ LED_POW_ILM_CEOFF }; ======================================================== */ +#ifndef _WIN32 + #pragma sfr +#endif + #include "incs.h" #include "led.h" @@ -60,9 +64,9 @@ extern u8 fade_to2( st_LED_dim_status* status ); // ======================================================== // dLED̃X[vp^[̃Xe[^X -u8 time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; -u8 frame_sleep; -st_LED_dim_status LED_dim_status_sleep; +static u8 time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; +static u8 frame_sleep; +static st_LED_dim_status LED_dim_status_sleep; extern bit ledInitialized; extern bit BT_IN_CHG_delayed_n; @@ -126,7 +130,7 @@ void tsk_led_pow( ) { LED_duty_notify_blu = 0; LED_duty_notify_grn = 0; - LED_duty_notify_red = LED_pow_red ? 255: 0; + LED_duty_notify_red = ( LED_pow_red == 0 )? 0 : 255; } } @@ -175,12 +179,12 @@ static void led_pow_sleep( ) led_fade_to2( LED_duty_pow_blu, &LED_dim_status_sleep ); // ̃t[ɐi߂H - time_to_next_frame_sleep -= 1; + time_to_next_frame_sleep --; if( time_to_next_frame_sleep == 0 ) { time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; - frame_sleep += 1; + frame_sleep ++; if( frame_sleep >= LED_SLEEP_FRAME_NUM -1 ) { frame_sleep = 0; @@ -240,7 +244,7 @@ static void led_pow_bt_empty() led_fade_to( LED_duty_pow_blu, 0 ); // Ԃ̓_Ńp^[wł - delay += 1; + delay ++; if( delay < 64 ) // t[̕ێԉ҂ { return; @@ -255,7 +259,7 @@ static void led_pow_bt_empty() { LED_pow_red = 0; } - red_blink_poi += 1; + red_blink_poi ++; if( red_blink_poi >= 32 ) { red_blink_poi = 0; diff --git a/trunk/loader.c b/trunk/loader.c index f7361a6..85c7d4e 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -7,6 +7,8 @@ zXg̒ʐMƁAȏAt@[̃`FbNsB ======================================================== */ +#ifndef _WIN32 + #pragma SFR #pragma di #pragma ei @@ -15,7 +17,7 @@ #pragma halt #pragma opc - +#endif #include "incs_loader.h" #include @@ -57,15 +59,13 @@ static fsl_u08 fsl_MK2H_bak_u08; /* } // ======================================================== -void FSL_Open( void ); -void FSL_Close( void ); -void hdwinit( void ); -static void hdwinit2( ); -static void chk_platform_type(); -static void chk_firm_broke(); +void hdwinit(); +static void hdwinit2(); +static void chk_platform_type(); +static void chk_firm_broke(); -extern void main_loop( ); +extern void main_loop(); @@ -107,13 +107,15 @@ void main( ) // ʏ̓d // drڑAƑ҂Ă݂(`^O΍) u16 pwup_delay0; - for( pwup_delay0 = 0xFFFF; pwup_delay0 != 0; pwup_delay0-- ){;}; + for( pwup_delay0 = 0xFFFF; pwup_delay0 != 0; pwup_delay0 -- ){;}; } hdwinit2( ); +#ifndef _WIN32 // t@[̐`FbN // chk_firm_broke(); +#endif // V䔻 chk_platform_type(); @@ -140,7 +142,7 @@ void chk_firm_broke() if( *( u8 * )( MGC_FOOT +2 ) != ':' ) // ς̂܂ { - comp += 1; + comp ++; } if( comp != 0 ) @@ -168,6 +170,14 @@ void chk_platform_type() { // CTRt@~ // system_status.family = (enum _family)( DEV_DET >> 1 ); /// ... + if( system_status.family == FAMILY_SPFL ) + { + pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_AMO; + } + else + { + pm_reg_bit_vddlcd = PM_REG_BIT_VDDLCD_CGS; + } // CTR̊J@ // // ꉞ @@ -206,15 +216,15 @@ void hdwinit( void ) { // X^[gAbv[`ɌĂт܂ DI( ); /* }X^荞݋֎~ */ - CMC = 0b00010000; /* X1U(̓|[g)AXT1gpAd͔U͕sɕtʏ */ - CSC = 0b10000000; /* X1UȂAXT1UAU */ + CMC = bits8(0,0,0,1, 0,0,0,0); /* X1U(̓|[g)AXT1gpAd͔U͕sɕtʏ */ + CSC = bits8(1,0,0,0, 0,0,0,0); /* X1UȂAXT1UAU */ OSMC = 0x01; /* BWX^ */ - CKC = 0b00001000; /* CPU/ӃNbN=fMAINAfMAIN=fMXAfCLK=fMX */ + CKC = bits8(0,0,0,0, 1,0,0,0); /* CPU/ӃNbN=fMAINAfMAIN=fMXAfCLK=fMX */ /*--- doH̐ݒ ---*/ /* Zbg̃ftHǵAIvVEoCgɂĎw肳 */ - LVIS = 0b00000000; /* VLVI = 4.22}0.1V */ - LVIM = 0b00000000; /* LVI֎~ */ + LVIS = 0x00; /* VLVI = 4.22}0.1V */ +// LVIM = 0x00; /* LVI֎~ */ /* dd(VDD)od(VLVI)Ɋ */ /* dd(VDD)od= PEDOMETER_LOG_SIZE ) { pedolog_overflow = true; -// NOP(); // ɗ悤ƃoO +// dbg_nop(); // ɗ悤ƃoO break; } else @@ -314,7 +337,7 @@ static void fill_hosu_hist_hours( u16 hours ) { pool.vreg_c_ext.pedo_log[ p_record ] = 0; } - hours -= 1; + hours --; } return; @@ -331,15 +354,18 @@ void clear_hosu_hist() u8 hours = PEDOMETER_LOG_SIZE; do { - hours -= 1; + hours --; pool.vreg_c_ext.pedo_log[ hours ] = 0xFFFF; } while( hours != 0 ); - vreg_ctr[ VREG_C_ACC_HOSU_L ] = 0; + + DI(); + vreg_ctr[ VREG_C_ACC_HOSU_L ] = 0; vreg_ctr[ VREG_C_ACC_HOSU_M ] = 0; vreg_ctr[ VREG_C_ACC_HOSU_H ] = 0; p_record = 0; pedolog_overflow = false; + EI(); } @@ -379,13 +405,13 @@ u8 hosu_read( ) if( iic_burst_state <= 5 ) { rv = *( (u8*)&cal_buff + iic_burst_state ); // - iic_burst_state += 1; + iic_burst_state ++; return( rv ); } else { u16 temp; - // 16rbgŋL^Ă̂ł΂炵đ todo: Ɗy@񂶂 + // 16rbgŋL^Ă̂ł΂炵đ /// Ɗy@񂶂 temp = pool.vreg_c_ext.pedo_log[ p_record_buffer ]; if( !pedolog_read_msb ) { @@ -400,7 +426,7 @@ u8 hosu_read( ) } else { - p_record_buffer -= 1; + p_record_buffer --; } } pedolog_read_msb ^= 1; @@ -446,7 +472,7 @@ static u16 get_long_hour() if( is_leapyear(year) && ( 3 <= month )) { // [NŁA[ - long_hour += 1; + long_hour ++; } long_hour += day - 1; long_hour *= 24; // @@ -472,6 +498,7 @@ static u16 get_long_hour() /* ======================================================== @yʕB @Kv\Ȑxőł؂ + pcŃV~[Vđv ======================================================== */ static unsigned long my_sqrt(unsigned long x) { @@ -526,7 +553,12 @@ static u16 calc_hours_spend( u8 year ) else if( cal_log_latest_year == ( year -1 ) ) { // N܂łƂ - return( ( ( 365 + ( is_firstyear(year) ? 1: 0 )) * 24 ) - last_hour_fny + now_longhour ); + u16 temp = 365 * 24 - last_hour_fny + now_longhour; + if( is_firstyear(year) ) + { + temp += 24; + } + return( temp ); } else if( cal_log_latest_year < year ) { diff --git a/trunk/pedo_lpf_coeff.c b/trunk/pedo_lpf_coeff.c new file mode 100644 index 0000000..2e16755 --- /dev/null +++ b/trunk/pedo_lpf_coeff.c @@ -0,0 +1,83 @@ + +#include "incs.h" + +// ========================================================= +#define TAP 64 +#define FIL_COEFF_QUANT 10 +const s8 lpf_coeff[]={ +/* +Window Function Algorithm LPF +Sampling Frequency = 100.0 +cutoff1 = 6.0000000 +Tap Count =64 +Kaiser Constant = 7.000000 +Quantized by 11 [bits] + */ +/* 0,// [0] + 0, + 0, + 0, + 0, + 0, + 0, + 0, +*/ + 1,// 8 + 2, + 2, + 3, + 3, + 2, + 0, + -2, + -5,// 16 + -9, + -13, + -16, + -16, + -13, + -6, + 4, + 18,// 24 + 37, + 56, + 77, + 95, + 110, + 119, + 122, + 119,// 32 + 110, + 95, + 77, + 56, + 37, + 18, + 4, + -6,// 40 + -13, + -16, + -16, + -13, + -9, + -5, + -2, + 0,// 48 + 2, + 3, + 3, + 2, + 2, + 1, +/* + 0, + 0,// 56 + 0, + 0, + 0, + 0, + 0, + 0, + 0 +*/ +}; diff --git a/trunk/pedometer.h b/trunk/pedometer.h index 56252a0..8760308 100644 --- a/trunk/pedometer.h +++ b/trunk/pedometer.h @@ -1,8 +1,14 @@ #ifndef _pedo_ #define _pedo_ +#ifdef WIN32 +typedef unsigned char bit; +typedef unsigned char u8; +typedef unsigned short u16; +#endif + // ========================================================= extern bit pedolog_read_msb; @@ -14,6 +20,7 @@ extern bit pedolog_read_msb; #define hosu_read_end() pedolog_read_msb = 0 u8 hosu_read( ); +void hosu_increment_if_necessary(); void fill_hosu_hist_hours( u16 ); void clear_hosu_hist(); void pedometer(); diff --git a/trunk/pm.c b/trunk/pm.c index 8fb1bec..8def2ab 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -4,8 +4,12 @@ nintendo '08 Dec ======================================================== */ +#ifndef _WIN32 + #pragma nop +#endif + #include "incs.h" #include "adc.h" #include "led.h" @@ -20,27 +24,27 @@ // ======================================================== -u8 raw_adc_temperature; -BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED; -static u8 ntr_pm_reg_shadow; // NTR PMIC WX^~[ -bit bt_authorized; // obep[^MρB[dJn -u8 chg_led_override; // A_v^ƂA[d邵ȂɊւ炸΂炭_ +u8 raw_adc_temperature; +BT_VENDER battery_manufacturer = BT_VENDER_NOT_CHECKED; +static u8 ntr_pm_reg_shadow; // NTR PMIC WX^~[ +bit bt_authorized; // obep[^MρB[dJn +u8 chg_led_override; // A_v^ƂA[d邵ȂɊւ炸΂炭_ -static u16 bt_volt16; +static u16 bt_volt16; -static bit ntr_pm_bt_low_old; -bit BT_CHG_STAT_Change; -bit BT_IN_CHG_delayed_n; +static bit ntr_pm_bt_low_old; -bit temp_zone_charge_disable; // xŏ[d~鎞ɃqXeVXt邽 +bit BT_IN_CHG_delayed_n; +bit temp_zone_charge_disable; // xŏ[d~鎞ɃqXeVXt邽 -u8 pmic_version; -u8 mgic_version[2]; +u8 pmic_version; +u8 mgic_version[2]; -static bt_param_* p_bt_param; +u8 pm_reg_bit_vddlcd; + +static bt_param_* p_bt_param; +extern const bt_param_ bt_param[]; -static err send_cmd_mgic_2B( u8 reg, u16 dat ); -static err read_mgic_2B( u8 reg, u8* dat ); // ======================================================== @@ -53,6 +57,13 @@ static void bt_param_select(); static void bt_batt_update_twl(); static void bt_batt_update_ntr(); +// bp[ +static err send_cmd_mgic_2B( u8 reg, u16 dat ); +static err read_mgic_2B( u8 reg, u8* dat ); +static err read_BT_SOC( u8* dest ); +static err read_BT_voltage( u8* dest ); +static u8 conv_ctr_bt_to_twl_bt(); + // ======================================================== @@ -66,6 +77,7 @@ const u8 BT_MANUF_BORDER[] = { }; + /* ======================================================== dr̊Ǘ @@ -87,18 +99,15 @@ const u8 BT_MANUF_BORDER[] = { void tsk_batt( ) { - static u8 task_interval = 0; + static u8 task_interval; - if( system_status.pwr_state != OFF_TRIG ) + if( task_interval -- != 0 ) { - if( task_interval-- != 0 ) - { - return; - } - else - { - task_interval = (u8)( INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); - } + return; + } + else + { + task_interval = (u8)( INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); } // A_v^Xe[^XXV // @@ -117,11 +126,18 @@ void tsk_batt( ) bt_get_charge_status(); // CCIC - LED_CHARGE = ( ! BT_IN_CHG_delayed_n )? 1: 0; // LEDɔf + if( ! BT_IN_CHG_delayed_n ) // LEDɔf + { + LED_CHARGE = 1; + } + else + { + LED_CHARGE = 0; + } // A_v^‚ȂuԁA[dłb킴Ɠ_BdĂ邱Ƃ킩点邽߁B if( chg_led_override != 0 ){ // 猩΂킩邪Au(NbN)鎖BC‚l邩ȁcH - chg_led_override -= 1; + chg_led_override --; LED_CHARGE = 1; } @@ -132,17 +148,14 @@ void tsk_batt( ) // tsk_misc󂯂 // drc // - if( system_status.pwr_state != ON_CHECK ) - { - BT_get_left(); - } + BT_get_left(); } -#define RAW_TEMP_LH 75 -#define RAW_TEMP_LL 61 -#define RAW_TEMP_HL 184 -#define RAW_TEMP_HH 189 +#define RAW_TEMP_LH 75 // 50 [degC] +#define RAW_TEMP_LL 61 // 55 +#define RAW_TEMP_HL 184 // 1 +#define RAW_TEMP_HH 189 // -1 #define AVG_COUNT 40 /* ******************************************************* @@ -227,19 +240,17 @@ void bt_get_charge_status() ***********************************************************/ void pm_chk_adapter() { - static u8 pm_extdc_old; - u8 temp_pm_extdc; + static bit pm_extdc_old; - temp_pm_extdc = (u8)!PM_EXTDC_n; // volatilê - if( pm_extdc_old != temp_pm_extdc ) + if( pm_extdc_old != PM_EXTDC_n ) // HAL ʂ߁A PM_EXTDC_n volatile ɂSzȂ { - pm_extdc_old = temp_pm_extdc; - if( temp_pm_extdc ) + pm_extdc_old = PM_EXTDC_n; + if( !PM_EXTDC_n ) { // h set_bit( 1, vreg_ctr[VREG_C_STATUS], REG_BIT_POW_SUPPLY ); set_irq( VREG_C_IRQ1, REG_BIT_BT_DC_CONNECT ); - chg_led_override = (u8)( 3000 / INTERVAL_TSK_BATT ); + chg_led_override = (u8)( 3000 / INTERVAL_TSK_BATT ); // 덷~ςŎ4.5sec炢AȂ } else { @@ -296,6 +307,9 @@ void BT_chk() battery_manufacturer_old = battery_manufacturer; BT_model_detect(); + bt_param_select(); // obecʕ␳p[^ȂǃZbg @łAƂ肠̒l(pi)wɂĂB + // ʂrcompvZ邪A|C^QƂ̂₾A@ȂvZȂƂʓ| + if( system_status.model != MODEL_JIKKI ) { bt_authorized = false; @@ -303,8 +317,6 @@ void BT_chk() // ܂ } - bt_param_select(); // obecʕ␳p[^ȂǃZbg - if(( battery_manufacturer_old != battery_manufacturer ) || bt_force_update ) { @@ -319,7 +331,7 @@ void BT_chk() BT_mgic_init(); // @픻s܂ } bt_authorized = true; - renge_task_immed_add( tski_BT_temp_update ); // drxĎX^[g + renge_task_immed_add( tski_BT_temp_update ); // drxĎ } @@ -362,6 +374,17 @@ void BT_model_detect() system_status.model = MODEL_JIKKI; // obe̎́ŏ㏑ } + // TShome{^A@͖ڑȂ̂ŗv[q /// gndɂƂ΂悩c + if( system_status.model == MODEL_TS_BOARD ) + { + PM_SW_HOME_n_TSBOARD = 1; + } + else + { + PM_SW_HOME_n_TSBOARD = 0; + SW_HOME_n_TSBOARD_RAW = 0; /// @open ǂł񂾂 + } + // dr[J[̎ // { u8 i; @@ -413,7 +436,6 @@ static void BT_mgic_quick_start() #define MGIC_CMD_RESET 0x5400 static void BT_mgic_init() { - u8 temp; u8 origParam[4]; /* @@ -456,7 +478,7 @@ static void BT_mgic_init() u8 loop; // 16oCgƂɋ؂Ƃ̂Ɓ@imCY΍Ƃ񂾂ǁAӖ񂩁Hj - for( loop = 0; loop < 4; loop++ ) + for( loop = 0; loop < 4; loop ++ ) { iic_mcu_set_wo_dma( ); iic_mcu_write( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_BT_PARAM + loop*16, 16, p_bt_param->mg_param + loop*16 ); @@ -473,14 +495,16 @@ static void BT_mgic_init() wait_ms( 150 + 15 ); // 9. SOCǂށBxt@Ĉ߁B - temp = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC ); + { u8 temp; + temp = iic_mcu_read_a_byte( IIC_SLA_BT_GAUGE, BT_GAUGE_REG_SOC ); - if(( p_bt_param->verify.low <= temp ) && ( temp <= p_bt_param->verify.hi )) - { - // JX^fOKI - }else{ - // s烊gĈH -// NOP(); + if(( p_bt_param->verify.low <= temp ) && ( temp <= p_bt_param->verify.hi )) + { + // JX^fOKI + }else{ + // s烊gĈH + // dbg_nop(); + } } // 10.RCOMPOCV߂ @@ -516,7 +540,7 @@ task_status_immed tski_BT_temp_update( ) { if( heikinka < 40 ) { - heikinka++; + heikinka ++; } else { @@ -570,151 +594,138 @@ task_status_immed tski_BT_temp_update( ) @BT_chk()sĂKv܂B **********************************************************/ void BT_get_left(){ - u8 temp_fuel[2]; - static u16 hysteresis; + u8 temp[2]; + u8 reg_volatile_temp_bt_remain,reg_volatile_temp_bt_remain_fine; // I2C̔񓯊ǂݍ݂ł̂‚h~ Lbv̏ + u8 fuel_cap_by_voltage; // dŃLbvɎg -#ifdef _DEBUG_BT_FUEL_ - if( vreg_ctr[ VREG_C_COMMAND3 ] == 'd' ) + // drc + if( system_status.model == MODEL_TS_BOARD + || system_status.model == MODEL_SHIROBAKO ) { - vreg_ctr[ VREG_C_BT_REMAIN ] = vreg_ctr[ VREG_C_DBG01 ]; - } - else -#endif - { - if( system_status.model == MODEL_TS_BOARD ) + // TS & // + if( read_BT_SOC( temp ) == ERR_SUCCESS ) { - // TS // - vreg_ctr[ VREG_C_BT_REMAIN ] = 99; - vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200; - } - else if( system_status.model == MODEL_SHIROBAKO ) - { - // // - // drc - if( read_mgic_2B( BT_GAUGE_REG_SOC, temp_fuel ) != ERR_SUCCESS ) - { - // G~[V@\ - vreg_ctr[ VREG_C_BT_REMAIN ] = 99; - } - else - { - vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0]; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1]; - } - -//* - // drd - if( read_mgic_2B( BT_GAUGE_REG_VCELL, temp_fuel ) == ERR_SUCCESS ) - { - vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_fuel[0]; - } - else -//*/ - { - vreg_ctr[ VREG_C_BT_VOLTAGE ] = 200; - } + reg_volatile_temp_bt_remain = temp[0]; + reg_volatile_temp_bt_remain_fine = temp[1]; } else { - // @ // - u8 temp_v[2]; - u8 temp_force_fuel_left; - - // cʃ[h - if( read_mgic_2B( BT_GAUGE_REG_SOC, temp_fuel ) != ERR_SUCCESS ) - { - // cICNACK cobe͂ꂽ - vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR; - bt_authorized = false; - vreg_ctr[ VREG_C_BT_REMAIN ] = 0; - force_off = true; - } - else - { - // obep[^̊֌WŃrbgVtgKv - bt_volt16 = temp_fuel[0] * 256 + temp_fuel[1]; - bt_volt16 /= p_bt_param->v_scale; - temp_fuel[0] = (u8)(( bt_volt16 >> 8 ) & 0xFF); - if( temp_fuel[0] == 0 ) - { - // 0%̎1.00%ɏグ - // [dJn΂炭͓drcʂ̂ - // 0%ɓBĂ܂Ƃ̂ - temp_fuel[0] = 1; - temp_fuel[1] = 0; - } - else - { - temp_fuel[1] = (u8)(bt_volt16 & 0xFF); - } - - - // dŃLbv - if( read_mgic_2B( BT_GAUGE_REG_VCELL, temp_v ) == ERR_SUCCESS ) - { - vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp_v[0]; - - bt_volt16 = ( temp_v[0] * 256 + temp_v[1] ); - - if( bt_volt16 > V_TH_30 ) - { - temp_force_fuel_left = 100; - hysteresis = 0; - } - else if( bt_volt16 - hysteresis > V_TH_LO ) - { - temp_force_fuel_left = 30; - hysteresis = 0; - } - else if( bt_volt16 > V_TH_EMPTY ) - { - temp_force_fuel_left = BATT_TH_LO; // - hysteresis = 500; - } - else if( bt_volt16 > V_TH_ZERO ) - { - temp_force_fuel_left = BATT_TH_EMPTY; - hysteresis = 500; - } - else if( bt_volt16 > V_TH_FORCE_OFF ) - { - temp_force_fuel_left = 0; - hysteresis = 500; - } - else - { - force_off = true; - hysteresis = 500; - } - } - } - - // [diA_v^hĂĵɏ[dĂȂ - // AiȂƂjf̓drcʂ60%ȏiCCICoOj - // = [dBdrւĂMGIC100%ԂȂ - if( !BT_CHG_Ena_n && BT_IN_CHG_delayed_n ){ - vreg_ctr[ VREG_C_BT_REMAIN ] = 100; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0; - } - else - { // ȂɃLbv - if( temp_force_fuel_left > temp_fuel[0] ) - { - vreg_ctr[ VREG_C_BT_REMAIN ] = temp_fuel[0]; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = temp_fuel[1]; - } - else - { - vreg_ctr[ VREG_C_BT_REMAIN ] = temp_force_fuel_left; - vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = 0; - } - } - } - if( system_status.taikendai_nbd ) - { - vreg_ctr[ VREG_C_BT_REMAIN ] = 100; + // G~[V@\ + // @œdf͕sւ邾낤 + reg_volatile_temp_bt_remain = 99; + reg_volatile_temp_bt_remain_fine = 0; } } + else + { + // @ // + // cʃ[h + if( read_BT_SOC( temp ) != ERR_SUCCESS ) + { + // cICNACK cobe͂ꂽ + vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_MGIC_ERR; + bt_authorized = false; + reg_volatile_temp_bt_remain = 0; + force_off = true; + } + else + { + u16 temp_u16; + + // obep[^̊֌WŃrbgVtgKv + temp_u16 = temp[0] * 256 + temp[1]; + temp_u16 /= p_bt_param->v_scale; + reg_volatile_temp_bt_remain = (u8)(( temp_u16 >> 8 ) & 0xFF ); + if( reg_volatile_temp_bt_remain == 0 ) + { + // 0%̎1.00%ɏグ + // [dJn΂炭͓drcʂ̂ + // 0%ɓBĂ܂Ƃ̂ + reg_volatile_temp_bt_remain = 1; + reg_volatile_temp_bt_remain_fine = 0; + } + else + { + reg_volatile_temp_bt_remain_fine = (u8)(temp_u16 & 0xFF); + } + } + } + + // drd + { + if( read_BT_voltage( temp ) != ERR_SUCCESS ) // 2byte read + { + temp[0] = (u8)( V_BT_4000MV / 256 ); // drdǂ߂Ȃ4000mVƂɂĂB + temp[1] = 0; + } + vreg_ctr[ VREG_C_BT_VOLTAGE ] = temp[0]; + bt_volt16 = ( temp[0] * 256 + temp[1] ); + } + + + // dŃLbv...̏ + { + static u16 hysteresis; + + if( bt_volt16 > V_TH_30 ) + { + fuel_cap_by_voltage = 100; + hysteresis = 0; + } + else if( bt_volt16 - hysteresis > V_TH_LO ) + { + fuel_cap_by_voltage = 30; + hysteresis = 0; + } + else if( bt_volt16 > V_TH_EMPTY ) + { + fuel_cap_by_voltage = BATT_TH_LO; // + hysteresis = 500; + } + else if( bt_volt16 > V_TH_ZERO ) + { + fuel_cap_by_voltage = BATT_TH_EMPTY; + hysteresis = 500; + } + else if( bt_volt16 > V_TH_FORCE_OFF ) + { + fuel_cap_by_voltage = 0; + hysteresis = 500; + } + else + { + force_off = true; + hysteresis = 500; + } + } + + + // [diA_v^hĂĵɏ[dĂȂ + // AiȂƂjf̓drcʂ60%ȏiCCICoOj + // = [dBdrւĂMGIC100%ԂȂ + if( !BT_CHG_Ena_n && BT_IN_CHG_delayed_n ){ + reg_volatile_temp_bt_remain = 100; + reg_volatile_temp_bt_remain_fine = 0; + } + else + { // dł̃Lbv|邩H + if( fuel_cap_by_voltage < reg_volatile_temp_bt_remain ) + { + reg_volatile_temp_bt_remain = fuel_cap_by_voltage; + reg_volatile_temp_bt_remain_fine = 0; + } + } + + /* + \ɖȂdĂ炵̂ŃPAł悵 + if( system_status.taikendai_nbd && system_status.model != MODEL_TS_BOARD ) // dr[qɓd‚ȂĂĒlsȂߏ㏑B + { + reg_volatile_temp_bt_remain = 100; + } + */ + + vreg_ctr[ VREG_C_BT_REMAIN ] = reg_volatile_temp_bt_remain; + vreg_ctr[ VREG_C_BT_REMAIN_FINE ] = reg_volatile_temp_bt_remain_fine; // twl̃WX^XV@(CTRɊ荞ݓOɍXVȂƊ荞݂̃^C~O܂Ȃ) bt_batt_update_twl(); @@ -723,7 +734,7 @@ void BT_get_left(){ { static u8 bt_remain_old_ctr; - if( bt_remain_old_ctr != vreg_ctr[ VREG_C_BT_REMAIN ] ) + if( bt_remain_old_ctr != reg_volatile_temp_bt_remain ) // CTRɒʒm { if( (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) && ( BATT_TH_LO < bt_remain_old_ctr ))|| @@ -793,7 +804,7 @@ void PM_LCD_off() u8 tot; PM_BL_set( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); - vreg_ctr[VREG_C_STATUS] &= 0b10011111; + vreg_ctr[VREG_C_STATUS] &= bits8(1,0,0,1, 1,1,1,1); if( (( REG_BIT_BL_U_OFF | REG_BIT_BL_L_OFF ) & ~vreg_ctr[ VREG_C_IRQ_MASK3 ] ) != 0 ) { @@ -808,14 +819,14 @@ void PM_LCD_off() // td؂ // - SPFL_LCD_AMOL_HV_CONT = 0; // ̃t@~łQȂ + SPFL_LCD_AMOL_HV_CONT = 0; // ̃t@~łLȂ̂ŕQȂ // 50msƂ҂‚AmF܂傤ˁc if( read_pmic( PM_REG_ADRS_VDD_LCD ) != 0 ) { if( system_status.family == FAMILY_SPFL ) { - wait_ms( 10 ); // At@X15V؂Ƃ̃EFCgB͎b + wait_ms( 10 ); // At@X15V؂Ƃ̃EFCgB } PM_TCOM_off(); @@ -883,8 +894,8 @@ err PM_BL_set( u8 dat ) // XVĂ܂B #endif // PMICBL̃rbgƁAMCUSTATUSWX^̃rbgʒutȂߓւ - vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & 0b10011111 ) - | ( (( blset << 6 ) | ( blset << 4 )) & 0b01100000 )); + vreg_ctr[VREG_C_STATUS] = (( vreg_ctr[VREG_C_STATUS] & bits8(1,0,0,1, 1,1,1,1) ) + | ( (( blset << 6 ) | ( blset << 4 )) & bits8(0,1,1,0, 0,0,0,0) )); // 荞 /// rbg܂Ƃ߂čŝŁA‚̊֐gps @@ -1022,7 +1033,7 @@ void PM_sys_pow_off( ) =========================================================*/ __interrupt void intp4_extdc( ) { -// chg_led_override = (u8)( 1000 / INTERVAL_TSK_BATT / SYS_INTERVAL_TICK ); +// chg_led_override = (u8)( 1000 / INTERVAL_TSK_BATT ); // chg_led_override = 4; } @@ -1193,7 +1204,8 @@ void codec_reg_init() { wait_ms( 100 ); - ntr_pm_bt_low_old = ( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? NTR_PM_BT_EMPTY: NTR_PM_BT_ENOUGH; // 1œdr؂ + ntr_pm_bt_low_old = conv_ctr_bt_to_twl_bt(); + iic_mcu_write_a_byte_codec( CODEC_REG_BT, (u8)ntr_pm_bt_low_old ); // SoC 珑 vol_reset(); @@ -1305,7 +1317,7 @@ static void bt_batt_update_ntr() else { - flag = (( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? NTR_PM_BT_EMPTY: NTR_PM_BT_ENOUGH ); // 1œdr؂ + flag = conv_ctr_bt_to_twl_bt(); if(( ntr_pm_bt_low_old != flag ) || !initialized ) { @@ -1315,3 +1327,54 @@ static void bt_batt_update_ntr() } } } + + +/* ======================================================== +========================================================= */ +static err read_BT_SOC( u8* dest ) +{ + if( vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ] != 0xFF ) + { + *dest = vreg_ctr[ VREG_C_HAL_OVW_BT_FUEL ]; + *(dest+1) = 0x00; + return ERR_SUCCESS; + } + else + { + return( read_mgic_2B( BT_GAUGE_REG_SOC, dest ) ); + } +} + + +/* ======================================================== +========================================================= */ +static err read_BT_voltage( u8* dest ) +{ + if( vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ] != 0xFF ) + { + *dest = vreg_ctr[ VREG_C_HAL_OVW_BT_VOLTAGE ]; +// *(dest+1) = 0x00; // gȂ@ǂQoCg[h֐pӂĂȂ̂ł + return ERR_SUCCESS; + } + else + { + return( read_mgic_2B( BT_GAUGE_REG_VCELL, dest ) ); + } +} + + +/* ======================================================== + drcʂtwlɃtOɂĕԂ +========================================================= */ +static u8 conv_ctr_bt_to_twl_bt() +{ +// ntr_pm_bt_low_old = ( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO )? NTR_PM_BT_EMPTY: NTR_PM_BT_ENOUGH; // 1œdr؂ + if( vreg_ctr[ VREG_C_BT_REMAIN ] <= BATT_TH_LO ) + { + return NTR_PM_BT_EMPTY; + } + else + { + return NTR_PM_BT_ENOUGH; + } +} diff --git a/trunk/pm.h b/trunk/pm.h index 215e7e5..423d771 100644 --- a/trunk/pm.h +++ b/trunk/pm.h @@ -15,16 +15,20 @@ #define BATT_TH_EMPTY 5 // dWX^ƒڔrłpɃItZbg -#define V_TH_30 (u16)( 3300 * 12.8 ) -#define V_TH_LO (u16)( 3200 * 12.8 ) -#define V_TH_EMPTY (u16)( 3150 * 12.8 ) -#define V_TH_ZERO (u16)( 3100 * 12.8 ) -#define V_TH_FORCE_OFF (u16)( 2900 * 12.8 ) +#define V_BT_4000MV (u16)( 4000 * 12.8 ) // dǂݏosp 4000mVݒ +#define V_TH_30 (u16)( 3300 * 12.8 ) // 30% +#define V_TH_LO (u16)( 3200 * 12.8 ) // 10% +#define V_TH_EMPTY (u16)( 3150 * 12.8 ) // 5% +#define V_TH_ZERO (u16)( 3100 * 12.8 ) // 0% +#define V_TH_FORCE_OFF (u16)( 2900 * 12.8 ) // 2.9V ŏIf //========================================================= +#ifdef _WIN32 +#define LED_CHARGE mcuRegP[ _P2_4 ] +#else #define LED_CHARGE P2.4 - +#endif //========================================================= @@ -101,7 +105,8 @@ enum NTR_PM_BT_STATUS{ #define PM_REG_BIT_VDD50A ( 1 << 4 ) // 0x02 pw cnt2 -#define PM_REG_BIT_VDDLCD 0x07 +#define PM_REG_BIT_VDDLCD_CGS 0x07 +#define PM_REG_BIT_VDDLCD_AMO 0x05 #define PM_REG_BIT_LCD_VCS ( 0x01 << 4 ) #define PM_REG_BIT_LCD_TCOM ( 0x01 << 3 ) @@ -111,11 +116,11 @@ enum NTR_PM_BT_STATUS{ // 0x05 pow save -#define PM_REG_BIT_VDD1P_1R15 0b00000000 -#define PM_REG_BIT_VDD1P_1R05 0b00001000 -#define PM_REG_BIT_VDD1P_0R90 0b00100000 -#define PM_REG_BIT_VDD_AUTO 0b00000111 -#define PM_REG_BIT_VDD_PWM 0b00000000 +#define PM_REG_BIT_VDD1P_1R15 bits8(0,0,0,0, 0,0,0,0) +#define PM_REG_BIT_VDD1P_1R05 bits8(0,0,0,0, 1,0,0,0) +#define PM_REG_BIT_VDD1P_0R90 bits8(0,0,1,0, 0,0,0,0) +#define PM_REG_BIT_VDD_AUTO bits8(0,0,0,0, 0,1,1,1) +#define PM_REG_BIT_VDD_PWM bits8(0,0,0,0, 0,0,0,0) #define DELAY_PM_TW_PWUP 16 + 2 @@ -134,6 +139,8 @@ extern bit bt_force_update; extern u8 pmic_version; extern u8 mgic_version[]; +extern u8 pm_reg_bit_vddlcd; // At@XΉ(dV[PXႤ) + //========================================================= err PM_sys_pow_on( ); @@ -153,7 +160,6 @@ void pm_chk_adapter(); void codec_reg_init(); - task_status_immed tski_BT_temp_update( ); task_status_immed tski_vcom_set( ); task_status_immed tski_PM_LCD_on(); @@ -166,8 +172,6 @@ u8 read_pmic( u8 reg ); #define PM_Chg_Stop() { BT_TEMP_P = 0; BT_CHG_DISABLE(); LED_CHARGE = 0; bt_authorized = false; } - - // @ĂԑOɁA݉xĂKv܂B #define PM_reset() ( send_cmd_pmic( PM_REG_ADRS_CONT, 0x00 ) ) @@ -184,10 +188,11 @@ u8 read_pmic( u8 reg ); #define PM_VDD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, PM_REG_BIT_VDD )) #define PM_VDD50A_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, ( PM_REG_BIT_VDD | PM_REG_BIT_VDD50A ))) #define PM_VDD_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, 0 )) -#define PM_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_SYS, 0 )) +#define PM_off() PM_VDD_off() #define PM_VDD_normMode() ( send_cmd_pmic( PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_1R15 | PM_REG_BIT_VDD_PWM )) #define PM_VDD_ecoMode() ( send_cmd_pmic( PM_REG_ADRS_POW_SAVE, PM_REG_BIT_VDD1P_0R90 | PM_REG_BIT_VDD_AUTO )) +// todo YŃRAdς邩Ȃ // ق // #define PM_reset_neg() ( send_cmd_pmic( PM_REG_ADRS_CONT, ( PM_REG_BIT_LDSW | PM_REG_BIT_nRST1 ))) @@ -196,10 +201,10 @@ u8 read_pmic( u8 reg ); // 0 ƈُ // tnd // -#define PM_VDDLCD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, PM_REG_BIT_VDDLCD )) -#define PM_TCOM_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( PM_REG_BIT_VDDLCD | PM_REG_BIT_LCD_TCOM ))) -#define PM_VCS_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( PM_REG_BIT_VDDLCD | PM_REG_BIT_LCD_VCS | PM_REG_BIT_LCD_TCOM ))) -#define PM_TCOM_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( PM_REG_BIT_VDDLCD | PM_REG_BIT_LCD_VCS ))) +#define PM_VDDLCD_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, pm_reg_bit_vddlcd )) +#define PM_TCOM_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_TCOM ))) +#define PM_VCS_on() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_VCS | PM_REG_BIT_LCD_TCOM ))) +#define PM_TCOM_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, ( pm_reg_bit_vddlcd | PM_REG_BIT_LCD_VCS ))) #define PM_TCOM_VCS_off() PM_VDDLCD_on() #define PM_VDDLCD_off() ( send_cmd_pmic( PM_REG_ADRS_VDD_LCD, 0 ) ) diff --git a/trunk/renge/renge.c b/trunk/renge/renge.c index f50fb59..1c7562a 100644 --- a/trunk/renge/renge.c +++ b/trunk/renge/renge.c @@ -1,9 +1,19 @@ +#ifndef _WIN32 + #pragma section @@CODE ROM_CODE #pragma nop #pragma ei #pragma di #pragma sfr +#endif + + +#ifdef _WIN32 +typedef unsigned char bit; +typedef unsigned char u8; +#endif + /****************************************************************************** ^XNVXeH ȂقǁAiTRONɂ̓RtBM[^͂B @@ -17,7 +27,9 @@ #include "..\config.h" #include "..\user_define.h" - +#ifdef _WIN32 +#include "../sim/simOnWin.h" +#endif //#define _renge_test_ #define true 1 @@ -31,12 +43,10 @@ bit renge_task_immediate_not_empty; bit renge_task_interval_in_force; - #include "..\bsr_system.h" extern system_status_ system_status; - //****************************************************************************** static void renge_task_immed_init(); static void renge_task_immed_del(); @@ -87,17 +97,17 @@ err renge_task_interval_run(){ // C^[oN DI(); if(( renge_flg_interval != 0 ) || - ( renge_task_interval_run_force )) // todo + ( renge_task_interval_run_force )) /// ȁc { renge_task_interval_in_force = renge_task_interval_run_force; renge_task_interval_run_force = false; // N^XNA荞ރ^XNŃtO‚Ȃ̂ if( renge_flg_interval != 0 ) { - renge_flg_interval -= 1; + renge_flg_interval --; WDT_Restart( ); } EI(); - for( i = 0; i != TSK_LAST; i += 1 ) + for( i = 0; i != TSK_LAST; i ++ ) { tasks[ i ](); // N^XNԂɋ @@ -145,7 +155,7 @@ err renge_task_immed_add( task_status_immed (*new_task)() ){ // Xg̋󂫂̐擪ɓo^ // 폜΂̃^XŃA폜}[N(TSK_IMM_DELETED_)ƂȂA󂫂Ƃ͖Iɋʂ // do^ - for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i += 1 ) + for( i = 0; i < TASK_IMMED_RUN_LIST_MAX; i ++ ) { DI(); if( tasks_immed[ i ] == TSK_IMM_EMPTY_ ) @@ -184,7 +194,7 @@ err renge_task_immed_run(){ if( tasks_immed[ 0 ] != TSK_IMM_EMPTY_ ) { DI(); - for( list_id = 0; list_id < TASK_IMMED_RUN_LIST_MAX; list_id += 1 ){ + for( list_id = 0; list_id < TASK_IMMED_RUN_LIST_MAX; list_id ++ ){ if( tasks_immed[ list_id ] == TSK_IMM_EMPTY_ ){ // Xg EI(); @@ -245,12 +255,11 @@ err renge_task_immed_run(){ if( tasks_immed[ j ] == TSK_IMM_EMPTY_ ) { do{ - j -= 1; - DI(); + j --; tasks_immed[ j ] = TSK_IMM_EMPTY_; // XgOlߊ - EI(); }while( i < j ); + EI(); goto imm_list_sort_fin; } else @@ -258,7 +267,7 @@ err renge_task_immed_run(){ // Ol߂ׂ^XN‚ tasks_immed[ i ] = tasks_immed[ j ]; tasks_immed[ j ] = TSK_IMM_DELETED_; - i += 1; + i ++; EI(); } } @@ -268,7 +277,7 @@ err renge_task_immed_run(){ { // ̃^XNAؗ } - i += 1; + i ++; } } } @@ -297,7 +306,7 @@ imm_list_sort_fin: } } #else - NOP(); // J{ + NOP(); // Ȃ񂩖ƃJ{ #endif // } return( ERR_SUCCESS ); diff --git a/trunk/rtc.c b/trunk/rtc.c index ce00e45..a539a97 100644 --- a/trunk/rtc.c +++ b/trunk/rtc.c @@ -1,18 +1,21 @@ /* ======================================================== RTC ======================================================== */ +#ifndef _WIN32 + #pragma sfr #pragma inline +#endif #include "incs.h" - +#define RTC_DATA_SIZE 7 // ======================================================== -u8 rtc_work[7]; -bit rtc_lock; -bit rtc_dirty; +static u8 rtc_work[RTC_DATA_SIZE]; +static bit rtc_lock; +static bit rtc_dirty; bit rtc_alarm_dirty; @@ -28,9 +31,12 @@ void RTC_init( void ) RTCEN = 1; // W[ON // RTCݒ - RTCC0 = 0b00001000; /* ~A24ԐA32kóu܂ȂvA荞݂Ȃ */ - RTCC1 = 0b11000000; /* A[荞ݗLJn */ - RTCC2 = 0b10000000; /* C^[o:32k/2^6=2msARTCDIVo͂Ȃ */ + RTCC0 = bits8(0,0,0,0, 1,0,0,0); /* ~A24ԐA32kóu܂ȂvA荞݂Ȃ */ + // (RTCE 0 RCLOE1 RCLOE0 AMPM CT2 CT1 CT0) + RTCC1 = bits8(1,1,0,0, 0,0,0,0); /* A[荞ݗLJn */ + // (WALE WALIE 0 WAFG RIFG 0 RWST RWAIT) + RTCC2 = bits8(1,0,0,0, 0,0,0,0); /* C^[o:32k/2^6=2msARTCDIVo͂Ȃ */ + // (RINTE RCLOE2 RCKDIV 0 0 ICT2 ICT1 ICT0) HOUR = 0x00; MIN = 0x00; @@ -88,7 +94,7 @@ __interrupt void int_rtc( ) RTC ̃[h WX^́Asec,min,hour,week,day,month,year ̏ ======================================================== */ -void rtc_buf_reflesh( ) +void rtc_buf_refresh( ) { if( !rtc_lock ) { @@ -97,7 +103,7 @@ void rtc_buf_reflesh( ) while( !RWST ) {;} - memcpy( &vreg_ctr[VREG_C_RTC_SEC], &SEC, 7 ); + memcpy( &vreg_ctr[VREG_C_RTC_SEC], &SEC, RTC_DATA_SIZE ); RWAIT = 0; // renge_task_immed_add( tski_rtc_close ); } @@ -116,7 +122,7 @@ void set_rtc( u8 adrs, u8 data ) if( !rtc_dirty ) { rtc_dirty = true; - memcpy( rtc_work, &SEC, 7 ); + memcpy( rtc_work, &SEC, RTC_DATA_SIZE ); // renge_task_immed_add( tski_rtc_close ); // I2CIɍs } rtc_work[adrs] = data; @@ -140,7 +146,7 @@ void rtc_unlock( ) RWAIT = 1; while( !RWST ) {;} - memcpy( &SEC, rtc_work, 7 ); + memcpy( &SEC, rtc_work, RTC_DATA_SIZE ); RWAIT = 0; } @@ -165,5 +171,5 @@ void rtc_unlock( ) ======================================================== */ __interrupt void int_rtc_int( ) { - renge_flg_interval += 1; // CNg/fNg߂ĝ DI()sv + renge_flg_interval ++; // CNg/fNg߂ĝ DI()sv } diff --git a/trunk/rtc.h b/trunk/rtc.h index f189a89..6b2d9f8 100644 --- a/trunk/rtc.h +++ b/trunk/rtc.h @@ -3,7 +3,7 @@ void RTC_init( void ); -void rtc_buf_reflesh( ); +void rtc_buf_refresh( ); void set_rtc( u8 adrs, u8 data ); //task_status_immed tski_rtc_close(); diff --git a/trunk/self_flash.c b/trunk/self_flash.c index a22536b..d1ff4dd 100644 --- a/trunk/self_flash.c +++ b/trunk/self_flash.c @@ -1,6 +1,8 @@ /* ======================================================== ȃAbvf[^ ======================================================== */ +#ifndef _WIN32 + #pragma SFR #pragma di #pragma ei @@ -8,6 +10,7 @@ #pragma stop #pragma halt +#endif #include "incs_loader.h" @@ -66,7 +69,13 @@ const u8 fsl_low_voltage_u08 = 1; #define WTIM WTIM1 #endif - +#ifndef _WIN32 +#define LED_POW1 P1.5 +#define LED_PM_POW1 PM1.5 +#else +#define LED_POW1 mcuRegP[ _P1_5 ] +#define LED_PM_POW1 mcuRegPM[ _P1_5 ] +#endif // ======================================================== static void FSL_Open( void ); @@ -124,7 +133,7 @@ void firm_update( ) //iVt@[ƂɎcĂAȑÕt@[̃tb^j for( target_block = INACTIVE_BOOTSECT_TOP; target_block < ALTERNATE_FIRMTOP; - target_block += 1 ) + target_block ++ ) { FSL_Erase( target_block ); } @@ -135,7 +144,7 @@ void firm_update( ) // IAX^[gAbv[`ɔ for( target_block = INACTIVE_BOOTSECT_TOP; target_block < ALTERNATE_FIRMTOP; - target_block += 1 ) + target_block ++ ) { u8 my_spd; @@ -146,7 +155,7 @@ void firm_update( ) // for( split_write_count = 0; split_write_count < SELF_UPDATE_SPLIT_WRITE_NUM; - split_write_count += 1 ) + split_write_count ++ ) { u8* p_buffer = &pool.self_update_work[0]; u16 buff_written_size = 0; @@ -162,8 +171,8 @@ void firm_update( ) IICAIF = 0; *p_buffer = IICA; WREL = 1; - p_buffer += 1; - buff_written_size += 1; + p_buffer ++; + buff_written_size ++; } while( ( buff_written_size != SELF_UPDATE_BUFF_SIZE ) && !SPD ); @@ -196,7 +205,7 @@ void firm_update( ) // 1ubN݊Bxt@Cs if( FSL_IVerify( target_block ) != FSL_OK ){ alert(2); - // ēx xt@CJԂ_ł... todocH + // ēx xt@CJԂ_ł... /// ďׂ݂H // XgA firm_duplicate( ALTERNATE_FIRMTOP, FIRM_TOP ); FSL_ForceReset(); // Zbg @@ -224,7 +233,7 @@ void firm_update( ) } if( *( __far u8 * )( N_MGC_L +2 ) != ':' ) // ς̂܂ { - comp += 1; + comp ++; } if( comp == 0 ) @@ -259,7 +268,7 @@ void firm_update( ) void firm_restore( ) { DBG_LED_on; - PM1.5 = 0; + LED_PM_POW1 = 0; // obNAbv͐H // { @@ -273,7 +282,7 @@ void firm_restore( ) } if( *( u8 * )( MGC_FOOT_BKUP ) == 0xFF ) { - comp += 1; + comp ++; } if( comp != 0 ) @@ -298,7 +307,7 @@ void firm_restore( ) { // LED sRsR comp++; - P1.5 = ( comp == 1 || comp == 3 )? 1: 0; + LED_POW1 = ( comp == 1 || comp == 3 )? 1: 0; if( comp == 8 ) { comp = 0; @@ -309,7 +318,7 @@ void firm_restore( ) // d{^œdoff static u8 sw_hold_count; - if( !SW_POW_n ) + if( !SW_POW_n_RAW ) { sw_hold_count++; } @@ -345,8 +354,8 @@ void firm_restore( ) MK2L = 0xFF; // PU5 ̂܂ - PU7 = 0b00001000; // PWSWI - PU20 = 0x00; // SW_HOME ~ + PU7 = bits8(0,0,0,0, 1,0,0,0); // PWSWI + PU20 = bits8(0,0,0,0, 0,0,0,0);; // SW_HOME ~ STOP( ); @@ -370,8 +379,7 @@ void firm_restore( ) } DBG_LED_off; - // todo - // @XgAsALEDƂāAT[rXɂĂ炤H + // todo XgAsALEDƂāAT[rXɂĂ炤H /* // u[g @@ -412,9 +420,9 @@ static void FSL_Open( void ) MK1 = 0xFFFF; MK2 = 0xFFFF; /* - LVIM = 0b00000010; - LVIS = 0x08; - LVIM = 0b10000010; + LVIM = bits8(0,0,0,0, 0,0,1,0); + LVIS = bits8(0,0,0,0, 1,0,0,0); + LVIM = bits8(1,0,0,0, 0,0,1,0); */ FSL_FLMD0_HIGH; // tbVւ } @@ -464,7 +472,7 @@ static err firm_duplicate( u8 block_src, // ݐubN̐JԂ for( target_block = block_dest; target_block < ( block_dest + FIRM_SIZE ); - target_block += 1 ) + target_block ++ ) { led_print(2); WDT_Restart( ); @@ -474,7 +482,7 @@ static err firm_duplicate( u8 block_src, { led_print(3); FSL_Erase( target_block ); - if( --retry_error == 0 ) + if( -- retry_error == 0 ) { // tbVH FSL_Close( ); @@ -486,7 +494,7 @@ static err firm_duplicate( u8 block_src, // ݕJԂ for( split_write_count = 0; split_write_count < SELF_UPDATE_SPLIT_WRITE_NUM; - split_write_count += 1 ) + split_write_count ++ ) { u16 buff_written_size; u8* p_buff; @@ -497,9 +505,9 @@ static err firm_duplicate( u8 block_src, do { *p_buff = *p_src; - p_src += 1; - p_buff += 1; - buff_written_size +=1; + p_src ++; + p_buff ++; + buff_written_size ++; } while( buff_written_size != SELF_UPDATE_BUFF_SIZE ); @@ -574,13 +582,13 @@ void alert( u8 num ) while(1) { WDT_Restart(); - P1.5 = 1; + LED_POW1 = 1; for( i = 0; i < num; i++ ) { DBG_LED_on; DBG_LED_off; } - P1.5 = 0; + LED_POW1 = 0; } } @@ -592,8 +600,8 @@ void led_print( u8 num ) DBG_LED_on; for( i = 0; i < num; i++ ) { - P1.5 = 1; - P1.5 = 0; + LED_POW1 = 1; + LED_POW1 = 0; } DBG_LED_off; } diff --git a/trunk/sw.c b/trunk/sw.c index 58b5b41..5fd74ed 100644 --- a/trunk/sw.c +++ b/trunk/sw.c @@ -1,8 +1,12 @@ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT #pragma STOP +#endif + #include "incs.h" #include "i2c_twl.h" @@ -16,27 +20,25 @@ //========================================================= /* vreg_ctrǂ݂̂Ńwb_ -#define INTERVAL_TSK_SW 8 -#define CLICK_THRESHOLD 2 +#define INTERVAL_TSK_SW +#define CLICK_THRESHOLD -#define HOLD_THREASHOLD (u8)( 2000 / INTERVAL_TSK_SW ) -#define FORCEOFF_THREASHOLD (u8)( 4000 / INTERVAL_TSK_SW ) +#define HOLD_THREASHOLD +#define FORCEOFF_THREASHOLD */ -#define TIME_MUKAN (u8)( 300 / INTERVAL_TSK_SW ) -#define TIME_MUKAN_PWSW (u16)( 8000 / INTERVAL_TSK_SW ) +#define TIME_MUKAN ( u8)( 300 / INTERVAL_TSK_SW ) +#define TIME_MUKAN_PWSW_RED_TRIAL (u16)( 15000 / INTERVAL_TSK_SW ) // VAhome}XN //========================================================= u16 SW_pow_count; bit SW_pow_mask; -u8 SW_home_count, SW_wifi_count, SW_home_count_rel; -u8 sw_wifi_mukan_time; +static u8 SW_home_count, SW_wifi_count, SW_home_count_rel; +static u8 sw_wifi_mukan_time; -bit SW_HOME_n; +u16 off_timeout_timer; -u16 off_timeout_timer; - -u16 sw_pwsw_mukan_time; +static u16 sw_pwsw_mukan_time; //========================================================= // Ԃ𐔂BςȂł0ɖ߂Ȃ @@ -50,7 +52,7 @@ u16 sw_pwsw_mukan_time; if( mask != 0 ){ \ counter = 0; \ }else{ \ - counter += 1; \ + counter ++; \ if( counter == 0 ) counter = -1; \ } \ } \ @@ -60,14 +62,14 @@ u16 sw_pwsw_mukan_time; #define chk_clicked( button, count, irq_bit_name ) \ if( !button ) \ { \ - if( count <= CLICK_THRESHOLD ) \ + if( count < CLICK_THRESHOLD ) \ { \ - count += 1; \ - } \ - if( count == CLICK_THRESHOLD ) \ - { \ - count += 1; \ - set_irq( VREG_C_IRQ0, irq_bit_name ); \ + count ++; \ + if( count == CLICK_THRESHOLD ) \ + { \ + count ++; \ + set_irq( VREG_C_IRQ0, irq_bit_name ); \ + } \ } \ } \ else \ @@ -83,22 +85,26 @@ u16 sw_pwsw_mukan_time; ======================================================== */ void tsk_sw( ) { - static u8 task_interval = 1; + static u8 task_interval; - if( system_status.pwr_state == ON_TRIG ) + if( system_status.pwr_state == OFF_TRIG ) { - SW_pow_count = 0; // JEgNA + SW_pow_count = 0; // dɔăNA +// task_interval = 0; } - if( --task_interval != 0 ) - { - return; - } - else - { - task_interval = (u8)( INTERVAL_TSK_SW / SYS_INTERVAL_TICK ); - } + if( system_status.pwr_state != ON_CHECK ) // 莞(PWSW_POWON_TIME)ẐŃvXP[@łȂƃ`^܂肫Ȃ + { + if( task_interval != 0 ) + { + task_interval--; + return; + // ܂ + } + task_interval = (u8)( INTERVAL_TSK_SW / SYS_INTERVAL_TICK ) -1; // vXP[ɎgĂ܂ˁc + // -1̓|XgfNĝ߂̒ + } // 8ms ɂ܂ switch ( system_status.pwr_state ) @@ -127,14 +133,15 @@ void tsk_sw( ) if( off_timeout_timer != 0 ) // 荞݌A^CAEgŋItB { - off_timeout_timer -= 1; - if( off_timeout_timer == 1 ) + off_timeout_timer --; + if( off_timeout_timer == 0 ) { force_off = true; } } }else{ + // X^hAV // dXCb`̊Ď // if( SW_pow_count == ( TIME_PWSW_CLICK ) ) { @@ -142,7 +149,7 @@ void tsk_sw( ) { set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK ); // ȃ^C~OPWSWHOMEj[ɓĂ܂̂邽߂̃}XN^C}[ - sw_pwsw_mukan_time = TIME_MUKAN_PWSW; + sw_pwsw_mukan_time = TIME_MUKAN_PWSW_RED_TRIAL; } } else if( SW_pow_count == ( HOLD_THREASHOLD ) ) @@ -158,26 +165,12 @@ void tsk_sw( ) count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask ); // {^Ԃ̃JEg - // HOME XCb` // - switch( system_status.model ) - { - case( MODEL_JIKKI ): - case( MODEL_SHIROBAKO ): - SW_HOME_n = SW_HOME_n_JIKKI; // ڑ̃|[gႤ - break; - case( MODEL_TS_BOARD ): - SW_HOME_n = SW_HOME_n_TSBOARD; - break; - default: - SW_HOME_n = 1; // Ă - } - - - chk_clicked( SW_HOME_n, SW_home_count, REG_BIT_SW_HOME_CLICK ); + // HOME sw // + chk_clicked( SW_HOME_n, SW_home_count, REG_BIT_SW_HOME_CLICK ); chk_clicked( !SW_HOME_n, SW_home_count_rel, REG_BIT_SW_HOME_RELEASE ); // wifi sw // - /// ňȎȂ̂͂킩Ă邪AsƁAsɏoĂ܂sǃXCb`~ + /// ňȎȂ̂͂킩Ă邪AsɏoĂ܂sǃXCb`~ if( sw_wifi_mukan_time != 0 ) { sw_wifi_mukan_time--; @@ -192,3 +185,4 @@ void tsk_sw( ) } } } + diff --git a/trunk/task_debug.c b/trunk/task_debug.c index 1745e4e..54b594b 100644 --- a/trunk/task_debug.c +++ b/trunk/task_debug.c @@ -1,8 +1,12 @@ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT #pragma STOP +#endif + #include "incs_loader.h" //#include "incs.h" #include "renge\renge.h" @@ -39,20 +43,13 @@ void tsk_debug( ) static u8 count = 0; // fobOLEDi8bitj̏ temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO ); - count += 1; + count ++; iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, count ); iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count ); } } */ -#ifdef _PMIC_TEST_ - if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) ) - { - iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0x03, 0 ); - } -#endif - // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VREG_C_IRQ1 ] ); // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, boot_ura ); // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VREG_C_SND_VOL ] ); @@ -103,7 +100,7 @@ task_interval tsk_hina( ) default: } - return ( ̋N E܂ł̃V EX Ee E tick EE); // tic Ă΂邱ƂɂȂ܂ + return; // tic Ă΂邱ƂɂȂ܂ } diff --git a/trunk/task_misc.c b/trunk/task_misc.c index 750c834..bcc8696 100644 --- a/trunk/task_misc.c +++ b/trunk/task_misc.c @@ -1,8 +1,12 @@ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT #pragma STOP +#endif + #include "incs.h" #include "renge\renge.h" #include "pm.h" @@ -48,12 +52,19 @@ // ======================================================== -bit twl_ver_read; -bit going_to_sleep; +bit twl_ver_read; // twl home menuverǂ񂾂݊J[lɊ荞݂邽 +bit going_to_sleep; // SoCAsleepɓʒm炤Bslp_i HԂ0ɂȂ + // X[v畜AłȂȂ̂h -void update_LED_3D(); -void check_twl_vol_irq(); +// eXgp +bit reserve_pedo_increnent; + + +// ======================================================== +static void update_LED_3D(); +static void check_twl_vol_irq(); + /* ======================================================== @@ -71,7 +82,7 @@ void tsk_misc( ) if( ACC_VALID ) { if( renge_task_immed_add( tski_cbk_accero ) == ERR_SUCCESS ){ - // NOP(); + // dbg_nop(); } } @@ -84,7 +95,7 @@ void tsk_misc( ) if( !PM_IRQ_n ) { renge_task_immed_add( tski_ntr_pmic_comm ); - // NOP(); + // dbg_nop(); } /* ======================================================== @@ -102,6 +113,13 @@ void tsk_misc( ) // 3D vXV // update_LED_3D(); + + if( reserve_pedo_increnent ) + { + reserve_pedo_increnent = 0; + hosu_increment_if_necessary(); + } + } @@ -153,7 +171,7 @@ void update_LED_3D() { if( LED_duty_3d != 0 ) { - LED_duty_3d -= 1; + LED_duty_3d --; } } else @@ -162,12 +180,12 @@ void update_LED_3D() { if( LED_duty_3d < vreg_ctr[VREG_C_LED_BRIGHT] ) { - LED_duty_3d += 1; - } - else - { - LED_duty_3d -= 1; - } + LED_duty_3d ++; + } + else + { + LED_duty_3d --; + } } } } @@ -184,9 +202,13 @@ void update_LED_3D() ======================================================== */ task_status_immed tski_do_command0( ) { - // command0 {̓dȂ - u8 temp_command = vreg_ctr[VREG_C_COMMAND0]; + u8 temp_command; + + // command0 {̓dȂ + DI(); + temp_command = vreg_ctr[VREG_C_COMMAND0]; vreg_ctr[VREG_C_COMMAND0] = 0; + EI(); if( temp_command & REG_BIT_GOING_TO_SLEEP ) { @@ -243,11 +265,7 @@ task_status_immed tski_do_command0( ) -/* ======================================================== -@݊ATWLAvւ̊荞 - zWX^̏ݎɍs܂B - ======================================================== */ - +/* fobOEeXgp ============================== */ u16 _dbg_rcomp; extern u8 raw_adc_temperature; @@ -272,45 +290,85 @@ extern bit bt_authorized; 10) system_status.family ======================================================== */ -#define KOUMOKU 9 -u8 extinfo_read() -{ - u8 infos[ KOUMOKU +1 ]; +#define KOUMOKU 19 - if( iic_burst_state > KOUMOKU ) +static u8 infos_bits[2]; +static u8 infos_temp[5]; + +static const u8 *infos_table[] = { + &infos_temp[0], /* 0 */ + &pmic_version, + (u8*)&battery_manufacturer, + &mgic_version[0], + &mgic_version[1], + &infos_temp[1], /* 5 */ + &raw_adc_temperature, + &infos_temp[2], + &infos_temp[3], + (u8*)&system_status.family, +// LED_pow_red, /* 10 */ + &infos_bits[0], + (u8*)&LED_duty_pow_blu, + (u8*)&LED_duty_3d, + (u8*)&LED_duty_notify_red, + (u8*)&LED_duty_notify_grn, + (u8*)&LED_duty_notify_blu, /* 15 */ + &infos_bits[1], +// &LED_CAM, + (u8*)&LED_duty_WiFi, + &infos_temp[4] /* 18 */ + /* ڑƂ KOUMOKU ɒ */ +}; + + u8 extinfo_read(void) +{ + u8 ret = 0xFF; + + /* + * temp͌vZKvȃf[^Bɗ]TȂ̂ŌvZKv + * ϐ́Av/svɊւ炸vZ|V[ + */ + + if( iic_burst_state < KOUMOKU ) { - return( 0x73 ); + infos_temp[0] = system_status.captureBox? MODEL_CAPTURE_BOX + : ( system_status.is_dev? MODEL_ISBAKO: (u8)system_status.model ); + infos_temp[1] = (u8)( _dbg_rcomp & 0xFF ); + infos_temp[2] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ); + infos_temp[3] = 1; /* dlύXɂ1ŒɂȂ */ + infos_temp[4] = 0 +// | ( PM_EXTDC_n ? REG_BIT_HAL0_PM_EXTDC_n : 0 ) // status0ɂ + | ( RBR_RESET_n ? REG_BIT_HAL0_PM_EXTDC_n : 0 ) // 󂫂g킹Ă炤 + | ( BT_IN_CHG_n ? REG_BIT_HAL0_BT_IN_CHG_n : 0 ) + | ( BT_CHG_Ena_n ? REG_BIT_HAL0_RSV_5 : 0 ) // 󂫃rbggp,out pin + | 0 // WL_TX gȂ +// | ( SHELL_OPEN ? REG_BIT_HAL0_SHELL_OPEN : 0 ) // status0ɂ + | ( RBR_FLIGHT ? REG_BIT_HAL0_SHELL_OPEN : 0 ) // 󂫂g킹Ă炤 + | ( SW_WIFI_n ? REG_BIT_HAL0_SW_WIFI_n : 0 ) + | ( SW_HOME_n ? REG_BIT_HAL0_SW_HOME_n : 0 ) + | ( SW_POW_n ? REG_BIT_HAL0_SW_POW_n : 0 ); + + infos_bits[0] = (u8)LED_pow_red; + infos_bits[1] = (u8)LED_CAM; + + ret = *infos_table[iic_burst_state]; + iic_burst_state ++; } - // static łƂقǂ̂̂łȂ̂ŖX^bNƂĂ - // switchƂɂrom... Ȃ񂾂ȂB - infos[0] = system_status.captureBox? MODEL_CAPTURE_BOX - : ( system_status.is_dev? MODEL_ISBAKO: (u8)system_status.model ); - infos[1] = pmic_version; - infos[2] = battery_manufacturer; - infos[3] = mgic_version[0]; - infos[4] = mgic_version[1]; - infos[5] = (u8)( _dbg_rcomp & 0xFF ); - infos[6] = raw_adc_temperature; - infos[7] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ); - infos[8] = 1; // system_status.info_fullcolor; - infos[9] = system_status.family; - // ڑƂ͋C‚Ă!! // - - iic_burst_state++; - return( infos[ iic_burst_state -1 ] ); + return ret; } + #ifdef i2c_timeout_test void i2c_mcu_error_monitor() - { - LED_duty_pow_blu = 0xff; - LED_duty_3d = 0xff; - LED_duty_notify_red = 0xff; - LED_duty_notify_grn = 0xff; - LED_duty_notify_blu = 0xff; - LED_pow_red = 1; - LED_CAM = 1; - } +{ + LED_duty_pow_blu = 0xff; + LED_duty_3d = 0xff; + LED_duty_notify_red = 0xff; + LED_duty_notify_grn = 0xff; + LED_duty_notify_blu = 0xff; + LED_pow_red = 1; + LED_CAM = 1; +} #endif diff --git a/trunk/task_status.c b/trunk/task_status.c index 03f74e5..0d07510 100644 --- a/trunk/task_status.c +++ b/trunk/task_status.c @@ -1,45 +1,37 @@ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT #pragma STOP +#endif + #include "incs_loader.h" #include "renge\renge.h" +#include "hal.h" + #include "pm.h" #include "accero.h" #include "adc.h" #include "i2c_mcu.h" - +#include "led.h" // ======================================================== #define INTERVAL_TSK_STATUS 4 -extern bit BT_CHG_STAT_Change; - - /* ======================================================== Xe[^XWX^Ȃ ======================================================== */ void tsk_status( ) { - static u8 interval_task_status = 0; static u8 state_old; // Xe[^Xωo荞 ̈ u8 diff; - if( interval_task_status != 0 ) - { - interval_task_status -= 1; - return; - } - else - { - interval_task_status = (u8)( INTERVAL_TSK_STATUS / SYS_INTERVAL_TICK ); - } - - // WJ`FbN + // WJ`FbN set_bit( SHELL_OPEN, vreg_ctr[VREG_C_STATUS], REG_BIT_ST_SHELL_OPEN ); // Xe[^XWX^֌W 荞 // @@ -57,8 +49,6 @@ void tsk_status( ) { if( diff & REG_BIT_BATT_CHARGE ) { - BT_CHG_STAT_Change = true; - // [dԂɈȉ if( vreg_ctr[VREG_C_STATUS] & REG_BIT_BATT_CHARGE ) { diff --git a/trunk/task_sys.c b/trunk/task_sys.c index 2356647..5a44c0d 100644 --- a/trunk/task_sys.c +++ b/trunk/task_sys.c @@ -1,8 +1,12 @@ +#ifndef _WIN32 + #pragma SFR #pragma NOP #pragma HALT #pragma STOP +#endif + #include "incs.h" #include "i2c_twl.h" @@ -42,6 +46,10 @@ extern u8 chg_led_override; extern bit i2c_mcu_time_out_error; #endif + +//========================================================= +#define PWSW_POWON_TIME (u8)( 20 / SYS_INTERVAL_TICK ) // [ms] // INTERVAL_TSK_SW ŊȂBl珬̂ + /* ======================================================== }CRŕKvȂ Eȓd͂ɓ @@ -50,59 +58,58 @@ extern bit i2c_mcu_time_out_error; ======================================================== */ void tsk_sys( ) { - static u8 timeout = 0; + static u8 pwsw_timeout = 0; // d{^`^OB@^CAEg܂łɓdm肵Ȃoffɖ߂ - switch ( system_status.pwr_state ) + hal_update(); + + switch ( system_status.pwr_state ) { case ON_CHECK: //------------------------------------------------------- - // XCb`ȂǂŊ荞݂AX[vƂɗ܂B + // ̊荞݂HALT(X[v) ^@A_v^L - if( system_status.poweron_reason == NONE ) + // dXCb`HALT // + if( system_status.poweron_reason == RSN_PWSW ) { - // XCb`œdon - if( SW_pow_count != 0 ) - { - timeout = 0; - } - else - { - timeout += 1; - } + if( PM_EXTDC_n ) + { + // A_v^Ȃ + if( SW_pow_count != 0 ) + { + pwsw_timeout = 0; + } + else + { + pwsw_timeout ++; + } - if( timeout > 100 ) - { - system_status.pwr_state = OFF; // XCb`̓mCYBQB - renge_task_interval_run_force = true; - return; - } + if( pwsw_timeout > 100 ) + { + SW_pow_count = 0; + system_status.pwr_state = OFF_TRIG; // XCb`̓mCYBQB + renge_task_interval_run_force = true; + return; + } + } + else + { + BT_chk(); // v|[OBdrꌟô߁BiKvI2C_m_initĂł܂j + } - if( SW_pow_count < 10 ) - { - // XCb`̗lq - return; - } - // d - system_status.poweron_reason = PWSW; + if( SW_pow_count < PWSW_POWON_TIME ) + { + // ԂZēdonɓBĂȂ + return; + } } + // else { if( system_status.poweron_reason == RSN_TRIALAc ) d } - SW_pow_mask = true; - - timeout = 0; - - // for debug -#ifdef _DEBUG_BT_FUEL_ - vreg_ctr[ VREG_C_DBG01 ] = 99; -#endif -#ifdef _DEBUG_BT_TEMP_ - vreg_ctr[ VREG_C_DBG01 ] = 0x80; -#endif - vreg_ctr[ VREG_C_COMMAND3 ] = 0; + SW_pow_mask = true; // pwswςȂœd/ JԂȂ悤 // d // iic_mcu_start( ); bt_force_update = false; - BT_chk(); // @obe̔AdrcIC̐ݒ + BT_chk(); // @obe̔AdrcIC̐ݒ #ifndef _ALLOW_NOBATT_ if( system_status.model == MODEL_JIKKI_NOBATT ) @@ -117,8 +124,8 @@ void tsk_sys( ) BT_get_left(); // ɁABT_chk()sĂKv܂B if( // ( vreg_ctr[VREG_C_BT_REMAIN] < 1 ) // Ŕ肷ƓdrقƂǖƂ -// && // A_v^ĂNłȂȂႤ - ( vreg_ctr[VREG_C_BT_VOLTAGE] < ( V_TH_ZERO / 256 ) ) +// // A_v^ĂNłȂȂႤ + (( vreg_ctr[VREG_C_BT_VOLTAGE] < ( V_TH_ZERO / 256 ) ) && PM_EXTDC_n ) // dr && A_v^Ȃ ) { // drȂ̂ŋNȂ(d`FbNĂ) @@ -127,15 +134,15 @@ void tsk_sys( ) return; } - // |[g̐ݒ@dOɁB - PM7.4 = 1; // SW_wifi - PM20.4 = 1; // sw_home - PM20.3 = 1; // wl_tx - PM2.3 = 1; // key_sel - PM2.5 = 1; // acc_valid1 - PM14.1 = 1; // acc_valid2 + // |[g̕ݒ@dOɁB + PM_SW_WIFI_n = 1; + PM_SW_HOME_n_JIKKI = 1; + PM_WL_TX = 1; + PM_SW_SEL_n = 1; + PM_ACCEL_INT1 = 1; + PM_ACC_VALID = 1; - if( PM_sys_pow_on( ) != ERR_SUCCESS ) + if( PM_sys_pow_on( ) != ERR_SUCCESS ) // ZbgĂ܂ { // dNsƒG[ renge_task_interval_run_force = true; system_status.pwr_state = OFF_TRIG; @@ -143,12 +150,13 @@ void tsk_sys( ) } // ܂ŗƁAdm // + // vAbvon + PU_BT_IN_CHG_n = 1; + PU7 = bits8(0,0,0,1, 1,1,0,1); // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n + PU_SW_HOME_n_JIKKI = 1; // SW_HOME - PU5.1 = 1; // 1:PM_CHARGE - PU7 = 0b00011101; // 4:SW_WIFI 3:SW_PWSW 2:PM_IRQ 0:PM_EXTDC_n - PU20.4 = 1; // SW_HOME - - if( system_status.poweron_reason == PWSW ) + if( system_status.poweron_reason == RSN_PWSW || + system_status.poweron_reason == RSN_TRIAL ) { // d{^łon̎́ALED_ vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO; @@ -183,7 +191,7 @@ void tsk_sys( ) vreg_twl_init( ); vreg_ctr_reset( ); - KRM = 0b00000000; + KRM = bits8(0,0,0,0, 0,0,0,0); PIF0 = 0; system_status.poweron_reason = NONE; @@ -194,13 +202,13 @@ void tsk_sys( ) iic_mcu_start(); -#ifdef _MCU_BSR_ // MK2 = ~( INT_MSK2_IIC_TWL | INT_MSK2_WIFI_TX_BSR | INT_MSK2_CODEC_PMIRQ ); // PMK21 = 0; // wifi gȂ PMK6 = 0; // pm_irq -#else - MK2L = ~INT_MSK2_WIFI_TX_KE3; -#endif + + // todo Iɂ͊SɃWX^ + RBR_RESET_n = 1; + RBR_FLIGHT = 0; // u[gAXe[^XƂȂXV if( system_status.reboot ) @@ -236,7 +244,7 @@ void tsk_sys( ) // SLPĎ if( going_to_sleep ) // ΂ SLP_REQ ̑Oɗ\ { - timeout_sleep += 1; + timeout_sleep ++; if( timeout_sleep == 0 || // I[o[t[ҁBsleepČLjuŋNċC‚Ȃ ( PIF0 && !SLP_REQ )) // slp荞݂CANĂ܂ { @@ -290,9 +298,10 @@ void tsk_sys( ) #endif default: //--------------------------------------- - system_status.pwr_state = OFF_TRIG; - // no break // - case OFF_TRIG: //--------------------------------------- + system_status.pwr_state = OFF_TRIG; // 蓾ȂXe[gBfobOp + /* FALLTHROUGH */ + + case OFF_TRIG: //--------------------------------------- // LED҂ vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_OFF; vreg_ctr[ VREG_C_LED_WIFI ] = WIFI_LED_OFF; @@ -313,7 +322,11 @@ void tsk_sys( ) IIC_twl_Stop( ); RTC_32k_off(); - vreg_ctr[VREG_C_IRQ0] = 0; + // todo }Nɂł + RBR_RESET_n = 0; + RBR_FLIGHT = 0; + + vreg_ctr[VREG_C_IRQ0] = 0; vreg_ctr[VREG_C_IRQ1] = 0; vreg_ctr[VREG_C_IRQ2] = 0; vreg_ctr[VREG_C_IRQ3] = 0; @@ -329,12 +342,12 @@ void tsk_sys( ) KRM = ( KR_SW_POW ); // Mask ł͂ȂAModeȂ̂B킵 MK0 = ~( INT_MSK0_EXTDC ); - MK1 = ~( INT_MSK1_KR | INT_MSK1_RTCALARM | INT_MSK1_RTCINTVAL ); - MK2L = 0b11111111; + MK1 = ~( INT_MSK1_KR | INT_MSK1_RTCINTVAL ); // INT_MSK1_RTCALARM | RTCA[ + MK2L = 0xFF; // PU5 ̂܂ - PU7 = 0b00001001; // PWSWI,PM_EXTTDC,( IRQ0_deactive(), PM_IRQ_deactive ) - PU20.4 = 0; // SW_HOME ~ + PU7 = bits8(0,0,0,0, 1,0,0,1); // PWSWI,PM_EXTTDC,( IRQ0_deactive(), PM_IRQ_deactive ) + PU_SW_HOME_n_JIKKI = 0; // SW_HOME ~ IF0 = 0; IF1 = 0; @@ -342,68 +355,62 @@ void tsk_sys( ) IRQ0_disable; - PM_sys_pow_off( ); + PM_sys_pow_off( ); // dJbgIt - P7.4 = 0; // SW_wifi - PM7.4 = 0; + // |[gނ~[hɁBHłALo͂ɂȂႾ߂ȁB + SW_WIFI_n_RAW = 0; + PM_SW_WIFI_n = 0; - P20.4 = 0; // sw_home - PM20.4 = 0; + SW_HOME_n_JIKKI_RAW = 0; + PM_SW_HOME_n_JIKKI = 0; - P20.3 = 0; // WL_TX - PM20.3 = 0; + WL_TX = 0; + PM_WL_TX = 0; - P2.3 = 0; // KEY_SEL - PM2.3 = 0; - P2.5 = 0; // ACC_ready1 - PM2.5 = 0; - P14.1 = 0; // ACC_ready2 - PM14.1 = 0; + SW_SEL_n = 0; + PM_SW_SEL_n = 0; - iic_mcu_stop( ); + ACCEL_INT1 = 0; + PM_ACCEL_INT1 = 0; + ACC_VALID = 0; + PM_ACC_VALID = 0; system_status.pwr_state = OFF; SW_pow_mask = true; SW_pow_count = 0; - - // no break // + // HALfobOZbg@YƓdonoȂȂ邱Ƃc + hal_reset(); + /* FALLTHROUGH */ case OFF: - system_status.poweron_reason = NONE; - if( !PM_EXTDC_n ) + // Fł͓d{^d͂܂B + + system_status.poweron_reason = NONE; + pwsw_timeout = 0; + + if( !PM_EXTDC_n + || chg_led_override != 0 ) // ꂪ[ɂȂ܂ő҂ { - // A_v^hĂƂ͂̃ubNJԂB - BT_chk(); // v|[Oidrꌟô߁j - // ̒ŕKvI2C_m_initĂł܂ + // A_v^L /////////////////////////////// ܂́AA_v^ĂRb͏[dLED_Ă - // A_v^LF[dxĎ - if( SW_pow_count >= 10 ) // dXCb`̂҂ - { - // d - system_status.pwr_state = ON_CHECK; - } - - if( system_status.model != MODEL_JIKKI ) - { - iic_mcu_stop( ); - } + // d{^`FbN + SW_pow_mask = false; + system_status.poweron_reason = RSN_PWSW; + system_status.pwr_state = ON_CHECK; + // VȂ玩œdē if( system_status.taikendai ) { - // d - wait_ms(46); - system_status.poweron_reason = PWSW; + vreg_ctr[ VREG_C_HAL_OVW_CONT0 ] = vreg_ctr[ VREG_C_HAL_OVW_CONT1 ] = 0; + wait_ms(46); // pmic̓dēdl̂ + system_status.poweron_reason = RSN_TRIAL; system_status.pwr_state = ON_CHECK; } } else { - // A_v^Ȃ - if( chg_led_override != 0 ) // ꂪ[ɂȂ܂ő҂ - { - return; - }; + // A_v^Ȃ /////////////////////////////// // ȓd͂ֈڍs iic_mcu_stop( ); @@ -415,36 +422,84 @@ void tsk_sys( ) {;} // 荞ݑ҂ŐQ // - RTCIMK = 1; + RTCIMK = 1; // systickpC^[o^C}[荞݃}XN - CKC = 0b00001001; + CKC = bits8(0,0,0,0, 1,0,0,1); OSMC = 0x00; - - if( PM_EXTDC_n ) // ǂ^C~Oő}N邱Ƃ +#ifdef _DBG_CHK_OFF_LEAK_ { - STOP( ); + // offpinݒ~X`FbN + volatile u8 ports_i[12]; + volatile u8 ports_o[12]; + + ports_i[0] = ( PM0 & PU0 & ~P0 ); // vAbv؂YH + ports_i[1] = ( PM1 & PU1 & ~P1 ); + ports_i[2] = 0; + ports_i[3] = ( PM3 & PU3 & ~P3 ); + ports_i[4] = ( PM4 & PU4 & ~P4 ); + ports_i[5] = ( PM5 & PU5 & ~P5 ); + ports_i[6] = 0; + ports_i[7] = ( PM7 & PU7 & ~P7 ); + ports_i[8] = ( PM12 & PU12 & ~P12 ); + ports_i[9] = ( PM14 & PU14 & ~P14 ); + ports_i[10] = 0; + ports_i[11] = ( PM20 & PU20 & ~P20 ); + + ports_o[0] = ( ~PM0 & P0 ); // H o͂Ă邩 + ports_o[1] = ( ~PM1 & P1 ); + ports_o[2] = ( ~PM2 & P2 ); + ports_o[3] = ( ~PM3 & P3 & ~POM3 ); + ports_o[4] = ( ~PM4 & P4 ); // bit3chg_enȂ̂1ł悢 + ports_o[5] = ( ~PM5 & P5 ); + ports_o[6] = ( ~PM6 & P6 ); + ports_o[7] = ( ~PM7 & P7 ); + ports_o[8] = ( ~PM12 & P12 ); + ports_o[9] = ( ~PM14 & P14 ); + ports_o[10] = ( ~PM15 & P15 ); + ports_o[11] = ( ~PM20 & P20 ); + NOP(); // u[Nu } - // N // +#endif + if( PM_EXTDC_n ) // ǂ^C~Oő}N邱Ƃ + { + STOP(); + } + + // N // // N // EKeyReturn荞݁id{^j - // EA_v^} + // ERTCA[iݕj - OSMC = 0x01; - CKC = 0b00001000; + renge_flg_interval = 0; + hal_update(); - if( PM_EXTDC_n ) - { - // d{^ŋNƂ - SW_pow_mask = false; - system_status.pwr_state = ON_CHECK; - timeout = 0; - } - // else{ - // A_v^ŋNƂ OFF ̒邮܂ + OSMC = 0x01; + CKC = bits8(0,0,0,0, 1,0,0,0); + + // NŔH + if( !PM_EXTDC_n ){ + system_status.pwr_state = OFF; // ĂāAON_CHECKɍs + } +/* // RTCA[B + else if( vreg_ctr[ VREG_C_IRQ1 ] & REG_BIT_RTC_ALARM ) + { + system_status.poweron_reason = RSN_RTC_ALARM; + system_status.pwr_state = ON_CHECK; + } + // else if( ̊荞݂œdon ){ + // 󑼂̗vł͋NȂ // } +*/ + else // if( !SW_POW_n ) // iȊOȂjd{^ŋN + { + SW_pow_mask = false; + system_status.poweron_reason = RSN_PWSW; + system_status.pwr_state = ON_CHECK; + } - RTCIMK = 0; + RTCIMK = 0; // sys tick ^C}[L + if( system_status.taikendai ) { system_status.pwr_state = OFF_TRIG; @@ -515,14 +570,14 @@ static void chk_emergencyExit(){ { if( !RESET1_n ) { - if( shirobako_power_control_count != 255 ) - shirobako_power_control_count += 1; + if( shirobako_power_control_count != 255 ) + shirobako_power_control_count ++; } else { // (TS{[hŎ蓮/fobK)Zbg炵 send_cmd_pmic( PM_REG_ADRS_BL, 0 ); - vreg_ctr[VREG_C_STATUS] = ( vreg_ctr[VREG_C_STATUS] & 0b10011111 ); + vreg_ctr[VREG_C_STATUS] = ( vreg_ctr[VREG_C_STATUS] & bits8(1,0,0,1, 1,1,1,1) ); vreg_ctr[VREG_C_COMMAND0] |= REG_BIT_RESET1_REQ; renge_task_immed_add( tski_do_command0 ); shirobako_power_control_count = WAIT_SHIROBAKO_POW_CONTROL; @@ -568,9 +623,9 @@ void send_getup_to_soc() -/*******************************************************//** +/* ======================================================== firm_update() task_status_immed^ Ԃ悤ɂ΂̂ł... - **********************************************************/ + ======================================================== */ task_status_immed tski_firm_update(){ firm_update(); return( ERR_SUCCESS ); diff --git a/trunk/user_define.h b/trunk/user_define.h index 1906ca2..701ee3a 100644 --- a/trunk/user_define.h +++ b/trunk/user_define.h @@ -8,14 +8,20 @@ //#define IIC_SLA_DCP 0x50 +#define bits8(a,b,c,d,e,f,g,h) ( a<<7 | b<<6 | c<<5 | d<<4 | e<<3 | f<<2 | g<<1 | h ) + +#ifndef _WIN32 +// @‹ + #ifdef _debug_led_ +/*spflΉȍ~AncłȂȂ̂Ŏg܂ # define DBG_LED_on { PM2.1 = 0; P2.1 = 1; } # define DBG_LED_off { P2.1 = 0; } # define DBG_LED_toggle ( P2.1 ^= 1 ) # define DBG_LED2_on { PM2.2 = 0; P2.2 = 1; } # define DBG_LED2_off { P2.2 = 0; } # define DBG_LED2_toggle ( P2.2 ^= 1 ) - +*/ #else # define DBG_LED_on ; # define DBG_LED_off ; @@ -23,51 +29,31 @@ # define DBG_LED2_on ; # define DBG_LED2_off ; # define DBG_LED2_toggle ; -#endif - -#ifdef _PMIC_CTR_ -# define SLP_ACK P7.7 -#endif - +#endif // _debug_led_ #define IIC_SLA_CODEC 0xA4 #define IIC_SLA_ACCEL 0x30 // ST LIS331DLH +#define SLP_ACK P7.7 + + // PMx0ŏo̓[h // SoC -#ifdef _MODEL_TEG2_ -#define IRQ0_ast { P3.0 = 0; PM3.0 = 0; } -#define IRQ0_neg { PM3.0 = 1; } -#define IRQ0 ( P3.0 ) -#endif -#ifdef _MODEL_WM0_ -#define IRQ0_ast { P3.0 = 0; PM3.0 = 0; } -#define IRQ0_neg { PM3.0 = 1; } -#define IRQ0 ( P3.0 ) -#endif - -#ifdef _MODEL_TS0_ -#define IRQ0_ast { P7.6 = 0; PM7.6 = 0; } -#define IRQ0_neg { PM7.6 = 1; } -#define IRQ0 ( P7.6 ) -#endif -#ifdef _MODEL_CTR_ #define IRQ0_ast { P7.6 = 0; PM7.6 = 0; } #define IRQ0_neg { P7.6 = 1; } #define IRQ0_enable { PM7.6 = 0; } #define IRQ0_disable { PM7.6 = 1; } #define IRQ0 ( P7.6 ) -#endif // h~ #define RESET1_n ( P0.0 ) #if 0 // PM_RESET1`g -#define RESET1_ast { P0.0 = 0; PM0.0 = 0; } -#define RESET1_neg { PM0.0 = 1; } +# define RESET1_ast { P0.0 = 0; PM0.0 = 0; } +# define RESET1_neg { PM0.0 = 1; } #endif #define RESET2_ast { P0.1 = 0; PM0.1 = 0; } @@ -83,35 +69,16 @@ #define DEV_RSV2 ( 0b11 << 1 ) // FCRAM -#ifdef _MODEL_TEG2_ -#define FCRAM_RST P14.0 -#define FCRAM_RST_ast { P14.0 = 0; } -#define FCRAM_RST_neg { P14.0 = 1; } -#endif -#ifdef _MODEL_WM0_ -#define FCRAM_RST P14.0 -#define FCRAM_RST_ast { P14.0 = 0; } -#define FCRAM_RST_neg { P14.0 = 1; } -#endif - -#ifdef _MODEL_TS0_ #define FCRAM_RST P3.0 #define FCRAM_RST_ast { P3.0 = 0; } #define FCRAM_RST_neg { P3.0 = 1; } -#endif -#ifdef _MODEL_CTR_ -#define FCRAM_RST P3.0 -#define FCRAM_RST_ast { P3.0 = 0; } -#define FCRAM_RST_neg { P3.0 = 1; } -#endif - // CODEC #define PM_IRQ_n P7.2 // INTP6 // PM -#define PM_EXTDC_n P7.0 +#define PM_EXTDC_n_RAW P7.0 // INTP7 //#define BT_TEMP P15.0 // ANI8 @@ -132,26 +99,35 @@ #define BT_CHG_Ena_n ( P4.3 ) // [d(in) -#define BT_IN_CHG_n P5.1 +#define BT_IN_CHG_n_RAW P5.1 +#define PM_BT_IN_CHG_n PM5.1 +#define PU_BT_IN_CHG_n PU5.1 -#define SW_WIFI_n P7.4 +#define SW_WIFI_n_RAW P7.4 +#define PM_SW_WIFI_n PM7.4 // KR4 -#define SW_POW_n P7.3 +#define SW_POW_n_RAW P7.3 // KR3 -#define SW_SEL_n P2.3 +#define SW_SEL_n P2.3 +#define PM_SW_SEL_n PM2.3 //#define VOL P2.7 // ANI7 -#define SW_HOME_n_JIKKI P20.4 +#define SW_HOME_n_JIKKI_RAW P20.4 +#define PM_SW_HOME_n_JIKKI PM20.4 +#define PU_SW_HOME_n_JIKKI PU20.4 + // INTP22 -#define SW_HOME_n_TSBOARD P2.0 +#define SW_HOME_n_TSBOARD_RAW P2.0 // TS}U[pull up(P2͓p.u.) +#define PM_SW_HOME_n_TSBOARD PM2.0 // WiFi -#ifndef _TEG_ #define WL_TX P20.3 // INTP21 -#else -#define WL_TX P20.3 // INTP21 -#endif +#define PM_WL_TX PM20.3 // INTP21 + +// RBR +#define RBR_RESET_n P2.1 +#define RBR_FLIGHT P2.2 //#define LED_CAM P1.0 // TO02 //#define LED_WIFI P1.1 // TO03 @@ -161,36 +137,13 @@ //#define LED_POW1 P1.5 // TO07 ( ) //#define LED_CHARGE P2.4 - -#ifdef _MODEL_TEG2_ -#define I2C_PU_on() P5.3 = 1 -#define I2C_PU_off() P5.3 = 0 -#endif - -#ifdef _MODEL_TS0_ -#define I2C_PU_on() P5.3 = 1 -#define I2C_PU_off() P5.3 = 0 -#endif - -#ifdef _MODEL_WM0_ -#define I2C_PU_on() P5.3 = 1 -#define I2C_PU_off() P5.3 = 0 -#endif - -#ifdef _MODEL_CTR_ // P5.3 ɉAP5.5, P140 P141 // P140o͐pȂ̂... -#define I2C_PU_on() { PM5.3 = 1; PM3.3 = 1; P14 |= 0x03; P5.3 = 1; PM5.3 = 0; P3.3 = 1; PM3.3 = 0; } -#define I2C_PU_off() { PM5.3 = 1; PM3.3 = 1; P14 &= ~0x03; P5.3 = 0; PM5.3 = 0; P3.3 = 0; PM3.3 = 0; } -#endif +#define I2C_PU_on() { P14 |= 0x03; PM5.3 = 0; PM3.3 = 0; } +#define I2C_PU_off() { PM5.3 = 1; PM3.3 = 1; P14 &= ~0x03; } -#ifdef _MODEL_CTR_ #define GYRO_ENABLE() P5.0 = 0 #define GYRO_DISABLE() P5.0 = 1 -#else -#define GYRO_ENABLE() ; -#define GYRO_DISABLE() ; -#endif //#define I2C_M_SDA P3.1 // SDA10 //#define I2C_M_SCL P3.2 // SCL10 @@ -213,46 +166,47 @@ #define DIPSW_TAIKENDAI_NBD 0b01 -#ifndef _MODEL_WM0_ -#define SHELL_OPEN P7.1 // INTP5 ӂJ (‚L) -#else -#define SHELL_OPEN 1 -#endif +#define SHELL_OPEN_RAW P7.1 // INTP5 ӂJ (‚L) -//#define DBG_VR P2.6 -// ANI6 - -#define DBG P14.1 - -#ifdef _MODEL_TEG2_ -#define ACC_VALID P15.2 -#define ACCEL_INT1 P2.5 -#endif - -#ifdef _MODEL_TS0_ -#define ACC_VALID P20.5 -#define ACCEL_INT1 P2.5 -#endif - -#ifdef _MODEL_WM0_ -// eRɂȂĂAZT̐ݒς߁ATS0Ɠł悢 -#define ACC_VALID P20.5 -#define ACCEL_INT1 P2.5 -#endif - -#ifdef _MODEL_CTR_ -#define ACC_VALID P20.5 -#define ACCEL_INT1 P2.5 -#endif +#define ACC_VALID P20.5 +#define PM_ACC_VALID PM20.5 +#define ACCEL_INT1 P2.5 +#define PM_ACCEL_INT1 PM2.5 +#endif // _WIN32 + +// win32 sim‹Ƌ #define KR_SW_POW ( 1 << 3 ) #define KR_SW_WIFI ( 1 << 4 ) - /////////////////////////////////////////////////////////// +#define INT_MSK0_IIC_M_DMA 1<<12 +#define INT_MSK0_SHELL 1<<7 +#define INT_MSK0_EXTDC 1<<6 +//#define INT_MSK0_SLP 1<<2 +#define INT_MSK0_RSV ~( INT_MSK0_IIC_M_DMA | INT_MSK0_SHELL | INT_MSK0_EXTDC ) + +#define INT_MSK1_KR 1<<11 +#define INT_MSK1_RTCINTVAL 1<<10 +#define INT_MSK1_RTCALARM 1<<9 +#define INT_MSK1_ADC 1<<8 +#define INT_MSK1_IIC_CTR 1<<3 +#define INT_MSK1_IIC_MCU 1<<0 +#define INT_MSK1_RSV ~( INT_MSK1_KR | INT_MSK1_RTCINTVAL | INT_MSK1_RTCALARM | INT_MSK1_ADC \ + | INT_MSK1_IIC_CTR | INT_MSK1_IIC_MCU ) + +#define INT_MSK2_WIFI_TX_KE3 1<<4 +#define INT_MSK2L_RSV ~( INT_MSK2_WIFI_TX_KE3 ) + +#define INT_MSK2_IIC_TWL 1<<8 +#define INT_MSK2_WIFI_TX_BSR 1<<10 +#define INT_MSK2_CODEC_PMIRQ 1<<3 +#define INT_MSK2_RSV ~( INT_MSK2_IIC_TWL | INT_MSK2_WIFI_TX_BSR | INT_MSK2_CODEC_PMIRQ ) + +#if 0 #define INT_MSK0_IIC_M_DMA 0b0001000000000000 #define INT_MSK0_SHELL 0b0000000010000000 #define INT_MSK0_EXTDC 0b0000000001000000 @@ -275,5 +229,6 @@ #define INT_MSK2_WIFI_TX_BSR ( 0b0000010000000000 ) #define INT_MSK2_CODEC_PMIRQ ( 0b0000000000001000 ) #define INT_MSK2_RSV 0b1111101111110111 +#endif // 0 -#endif +#endif // dupe include guard diff --git a/trunk/voltable.c b/trunk/voltable.c new file mode 100644 index 0000000..2aedcf0 --- /dev/null +++ b/trunk/voltable.c @@ -0,0 +1,48 @@ +#include "incs.h" + +#define _10db_ + +#ifdef _10db_ +// max -10db +const u8 slider_to_codec[64] = +{ + 127, 126, 125, 124, 122, 121, 120, 119, + 118, 117, 116, 114, 113, 112, 111, 110, + 109, 108, 106, 105, 104, 103, 102, 101, + 100, 98, 97, 96, 95, 94, 93, 92, + 90, 89, 88, 87, 86, 85, 83, 82, + 81, 80, 79, 78, 77, 75, 74, 73, + 73, 72, 71, 70, 69, 67, 66, 65, + 64, 63, 62, 61, 59, 58, 57, 56 + }; +#endif + +#ifdef _15db_ +// max -15db +const u8 slider_to_codec[64] = +{ + 127, 127, 127, 127, 127, 126, 125, 123, + 122, 121, 120, 119, 118, 117, 116, 115, + 114, 113, 112, 110, 109, 108, 107, 106, + 105, 104, 103, 102, 101, 100, 99, 97, + 96, 95, 94, 93, 92, 91, 90, 89, + 88, 87, 86, 85, 84, 83, 82, 81, + 80, 79, 78, 77, 76, 75, 74, 73, + 71, 70, 69, 68, 67, 66, 66, 66 +}; +#endif + +#ifdef _4db_ +// max -4db +const u8 slider_to_codec[64] = +{ + 127, 127, 126, 125, 123, 122, 121, 119, + 118, 117, 115, 114, 112, 111, 110, 108, + 107, 106, 104, 103, 101, 100, 99, 97, + 96, 94, 93, 92, 90, 89, 88, 86, + 85, 83, 82, 81, 79, 78, 77, 75, + 74, 72, 71, 70, 68, 67, 66, 64, + 64, 63, 61, 60, 59, 57, 56, 54, + 53, 52, 50, 49, 48, 46, 44, 44 +}; +#endif diff --git a/trunk/vreg_ctr.c b/trunk/vreg_ctr.c index 0df1fcc..3edd8b9 100644 --- a/trunk/vreg_ctr.c +++ b/trunk/vreg_ctr.c @@ -12,6 +12,7 @@ CTR MCU I2C #include "pool.h" #include + #include "fsl_user.h" @@ -21,6 +22,7 @@ extern u8 iic_burst_state; // extern bit info_led_pattern_updated; // m点LED̃p^[擪ɖ߂ extern bit pedolog_overflow; +extern bit reserve_pedo_increnent; @@ -31,8 +33,7 @@ u8 vreg_ctr[VREG_C_ENDMARK_ + 16]; u8 vreg_ctr[VREG_C_ENDMARK_]; #endif -u8 vreg_free_adrs; // AhXł̂ł΂炭͂ - +static u8 vreg_free_adrs; // AhXł̂ł΂炭͂ bit irq_readed; // AAA^̂߁B @@ -62,6 +63,7 @@ void vreg_ctr_init( ) vreg_ctr[ VREG_C_VOL_CAL_MIN ] = 0x36; vreg_ctr[ VREG_C_VOL_CAL_MAX ] = 0xFF - 0x36; + vreg_ctr[ VREG_C_RBR_CONTROL ] = REG_BIT_RESET_n; // todo | REG_BIT_FLIGHT; } @@ -77,7 +79,6 @@ void vreg_ctr_reset( ) vreg_ctr[ VREG_C_LED_WIFI ] = 0; vreg_ctr[ VREG_C_LED_CAM ] = 0; vreg_ctr[ VREG_C_LED_3D ] = 0; - vreg_ctr[ VREG_C_VOL_OPTION ] = 0; // vreg_ctr[ VREG_C_VOL_CAL_MIN ] = 0x36; ŏ_I // vreg_ctr[ VREG_C_VOL_CAL_MAX ] = 0xFF - 0x36; d邽тɃftHglɂȂĂ܂ { @@ -104,7 +105,8 @@ void vreg_ctr_write( u8 adrs, u8 data ) case ( VREG_C_MCU_STATUS ): // vreg_twl[ REG_TWL_INT_ADRS_MODE ] = (u8)( ( data >> 6 ) & 0x03 ); Rł悢B̑胊ZbgŃNA - vreg_ctr[ VREG_C_MCU_STATUS ] = data; + vreg_ctr[ VREG_C_MCU_STATUS ] &= data; // bitNA͂邪Zbg͂ȂB + // ̕twlWX^~[͓ǂݏoꎞɍ break; case ( VREG_C_VCOM_T ): @@ -128,8 +130,8 @@ void vreg_ctr_write( u8 adrs, u8 data ) if( data != 0 ) { renge_task_immed_add( tski_do_command0 ); + vreg_ctr[ VREG_C_COMMAND0 ] |= data; } - vreg_ctr[ VREG_C_COMMAND0 ] |= data; break; case ( VREG_C_COMMAND2 ): @@ -156,19 +158,21 @@ void vreg_ctr_write( u8 adrs, u8 data ) case ( VREG_C_COMMAND1 ): if( data != 0 ) { + // u8 temp; ԕϐg΂łȂ... // TWLɊ荞݂ /// ۂɊ荞݂̂SoC - vreg_twl[REG_TWL_INT_ADRS_IRQ] = ( ( data & REG_BIT_SEND_TWL_PWSW_DET ) != 0 ) ? REG_BIT_TWL_IRQ_PWSW_DET : 0x00; //pwsw_det - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_RESET_DET ) != 0 ) ? REG_BIT_TWL_IRQ_RESET : 0x00; //reset_req + /// rbg̕тႤʓ| + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] = ( ( data & REG_BIT_SEND_TWL_PWSW_DET ) != 0 ) ? REG_BIT_TWL_IRQ_PWSW_DET : 0x00; //pwsw_det + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_RESET_DET ) != 0 ) ? REG_BIT_TWL_IRQ_RESET : 0x00; //reset_req - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_OFF_DET ) != 0 ) ? REG_BIT_TWL_IRQ_OFF : 0x00; //off_req + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_OFF_DET ) != 0 ) ? REG_BIT_TWL_IRQ_OFF : 0x00; //off_req - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_BATT_LOW ) != 0 ) ? REG_BIT_TWL_IRQ_BT_LOW : 0x00; //batt_low - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= ( ( data & REG_BIT_SEND_TWL_BATT_EMPTY ) != 0 ) ? REG_BIT_TWL_IRQ_BT_EMPTY : 0x00; //batt_empty + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_BATT_LOW ) != 0 ) ? REG_BIT_TWL_IRQ_BT_LOW : 0x00; //batt_low + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= ( ( data & REG_BIT_SEND_TWL_BATT_EMPTY ) != 0 ) ? REG_BIT_TWL_IRQ_BT_EMPTY : 0x00; //batt_empty if(( data & REG_BIT_SEND_TWL_VOL_CLICK ) != 0 ) { - vreg_twl[REG_TWL_INT_ADRS_IRQ] |= REG_BIT_TWL_IRQ_VOL_CHANGE; //vol_changed + vreg_twl[ REG_TWL_INT_ADRS_IRQ ] |= REG_BIT_TWL_IRQ_VOL_CHANGE; //vol_changed } } break; @@ -177,12 +181,12 @@ void vreg_ctr_write( u8 adrs, u8 data ) if( iic_burst_state == 0 ) { vreg_ctr[ VREG_C_LED_POW ] = data; - iic_burst_state += 1; + iic_burst_state ++; } else if( iic_burst_state < 5 ) { led_red_batt_empty.dats[ iic_burst_state -1 ] = data; - iic_burst_state += 1; + iic_burst_state ++; } break; @@ -200,13 +204,13 @@ void vreg_ctr_write( u8 adrs, u8 data ) data = 1; } info_LED.bindata[ iic_burst_state ] = data; - iic_burst_state += 1; + iic_burst_state ++; if( iic_burst_state > 4 ) // p^[1ł { info_led_pattern_updated = true; } } - break; + break; /// 񓯊œĂ邽߂ł͏ȂB // \񂷂邾stopŏ @@ -294,7 +298,7 @@ void vreg_ctr_write( u8 adrs, u8 data ) if( vreg_free_adrs < VREG_C_FREE_SIZE ) { pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ] = data; - vreg_free_adrs += 1; + vreg_free_adrs ++; } break; @@ -322,66 +326,93 @@ void vreg_ctr_write( u8 adrs, u8 data ) // mcu_wdt_reset; // ̃R}hgӖȂłI break; #endif + case( 'p' ): + reserve_pedo_increnent = 1; + // ő₷ɂ̓X^bNȂBŗ\̂݁Atask_miscŏ +// hosu_increment_if_necessary(); // A + break; } - vreg_ctr[ VREG_C_COMMAND3 ] = data; + +// vreg_ctr[ VREG_C_COMMAND3 ] = data; // KvȂ break; - case ( VREG_C_VOL_OPTION ): - if(( vreg_ctr[ VREG_C_VOL_OPTION ] ^ data ) & ( REG_BIT_VOL_UPDATE_TO_SLIDER )) + case ( VREG_C_RBR_CONTROL ): + if(( data & REG_BIT_RESET_n ) != 0 ) { -// renge_task_immed_add( tski_vol_update ); - vol_polling = 3; + RBR_RESET_n = 1; } - vreg_ctr[ VREG_C_VOL_OPTION ] = data; + else + { + RBR_RESET_n = 0; + } + if(( data & REG_BIT_FLIGHT ) != 0 ) + { + RBR_FLIGHT = 1; + } + else + { + RBR_FLIGHT = 0; + } + vreg_ctr[ VREG_C_RBR_CONTROL ] = data; break; - // read only // - case ( VREG_C_MCU_VER_MAJOR ): - case ( VREG_C_MCU_VER_MINOR ): - // VREG_C_3D = 0x08, - // VREG_C_SND_VOL, - // VREG_C_BT_TEMP, - // VREG_C_BT_REMAIN, - // VREG_C_BT_REMAIN_FINE, - // VREG_C_BT_VOLTAGE, - case ( VREG_C_STATUS_1 ): - case ( VREG_C_STATUS ): - case ( VREG_C_IRQ0 ): - case ( VREG_C_IRQ1 ): - case ( VREG_C_IRQ2 ): - case ( VREG_C_IRQ3 ): - case ( VREG_C_IRQ4 ): - case ( VREG_C_LED_NOTIFY_FLAG ): - case ( VREG_C_RTC_SEC_FINE_L ): - case ( VREG_C_RTC_SEC_FINE_H ): - // VREG_C_ACC_RESERVE, + // read only ////////////////////////////////////////// + case VREG_C_MCU_VER_MAJOR: + case VREG_C_MCU_VER_MINOR: + case VREG_C_3D: // ɃtbV + case VREG_C_SND_VOL: // ɃtbV + case VREG_C_BT_TEMP: // ɃtbV + case VREG_C_BT_REMAIN: // ɃtbV + case VREG_C_BT_REMAIN_FINE: // ɃtbV + case VREG_C_BT_VOLTAGE: // ɃtbV + case VREG_C_STATUS_1: // KɃtbV + case VREG_C_STATUS: // KɃtbV + case VREG_C_IRQ0: // ̂‚łɊ荞݋NĂقȂ... + case VREG_C_IRQ1: + case VREG_C_IRQ2: + case VREG_C_IRQ3: + case VREG_C_IRQ4: + case VREG_C_LED_NOTIFY_FLAG: // tbV + case VREG_C_RTC_SEC_FINE_L: // tbV + case VREG_C_RTC_SEC_FINE_H: // tbV + // VREG_C_ACC_RESERVE, // NȂ // VREG_C_ACC_HOSU_HIST = 0x4F, + case VREG_C_ACC_XH: // tbV + case VREG_C_ACC_XL: + case VREG_C_ACC_YH: + case VREG_C_ACC_YL: + case VREG_C_ACC_ZH: + case VREG_C_ACC_ZL: + dbg_nop(); break; -//debug// - case ( VREG_C_VOL_DIGITAL ): - NOP(); - // no break // - - // lXV邾 // - default: + case VREG_C_ACC_HOSU_L: // ĂǁAfobOpB(AhX0x4B == mcu sla(r)) + dbg_nop(); + /* FALLTHROUGH */ + + // ʂɏ邾 ///////////////////////////////// + default: /* - case ( VREG_C_IRQ_MASK0 ): - case ( VREG_C_IRQ_MASK1 ): - case ( VREG_C_IRQ_MASK2 ): - case ( VREG_C_IRQ_MASK3 ): - case ( VREG_C_IRQ_MASK4 ): - case ( VREG_C_DBG01 ): - case ( VREG_C_DBG02 ): - case ( VREG_C_LED_BRIGHT ): - case ( VREG_C_ACC_HOSU_L ): - case ( VREG_C_ACC_HOSU_M ): - case ( VREG_C_ACC_HOSU_H ): - case ( VREG_C_ACC_HOSU_HOUR_BOUNDARY ): - case ( VREG_C_FREE_ADRS ): - case ( VREG_C_RTC_ALARM_YEAR ): - case ( VREG_C_ACC_W_ADRS ): - case ( VREG_C_OFF_DELAY ): + case VREG_C_IRQ_MASK0: + case VREG_C_IRQ_MASK1: + case VREG_C_IRQ_MASK2: + case VREG_C_IRQ_MASK3: + case VREG_C_IRQ_MASK4: + case VREG_C_DBG01: + case VREG_C_DBG02: + case VREG_C_LED_BRIGHT: + case VREG_C_ACC_HOSU_L: + case VREG_C_ACC_HOSU_M: + case VREG_C_ACC_HOSU_H: + case VREG_C_ACC_HOSU_HOUR_BOUNDARY: + case VREG_C_FREE_ADRS: + case VREG_C_RTC_ALARM_YEAR: + case VREG_C_ACC_W_ADRS: + case VREG_C_OFF_DELAY: + case VREG_C_HAL_OVW_CONT0: + case VREG_C_HAL_OVW_DAT0: + case VREG_C_HAL_OVW_CONT1: + case VREG_C_HAL_OVW_DAT1: */ if( adrs < VREG_C_ENDMARK_ ) { @@ -390,6 +421,7 @@ void vreg_ctr_write( u8 adrs, u8 data ) } else { + dbg_nop(); // read only̏ɏBȂ񂩃oOĂȂH break; } } @@ -412,7 +444,7 @@ u8 vreg_ctr_read( u8 adrs ) // RTC͓ǂݏorɌJオ̂邽 if( ( VREG_C_RTC_SEC <= adrs ) && ( adrs <= VREG_C_RTC_YEAR ) ) { - rtc_buf_reflesh( ); + rtc_buf_refresh( ); } else if( adrs == VREG_C_MCU_STATUS ) { @@ -429,14 +461,21 @@ u8 vreg_ctr_read( u8 adrs ) { return( (u8)( ( rsub_temp >> 8 ) & 0xFF ) ); } - else if( adrs == VREG_C_ACC_HOSU_HIST ) +/* + // debug I + else if( adrs == VREG_C_IRQ_MASK0 ) + { + return( vreg_ctr[ VREG_C_IRQ_MASK0 ] & 0x7F ); // `MSB0B1ȂʐMG[ + } +*/ + else if( adrs == VREG_C_ACC_HOSU_HIST ) { return( hosu_read() ); } else if( adrs == VREG_CX_FREE_DATA ) { temp = pool.vreg_c_ext.vreg_c_free[ vreg_free_adrs ]; - // vreg_free_adrs += 1; // ʼnZĂ܂ƃCfbNX + // vreg_free_adrs ++; // ʼnZĂ܂ƃCfbNX return( temp ); } else if( adrs == VREG_CX_INFO ) @@ -444,18 +483,22 @@ u8 vreg_ctr_read( u8 adrs ) return( extinfo_read() ); } else if( adrs == VREG_C_ACC_HOSU_SETTING ) - { - return( pedolog_overflow? 0x10: 0 ); - } + { + if( pedolog_overflow ) + { + return( 0x10 ); + } + else + { + return( 0 ); + } + } -#if 0 if( adrs >= VREG_C_ENDMARK_ ) { - // VREG_C_INFO > VREG_C_ENDMARK_ Ȃ̂ - // Ƃ͒ - return( 0xEE ); + // VREG_C_INFO > VREG_C_ENDMARK_ Ȃ̂łƂ + return( 0xFF ); } -#endif return ( vreg_ctr[adrs] ); } @@ -480,7 +523,7 @@ void vreg_ctr_after_read( u8 adrs, u8 data ) break; case VREG_CX_FREE_DATA: - vreg_free_adrs += 1; + vreg_free_adrs ++; break; default: @@ -508,7 +551,7 @@ void vreg_ctr_after_read( u8 adrs, u8 data ) } #endif -// }XNĂAtOĂA荞݂ȂB +// }XNĂAtOuĂȂvA荞ݓȂB void set_irq( u8 irqreg, u8 irq_flg ) { u8 tot; diff --git a/trunk/vreg_ctr.h b/trunk/vreg_ctr.h index af4f86e..a7ba785 100644 --- a/trunk/vreg_ctr.h +++ b/trunk/vreg_ctr.h @@ -5,6 +5,8 @@ #include "config.h" // VREG_C_MCU_STATUS +// bit[7.6] twl.sys_mode[1.0] ctr珑ȂAfcr_resetɓKɃZbg +// bit[5] V [7] ctr珑ȂAfcr_resetɓKɃZbg #define REG_BIT_STATUS_WDT_RESET ( 1 << 1 ) #define REG_BIT_RTC_BLACKOUT ( 1 << 0 ) @@ -27,7 +29,7 @@ // twl bl ̃~[[1: ( 1 << 3 ) // 0]( 1 << 2 ) #define REG_BIT_ACCERO_ERR ( 1 << 1 ) -#define REG_BIT_MGIC_ERR ( 1 << 0 ) +#define REG_BIT_MGIC_ERR ( 1 << 0 ) // VREG_C_IRQ0 #define REG_BIT_IRQ_WDT_RESET ( 1 << 7 ) @@ -113,10 +115,6 @@ #define REG_BIT_TWL_IRQ_BT_EMPTY 0x10 #define REG_BIT_TWL_IRQ_VOL_CHANGE 0x40 -// VOL option (0x26) -#define REG_BIT_VOL_UPDATE_TO_SLIDER ( 1 << 4 ) -#define REG_BIT_VOL_BY_SPI ( 1 << 0 ) -// FORCE_REG̕ア // CODECPMIC NTR ̑㗝WX^ #define REG_BIT_TWL_REQ_OFF ( 1 << 6 ) @@ -125,10 +123,31 @@ #define REG_BIT_TWL_REQ_RESET ( 1 << 0 ) - // VREG_C_LED_NOTIFY_FLAG #define REG_BIT_IN_LOOP ( 1 << 0 ) +// RBR control (0x57) +#define REG_BIT_FLIGHT ( 1 << 1 ) +#define REG_BIT_RESET_n ( 1 << 0 ) + + +// HAL bitfields 0 +#define REG_BIT_HAL0_PM_EXTDC_n ( 1 << 7 ) +#define REG_BIT_HAL0_BT_IN_CHG_n ( 1 << 6 ) +//#define REG_BIT_HAL0_PM_IRQ_n // gȂ +#define REG_BIT_HAL0_RSV_5 ( 1 << 5 ) +#define REG_BIT_HAL0_WL_TX ( 1 << 4 ) +#define REG_BIT_HAL0_SHELL_OPEN ( 1 << 3 ) // statusɂ܂ +#define REG_BIT_HAL0_SW_WIFI_n ( 1 << 2 ) +#define REG_BIT_HAL0_SW_HOME_n ( 1 << 1 ) +#define REG_BIT_HAL0_SW_POW_n ( 1 << 0 ) + + +// HAL bitfields 1 +#define REG_BIT_HAL1_DIPSW_1 ( 1 << 3 ) +#define REG_BIT_HAL1_DIPSW_0 ( 1 << 2 ) +#define REG_BIT_HAL1_HW_DET_1 ( 1 << 1 ) +#define REG_BIT_HAL1_HW_DET_0 ( 1 << 0 ) /* ev @@ -189,9 +208,9 @@ enum VREG_C_ADRS VREG_C_COMMAND3, // 'r' Ń}CRZbgA 'w' WDTZbg VREG_C_OFF_DELAY = 0x24, - VREG_C_VOL_DIGITAL = 0x25, - VREG_C_VOL_OPTION, - VREG_C_VOL_ADC_RAW, +// VREG_C_VOL_DIGITAL = 0x25, // todo +// VREG_C_VOL_OPTION, + VREG_C_VOL_ADC_RAW = 0x27, VREG_C_LED_BRIGHT = 0x28, VREG_C_LED_POW, @@ -201,6 +220,8 @@ enum VREG_C_ADRS VREG_C_LED_NOTIFY_DATA, VREG_C_LED_NOTIFY_FLAG, + VREG_C_RBR_CONTROL = 0x2F, + VREG_C_RTC_SEC = 0x30, VREG_C_RTC_MIN, VREG_C_RTC_HOUR, @@ -242,12 +263,23 @@ enum VREG_C_ADRS VREG_C_ACC_HOSU_HOUR_BOUNDARY = 0x50, VREG_C_ACC_HOSU_HOUR_BOUNDARY_SEC, + VREG_C_HAL_OVW_CONT0 = 0x52, + VREG_C_HAL_OVW_DAT0, + VREG_C_HAL_OVW_CONT1, // reserved + VREG_C_HAL_OVW_DAT1, // reserved + + VREG_C_HAL_OVW_BT_FUEL = 0x56, + VREG_C_HAL_OVW_BT_VOLTAGE, + VREG_C_VOL_CAL_MIN = 0x58, VREG_C_VOL_CAL_MAX, - VREG_C_ENDMARK_ + VREG_C_HAL_OVW_TEMPERATURE = 0x5A, + + VREG_C_ENDMARK_ }; +// Ԃ͔ɂāAmۂȂ߂ ʂ define Ă #define VREG_CX_INFO 0x7F #define VREG_CX_FREE_ADRS 0x60 #define VREG_CX_FREE_DATA 0x61 diff --git a/trunk/yav_mcu_bsr.plg b/trunk/yav_mcu_bsr.plg index 955cec1..910a544 100644 --- a/trunk/yav_mcu_bsr.plg +++ b/trunk/yav_mcu_bsr.plg @@ -1,152 +1,38 @@ -C:\WINDOWS\system32\cmd.exe /c touch magic.c -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no loader.c -loader.c(121) : CC78K0R warning W0401: Conversion may lose significant digits -loader.c(122) : CC78K0R warning W0401: Conversion may lose significant digits +C:\Windows\system32\cmd.exe /c c:\cygwin\bin\touch magic.c +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no magic.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff inter_asm\magic.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no sw.c +Compilation complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff inter_asm\sw.asm +Assembly complete, 0 error(s) and 0 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\bin\cc78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r" -ms -rd2 -qvjl2w -sainter_asm -zpb -no task_sys.c +task_sys.c(219) : CC78K0R warning W0401: Conversion may lose significant digits +task_sys.c(580) : CC78K0R warning W0401: Conversion may lose significant digits Compilation complete, 0 error(s) and 2 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\loader.asm +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff inter_asm\task_sys.asm Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no pm.c -pm.c(801) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(878) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(886) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(1101) : CC78K0R warning W0401: Conversion may lose significant digits -pm.c(1104) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 5 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\pm.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no i2c_ctr.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\i2c_ctr.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no main.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\main.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no magic.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\magic.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no WDT.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\WDT.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no i2c_mcu.c -i2c_mcu.c(210) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 1 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\i2c_mcu.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no i2c_twl.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\i2c_twl.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no led.c -led.c(109) : CC78K0R warning W0745: Expected function prototype -led.c(251) : CC78K0R warning W0401: Conversion may lose significant digits -led.c(256) : CC78K0R warning W0401: Conversion may lose significant digits -led.c(318) : CC78K0R warning W0401: Conversion may lose significant digits -led.c(377) : CC78K0R warning W0401: Conversion may lose significant digits -led.c(403) : CC78K0R warning W0401: Conversion may lose significant digits -led.c(579) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 7 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\led.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no rtc.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\rtc.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no vreg_ctr.c -vreg_ctr.c(163) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(164) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(166) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(168) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(169) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(216) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(216) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(221) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(221) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(225) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(225) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(229) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(229) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_ctr.c(233) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 14 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\vreg_ctr.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no vreg_twl.c -vreg_twl.c(57) : CC78K0R warning W0401: Conversion may lose significant digits -vreg_twl.c(61) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 2 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\vreg_twl.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no adc.c -adc.c(103) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(200) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(232) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(344) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(384) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(462) : CC78K0R warning W0745: Expected function prototype -adc.c(491) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(496) : CC78K0R warning W0401: Conversion may lose significant digits -adc.c(122) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 9 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\adc.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no renge\renge.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\renge.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no accero.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\accero.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no self_flash.c -self_flash.c(271) : CC78K0R warning W0401: Conversion may lose significant digits -self_flash.c(272) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 2 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\self_flash.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no sw.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\sw.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no task_debug.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_debug.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no task_misc.c -task_misc.c(300) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 1 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_misc.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no task_sys.c -task_sys.c(207) : CC78K0R warning W0401: Conversion may lose significant digits -task_sys.c(525) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 2 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_sys.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no pedo_alg_thre_det2.c -pedo_alg_thre_det2.c(58) : CC78K0R warning W0745: Expected function prototype -pedo_alg_thre_det2.c(73) : CC78K0R warning W0401: Conversion may lose significant digits -pedo_alg_thre_det2.c(140) : CC78K0R warning W0401: Conversion may lose significant digits -pedo_alg_thre_det2.c(153) : CC78K0R warning W0401: Conversion may lose significant digits -Compilation complete, 0 error(s) and 4 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\pedo_alg_thre_det2.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no ini_VECT.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\ini_VECT.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\bin\cc78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff -irenge -i"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r" -ms -qvjl2w -sainter_asm -zpb -no task_status.c -Compilation complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\ra78k0r.exe" -c9F0104 -y"d:\program files\nec electronics tools\dev" -_msgoff inter_asm\task_status.asm -Assembly complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\lk78k0r.exe" -y"d:\program files\nec electronics tools\dev" -_msgoff -obsr.lmf "..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\lib78k0r\s0rm.rel" -gi1B339499E033F240BFAAh -pbsr_k0r.map -nkd -gb7EFBFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"D:\Program Files\NEC Electronics Tools\CC78K0R\W2.12\lib78k0r" -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_status.rel -Link complete, 0 error(s) and 0 warning(s) found. -"D:\Program Files\NEC Electronics Tools\RA78K0R\W1.33\bin\oc78k0r.exe" -y"d:\program files\nec electronics tools\dev" -_msgoff -o.\bsr.hex -nu -ki bsr.lmf +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\lk78k0r.exe" -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -obsr.lmf "..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi1B339499E033F240BFAAh -pbsr_k0r.map -nkd -gb7EFBFFh -b"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r" -dbsr_mcu.dr -s -w2 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_status.rel led_cam.rel led_pow.rel hal.rel batt_params.rel voltable.rel pedo_lpf_coeff.rel +RA78K0R warning W3420: File 'loader.rel' already has had error(s)/warning(s) by 'CC78K' + Read Device File Directory : C:\PROGRAM FILES (X86)\NEC ELECTRONICS TOOLS\DEV\ +RA78K0R warning W3420: File 'pm.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'i2c_mcu.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'led.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'vreg_ctr.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'vreg_twl.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'adc.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'accero.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'self_flash.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'task_misc.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'task_sys.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'pedo_alg_thre_det2.rel' already has had error(s)/warning(s) by 'CC78K' +RA78K0R warning W3420: File 'led_pow.rel' already has had error(s)/warning(s) by 'CC78K' + +Link complete, 0 error(s) and 13 warning(s) found. +"C:\Program Files (x86)\NEC Electronics Tools\RA78K0R\W1.33\bin\oc78k0r.exe" -y"c:\program files (x86)\nec electronics tools\dev" -_msgoff -o.\bsr.hex -nu -ki bsr.lmf Object Conversion Complete, 0 error(s) and 0 warning(s) found. -C:\WINDOWS\system32\cmd.exe /c ruby nec_s_2_bsrbin2.rb bsr.hex -intel-HEX to bsr bin converter - file converted! - - -Build Total error(s) : 0 Total warning(s) : 49 +C:\Windows\system32\cmd.exe /c ruby nec_s_2_bsrbin2.rb bsr.hex +133 +!E debug enable!! +Build Total error(s) : 0 Total warning(s) : 15 diff --git a/trunk/yav_mcu_bsr.pri b/trunk/yav_mcu_bsr.pri index edd788b..8741ece 100644 --- a/trunk/yav_mcu_bsr.pri +++ b/trunk/yav_mcu_bsr.pri @@ -14,7 +14,7 @@ Low-voltage Flash Rewriting=On Fail Safe Break=0x2000 Port=1 NMI=OFF -TRESET=OFF +TRESET=ON IRESET=OFF WAIT=OFF SysClock=None @@ -22,8 +22,8 @@ SubClock=None [Mapping] Count=0 [Main] -Geometry=154, 154, 1080, 635 -Window=Max +Geometry=39, 38, 1452, 1091 +Window=Normal MDI_MAX=OFF Button=ON Mode=Auto @@ -55,7 +55,7 @@ HighSpeed1=OFF CPU Reset1=ON Symbol Reset1=ON [View File] -Dir=\\Tsclient\c\78k_data\yav-mcu-basara\trunk\ +Dir=\\Tsclient\c\78k_data\yav-mcu-basara\branches\1.34_pwsw_analyze\ Filter=Source [Debugger Option] Source Path="" @@ -78,10 +78,10 @@ Symbol Type=OFF Language=C Kanji=SJIS [Source] -Geometry=28, 27, 1001, 770 +Geometry=68, 7, 822, 815 Window=Normal -DispStart=432 -CaretPos=433,0 +DispStart=49 +CaretPos=62,0 Mode=Normal DispFile= Address1= @@ -140,10 +140,10 @@ SaveStart= SaveEnd= Accumulative=ON [Assemble] -Geometry=43, 31, 727, 721 -Window=Hide -DispStart=847754240 -CaretPos=0,0 +Geometry=100, 100, 600, 400 +Window=Normal +DispStart=12209 +CaretPos=12209,27 Address1= Address2= Address3= @@ -185,7 +185,7 @@ SaveRange=Screen SaveStart= SaveEnd= [Memory] -Geometry=244, 107, 550, 400 +Geometry=24, 534, 550, 400 Window=Normal Boundary=163 Format=Hex @@ -194,9 +194,9 @@ Endian=Little Ascii=OFF Idtag=OFF Address= -DispStart=000F2220 -CaretPosData=26, 62009 -CaretPosAscii=50176, 0 +DispStart=000FFCF0 +CaretPosData=0, 65487 +CaretPosAscii=0, 65487 Address1= Address2= Address3= @@ -814,9 +814,9 @@ L529=IICWL1 L530=IICWH1 L531=SVA1 [Local Variable] -Geometry=1032, 466, 400, 300 -Window=Normal -Boundary=13041851 +Geometry=0, 0, 0, 0 +Window=Hide +Boundary=0 Mode=Proper [Trace View] Geometry=0, 0, 0, 0 @@ -866,22 +866,22 @@ SaveRange=Screen SaveStart= SaveEnd= [Register] -Geometry=0, 0, 0, 0 -Window=Hide +Geometry=50, 50, 250, 400 +Window=Normal Mode=Hex -Boundary=62 +Boundary=159 Pickup=OFF Name=Functional Register Bank=0 -RP0=3 -RP1=3 -RP2=3 -RP3=3 -PC=3 -SP=3 -PSW=3 -ES=3 -CS=3 +RP0=1 +RP1=1 +RP2=1 +RP3=1 +PC=1 +SP=1 +PSW=1 +ES=1 +CS=1 [Event Manager] Geometry=0, 0, 0, 0 Window=Hide @@ -957,43 +957,62 @@ Detail=OFF Last Name= Count=0 [Variable] -Geometry=981, 20, 440, 451 +Geometry=935, 61, 440, 634 Window=Normal Boundary=13762700 -0=.battery_manufacturer,P,N,A,+,1 -1=.temp_fuel,P,N,A,+,1 -2=.bt_volt16,P,N,A,+,1 -Line=3 +0=.SW_pow_count,P,N,A,+,1 +1=.renge_flg_interval,P,N,A,+,1 +2=.SW_pow_count,P,N,A,+,1 +3=.pwsw_timeout,P,N,A,+,1 +4=.RWAIT,P,S,A,+,1 +5=.RWST,P,S,A,+,1 +6=.system_status,.,N,A,+,1 +7=.counter1,D,N,A,+,1 +8=.chg_led_override,P,N,A,+,1 +9=.PM_EXTDC_n,P,N,A,+,1 +Line=10 [Quick Watch] -0=LED_dim_status_info_G,P,A,1 -1=LED_dim_status_info_B,P,A,1 -2=LED_dim_status_info_R,P,A,1 -3=info_LED.info_LED,P,A,1 -4=temp,P,A,1 -5=p_batt_param,P,A,1 -6=loop,P,A,1 -7=system_status,P,A,1 -8=battery_manufacturer,P,A,1 -9=p_bt_param,P,A,1 -10=bt_volt16,P,A,1 -11=temp_fuel,P,A,1 +0=counter1,P,A,1 +1=system_status,P,A,1 +2=timeout,P,A,1 +3=tp,P,A,1 +4=chg_led_override,P,A,1 +5=PM_EXTDC_n,P,A,1 +6=pwsw_timeout,P,A,1 +7=SW_pow_count,P,A,1 +8=renge_flg_interval,P,A,1 +9=RWST,P,A,1 +10=RWAIT,P,A,1 +11= 12= 13= 14= 15= [Software Break] -Geometry=75, 75, 500, 200 +Geometry=914, 762, 500, 200 Window=Normal Width=150 30 200 100 -Name0=Swb00001 -Address0=pm.c#_BT_get_left+0x13c +Name0=Swb00003 +Address0=task_sys.c#_tsk_sys+0x47 Window0=ASM -Status0=ON -Name1=Swb00003 -Address1=pm.c#_BT_get_left+0x135 +Status0=OFF +Name1=Swb00002 +Address1=task_sys.c#_tsk_sys+0x27f Window1=ASM -Status1=ON -Count=2 +Status1=OFF +Name2=Swb00004 +Address2=task_sys.c#_tsk_sys+0x28d +Window2=ASM +Status2=ON +Name3=Swb00001 +Address3=task_sys.c#_tsk_sys+0x69 +Window3=ASM +Status3=ON +Name4=Swb00005 +Address4=rtc.c#_RTC_init+0x4c +Window4=ASM +Status4=ON +Count=5 [Reset] Debugger=ON Symbol=OFF @@ -1018,7 +1037,7 @@ Window=Hide [Data Flash Option] Data Flash Emulation=OFF [List] -Geometry=0, 0, 0, 0 +Geometry=75, 75, 856, 846 Window=Hide [Console] Geometry=0, 0, 0, 0 diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index ca010d2..c1b8f73 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -6,7 +6,7 @@ Series=78K0R.PM Device=uPD79F0104 DeviceVer=E1.00b DebugMode=1 -Target=C:\78k_data\yav-mcu-basara\trunk\bsr.lmf +Target=bsr.lmf [BuildMode0] BuildModeName=Debug Build TargetFile=0 @@ -36,6 +36,562 @@ TargetFile=0 [BuildMode5] BuildModeName=BSR_WM0 TargetFile=0 +[Options.OC78K0R 0] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 1] +Version=100 +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 2] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=0 +UN=FF +UST= +USZ= +K=0 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 3] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 4] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[Options.OC78K0R 5] +Version=100 +O0=.\bsr.hex +O1=bsr.hex +UC=1 +UN=FF +UST= +USZ= +K=1 +ZF=0 +S=1 +E=0 +CommandFile=0 +[BuildBefore-AfterCmd] +Before1=c:\cygwin\bin\touch magic.c +After1=ruby nec_s_2_bsrbin2.rb bsr.hex +[ToolSet] +ToolSetName=(ύX)78K0R Software Package V1.10 +Tool1=CC78K0R|W2.13 +Tool2=RA78K0R|W1.33 +Tool3=SK78K0R|V3.10 +Tool4=ID78K0R-QB|V3.61 +[Options.LCNV78K0R 0] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 1] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 2] +Version=100 +LCNV_GO=0 +O0=inter_asm +E=0 +CommandFile=0 +[Options.LCNV78K0R 3] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 4] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.LCNV78K0R 5] +Version=100 +LCNV_GO=0 +E=0 +CommandFile=0 +[Options.RA78K0R 0] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 1] +Version=100 +G=0 +GA=0 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 2] +Version=100 +O0= +O1=obj +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 3] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 4] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[Options.RA78K0R 5] +Version=100 +G=1 +GA=1 +E=0 +COMMON=0 +COMPATI=0 +P=1 +KA=1 +KS=0 +KX=0 +LF=0 +LW=132 +LL=0 +LT=8 +Z=0 +CommandFile=0 +RA_OPT= +[SrcFile] +Source1=loader.c +Source2=pm.c +Source3=i2c_ctr.c +Source4=main.c +Source5=magic.c +Source6=WDT.c +Source7=i2c_mcu.c +Source8=i2c_twl.c +Source9=led.c +Source10=rtc.c +Source11=vreg_ctr.c +Source12=vreg_twl.c +Source13=adc.c +Source14=renge\renge.c +Source15=accero.c +Source16=self_flash.c +Source17=sw.c +Source18=task_debug.c +Source19=task_misc.c +Source20=task_sys.c +Source21=pedo_alg_thre_det2.c +Source22=ini_VECT.c +Source23=task_status.c +Source24=led_cam.c +Source25=led_pow.c +Source26=hal.c +Source27=batt_params.c +Source28=voltable.c +Source29=pedo_lpf_coeff.c +[Options.LK78K0R 0] +Version=100 +O0=bsr_k0r.lmf +O1=bsr.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=0 +SELFCheck=1 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 1] +Version=100 +O0=a.lmf +G=0 +E=0 +E0=a.elk +GO=0 +GOValue= +GOStart=FC00 +GOSizeValue=1024 +GI=0 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=1 +MemInfoCheck=0 +P=1 +P0=a.map +MI=0 +GB=0 +GBValue= +KM=1 +KD=1 +KP=0 +KL=0 +LF=0 +LL=0 +S=0 +W=1 +SELFCheck=0 +SELF=0 +ZB= +CommandFile=0 +[Options.LK78K0R 2] +Version=100 +O0=bsr.lmf +O1=bsr_k0r.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=1B339499E033F240BFAA +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=7EFBFF +KM=1 +KD=0 +KP=0 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib +B1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +OFILE=C:\78k_data\yav-mcu-basara\trunk\bsr.lmf +[Options.LK78K0R 3] +Version=100 +O0=bsr_bsr.lmf +O1=bsr_k0r.lmf +O2=bsr.lmf +O3=flash.lmf +O4=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_bsr.map +P1=bsr_k0r.map +P2=bsr.map +P3=flash.map +P4=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 4] +Version=100 +O0=bsr_k0r.lmf +O1=bsr.lmf +O2=flash.lmf +O3=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_k0r.map +P1=bsr.map +P2=flash.map +P3=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=0 +SELFCheck=1 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.LK78K0R 5] +Version=100 +O0=bsr_bsr.lmf +O1=bsr_k0r.lmf +O2=bsr.lmf +O3=flash.lmf +O4=a.lmf +G=1 +E=0 +E0=flash.elk +E1=a.elk +GO=1 +GOValue=85 +GOStart=FC00 +GOSizeValue=1024 +GI=1 +GIValue=FFFFFFFFFFFFFFFFFFFF +CCZA=0 +MemInfoCheck=1 +P=1 +P0=bsr_bsr.map +P1=bsr_k0r.map +P2=bsr.map +P3=flash.map +P4=a.map +MI=0 +GB=1 +GBValue=6EFBFF +KM=1 +KD=0 +KP=1 +KL=0 +LF=0 +LL=0 +B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib +D0=bsr_mcu.dr +D1=user_area.dr +S=1 +W=2 +SELFCheck=0 +SELF=0 +ZB= +Etcetera0= +Etcetera1=boot.lmf +CommandFile=0 +[Options.78K0R] +BuildMode=2 +BuildMode2=K0R_dbg +BuildMode3=BSR_dbg +BuildMode4=BSR_rel +BuildMode5=BSR_WM0 +DefaultMode2=1 +DefaultMode3=1 +DefaultMode4=1 +DefaultMode5=1 +[IncFile] +Include1=incs_loader.h +Include2=sim\simOnWin.h +Include3=sim\sfrAlias.h +Include4=config.h +Include5=jhl_defs.h +Include6=user_define.h +Include7=hal.h +Include8=bsr_system.h +Include9=renge\renge.h +Include10=renge\renge_defs.h +Include11=renge\renge_task_immediate.h +Include12=vreg_ctr.h +Include13=vreg_twl.h +Include14=loader.h +Include15=i2c_mcu.h +Include16=WDT.h +Include17=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h +Include18=fsl_user.h +Include19=i2c_ctr.h +Include20=pm.h +Include21=rtc.h +Include22=reboot.h +Include23=magic.h +Include24=incs.h +Include25=i2c_twl.h +Include26=accero.h +Include27=pedometer.h +Include28=sw.h +Include29=adc.h +Include30=led.h +Include31=batt_params.h +Include32=pool.h +Include33=i2c_twl_defs.h +Include34=renge\renge_task_intval.h +Include35=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h +Include36=self_flash.h +Include37=sim\sim_interrupt_decrare.c [Options.CC78K0R 0] Version=210 Include0=renge,C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r @@ -197,8 +753,8 @@ Flashobj=0 FlashStartadr= FlashBranchStartadr= Mirror=0 -Saddrglobalchk=0 -Saddrglobal=1066 +Saddrglobalchk=1 +Saddrglobal=1063 Saddrstaticchk=0 Saddrstatic=1072 Bitfieldmsb=0 @@ -505,553 +1061,3 @@ VfiFileBoot0= VfiFileBoot1=boot.vfi VF78K0Rchk=0 VF78K0Rvs= -[Options.OC78K0R 0] -Version=100 -O0=.\bsr.hex -O1=bsr.hex -UC=1 -UN=FF -UST= -USZ= -K=1 -ZF=0 -S=1 -E=0 -CommandFile=0 -[Options.OC78K0R 1] -Version=100 -UC=1 -UN=FF -UST= -USZ= -K=1 -ZF=0 -S=1 -E=0 -CommandFile=0 -[Options.OC78K0R 2] -Version=100 -O0=.\bsr.hex -O1=bsr.hex -UC=0 -UN=FF -UST= -USZ= -K=0 -ZF=0 -S=1 -E=0 -CommandFile=0 -[Options.OC78K0R 3] -Version=100 -O0=.\bsr.hex -O1=bsr.hex -UC=1 -UN=FF -UST= -USZ= -K=1 -ZF=0 -S=1 -E=0 -CommandFile=0 -[Options.OC78K0R 4] -Version=100 -O0=.\bsr.hex -O1=bsr.hex -UC=1 -UN=FF -UST= -USZ= -K=1 -ZF=0 -S=1 -E=0 -CommandFile=0 -[Options.OC78K0R 5] -Version=100 -O0=.\bsr.hex -O1=bsr.hex -UC=1 -UN=FF -UST= -USZ= -K=1 -ZF=0 -S=1 -E=0 -CommandFile=0 -[SrcFile] -Source1=loader.c -Source2=pm.c -Source3=i2c_ctr.c -Source4=main.c -Source5=magic.c -Source6=WDT.c -Source7=i2c_mcu.c -Source8=i2c_twl.c -Source9=led.c -Source10=rtc.c -Source11=vreg_ctr.c -Source12=vreg_twl.c -Source13=adc.c -Source14=renge\renge.c -Source15=accero.c -Source16=self_flash.c -Source17=sw.c -Source18=task_debug.c -Source19=task_misc.c -Source20=task_sys.c -Source21=pedo_alg_thre_det2.c -Source22=ini_VECT.c -Source23=task_status.c -Source24=led_cam.c -Source25=led_pow.c -[IncFile] -Include1=incs_loader.h -Include2=jhl_defs.h -Include3=config.h -Include4=user_define.h -Include5=bsr_system.h -Include6=renge\renge.h -Include7=renge\renge_defs.h -Include8=renge\renge_task_immediate.h -Include9=vreg_ctr.h -Include10=vreg_twl.h -Include11=loader.h -Include12=i2c_mcu.h -Include13=WDT.h -Include14=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h -Include15=fsl_user.h -Include16=i2c_ctr.h -Include17=pm.h -Include18=rtc.h -Include19=reboot.h -Include20=magic.h -Include21=incs.h -Include22=i2c_twl.h -Include23=accero.h -Include24=pedometer.h -Include25=sw.h -Include26=adc.h -Include27=led.h -Include28=batt_params.h -Include29=pool.h -Include30=i2c_twl_defs.h -Include31=voltable.h -Include32=renge\renge_task_intval.h -Include33=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h -Include34=self_flash.h -Include35=pedo_lpf_coeff.h -[BuildBefore-AfterCmd] -Before1=c:\cygwin\bin\touch magic.c -After1=ruby nec_s_2_bsrbin2.rb bsr.hex -[Options.RA78K0R 0] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 1] -Version=100 -G=0 -GA=0 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 2] -Version=100 -O0= -O1=obj -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 3] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 4] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[Options.RA78K0R 5] -Version=100 -G=1 -GA=1 -E=0 -COMMON=0 -COMPATI=0 -P=1 -KA=1 -KS=0 -KX=0 -LF=0 -LW=132 -LL=0 -LT=8 -Z=0 -CommandFile=0 -RA_OPT= -[ToolSet] -ToolSetName=(ύX)78K0R Software Package V1.10 -Tool1=CC78K0R|W2.13 -Tool2=RA78K0R|W1.33 -Tool3=SK78K0R|V3.10 -Tool4=ID78K0R-QB|V3.61 -[Options.LK78K0R 0] -Version=100 -O0=bsr_k0r.lmf -O1=bsr.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=1 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 1] -Version=100 -O0=a.lmf -G=0 -E=0 -E0=a.elk -GO=0 -GOValue= -GOStart=FC00 -GOSizeValue=1024 -GI=0 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=1 -MemInfoCheck=0 -P=1 -P0=a.map -MI=0 -GB=0 -GBValue= -KM=1 -KD=1 -KP=0 -KL=0 -LF=0 -LL=0 -S=0 -W=1 -SELFCheck=0 -SELF=0 -ZB= -CommandFile=0 -[Options.LK78K0R 2] -Version=100 -O0=bsr.lmf -O1=bsr_k0r.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=0 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=1B339499E033F240BFAA -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=7EFBFF -KM=1 -KD=0 -KP=0 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib -B1=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -OFILE=C:\78k_data\yav-mcu-basara\trunk\bsr.lmf -[Options.LK78K0R 3] -Version=100 -O0=bsr_bsr.lmf -O1=bsr_k0r.lmf -O2=bsr.lmf -O3=flash.lmf -O4=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_bsr.map -P1=bsr_k0r.map -P2=bsr.map -P3=flash.map -P4=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=2 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 4] -Version=100 -O0=bsr_k0r.lmf -O1=bsr.lmf -O2=flash.lmf -O3=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_k0r.map -P1=bsr.map -P2=flash.map -P3=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=0 -SELFCheck=1 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LK78K0R 5] -Version=100 -O0=bsr_bsr.lmf -O1=bsr_k0r.lmf -O2=bsr.lmf -O3=flash.lmf -O4=a.lmf -G=1 -E=0 -E0=flash.elk -E1=a.elk -GO=1 -GOValue=85 -GOStart=FC00 -GOSizeValue=1024 -GI=1 -GIValue=FFFFFFFFFFFFFFFFFFFF -CCZA=0 -MemInfoCheck=1 -P=1 -P0=bsr_bsr.map -P1=bsr_k0r.map -P2=bsr.map -P3=flash.map -P4=a.map -MI=0 -GB=1 -GBValue=6EFBFF -KM=1 -KD=0 -KP=1 -KL=0 -LF=0 -LL=0 -B0=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -D0=bsr_mcu.dr -D1=user_area.dr -S=1 -W=2 -SELFCheck=0 -SELF=0 -ZB= -Etcetera0= -Etcetera1=boot.lmf -CommandFile=0 -[Options.LCNV78K0R 0] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 1] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 2] -Version=100 -LCNV_GO=0 -O0=inter_asm -E=0 -CommandFile=0 -[Options.LCNV78K0R 3] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 4] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.LCNV78K0R 5] -Version=100 -LCNV_GO=0 -E=0 -CommandFile=0 -[Options.78K0R] -BuildMode=2 -BuildMode2=K0R_dbg -BuildMode3=BSR_dbg -BuildMode4=BSR_rel -BuildMode5=BSR_WM0 -DefaultMode2=1 -DefaultMode3=1 -DefaultMode4=1 -DefaultMode5=1 diff --git a/trunk/yav_mcu_bsr.prk b/trunk/yav_mcu_bsr.prk index 4ef0391..7f8119d 100644 --- a/trunk/yav_mcu_bsr.prk +++ b/trunk/yav_mcu_bsr.prk @@ -1,22 +1,42 @@ [ProjectManager] FrameMax=0 -FrameX=89 -FrameY=169 -FrameCX=1550 -FrameCY=921 -OpenFile1=led.c,0,100,100,1295,581,2,168,45,0 -OpenFile2=ProjectWindow +FrameX=383 +FrameY=50 +FrameCX=1293 +FrameCY=1075 +OpenFile1=loader.c,0,248,38,1221,669,0,1,0,0 +OpenFile2=pm.c,0,373,197,1346,828,0,1,0,0 +OpenFile3=i2c_ctr.c,0,655,120,1628,751,0,1,0,0 +OpenFile4=main.c,0,250,250,1841,957,0,1,0,0 +OpenFile5=magic.c,0,300,300,1891,1007,0,1,0,0 +OpenFile6=WDT.c,0,275,275,1866,982,0,2,24,0 +OpenFile7=i2c_mcu.c,0,325,325,1916,1032,0,1,0,0 +OpenFile8=i2c_twl.c,0,364,126,1955,833,0,1,0,0 +OpenFile9=led.c,0,228,97,1819,804,0,1,0,0 +OpenFile10=rtc.c,0,364,142,1955,849,0,1,0,0 +OpenFile11=vreg_ctr.c,0,313,167,1904,874,0,1,0,0 +OpenFile12=vreg_twl.c,0,353,225,1944,932,0,1,0,0 +OpenFile13=adc.c,0,300,241,1891,948,0,1,0,0 +OpenFile14=renge\renge.c,0,342,270,1933,977,0,1,0,0 +OpenFile15=accero.c,0,355,308,1328,939,0,1,0,0 +OpenFile16=self_flash.c,0,346,268,1937,975,0,1,0,0 +OpenFile17=sw.c,0,358,322,1949,1029,0,1,0,0 +OpenFile18=task_debug.c,0,332,258,1923,965,0,1,0,0 +OpenFile19=task_misc.c,0,364,322,1955,1029,0,1,0,0 +OpenFile20=task_sys.c,0,351,450,1521,951,0,1,0,0 +OpenFile21=pedo_alg_thre_det2.c,0,414,74,1387,705,0,1,0,0 +OpenFile22=ini_VECT.c,0,275,275,1866,982,0,1,0,0 +OpenFile23=task_status.c,0,300,300,1891,1007,0,1,0,0 +OpenFile24=led_cam.c,0,325,325,1916,1032,0,1,0,0 +OpenFile25=led_pow.c,0,354,184,1945,891,0,1,0,0 +OpenFile26=hal.c,0,262,160,1853,867,0,1,0,0 +OpenFile27=batt_params.c,0,376,168,1967,875,0,1,0,0 +OpenFile28=voltable.c,0,300,300,1273,931,0,1,0,0 +OpenFile29=ProjectWindow PrjPos=0,0,706,0,291 -OpenFile3=led_cam.c,0,125,125,1320,606,0,24,0,0 -OpenFile4=led_pow.c,0,150,150,1345,631,0,205,0,0 -OpenFile5=config.h,0,442,428,1557,1029,29,23,29,0 -OpenFile6=i2c_mcu.c,0,175,175,1766,882,0,303,0,0 -OpenFile7=i2c_mcu.h,0,200,200,1791,907,46,23,48,0 -OpenFile8=self_flash.c,0,0,0,1195,481,21,290,12,0 -OpenFile9=batt_params.h,0,596,19,1842,741,0,31,0,0 -OpenFile10=pm.c,0,225,225,1278,761,33,54,32,0 -OpenFile11=OutputWindow -OutputPos=0,198,904,529,1655 +OpenFile30=pedo_lpf_coeff.c,0,478,297,1451,928,0,1,19,0 +OpenFile31=OutputWindow +OutputPos=0,349,1040,690,1928 ActivePRJ=yav_mcu_bsr.prj [ProjectWindow] ProjectWindowDispType=0 diff --git a/trunk/yav_mcu_bsr.sdb b/trunk/yav_mcu_bsr.sdb index d554cbd..5c855af 100644 --- a/trunk/yav_mcu_bsr.sdb +++ b/trunk/yav_mcu_bsr.sdb @@ -1,9 +1,9 @@ [SdbInfo] Ver=5 [loader.c] -T=4cc02a17 +T=4e4248ee 1=incs_loader.h -2=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +2=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h 3=fsl_user.h 4=i2c_ctr.h 5=i2c_mcu.h @@ -12,21 +12,21 @@ T=4cc02a17 8=reboot.h 9=magic.h [pm.c] -T=4ce758f6 +T=4e4111a9 1=incs.h 2=adc.h 3=led.h 4=pm.h 5=renge\renge.h 6=batt_params.h -7=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +7=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h 8=fsl_user.h [i2c_ctr.c] -T=4cc020c9 +T=4e409e63 1=config.h 2=incs.h [main.c] -T=4cd9f64d +T=4e40c90e 1=incs_loader.h 2=WDT.h 3=rtc.h @@ -36,31 +36,31 @@ T=4cd9f64d 7=adc.h 8=pool.h [magic.c] -T=4ce75924 +T=4e4248f2 1=config.h 2=magic.h [WDT.c] -T=4cc020c9 +T=4e424710 1=incs_loader.h [i2c_mcu.c] -T=4cd9f64c +T=4e4234b9 1=incs_loader.h 2=i2c_mcu.h [i2c_twl.c] -T=4cc020c9 +T=4e409e61 1=config.h 2=incs.h 3=i2c_twl_defs.h 4=i2c_twl.h [led.c] -T=4cd9fb99 +T=4e423830 1=incs.h 2=led.h [rtc.c] -T=4cd9f64c +T=4e423614 1=incs.h [vreg_ctr.c] -T=4cc020c9 +T=4e409e63 1=incs.h 2=vreg_ctr.h 3=rtc.h @@ -68,48 +68,48 @@ T=4cc020c9 5=accero.h 6=pm.h 7=pool.h -8=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +8=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h 9=fsl_user.h [vreg_twl.c] -T=4cc11aea +T=4d5e3e6f 1=incs.h 2=jhl_defs.h 3=led.h 4=vreg_twl.h 5=vreg_ctr.h [adc.c] -T=4cc14cca +T=4e42374e 1=incs.h 2=adc.h 3=pm.h 4=led.h 5=vreg_twl.h -6=voltable.h [renge\renge.c] -T=4cd9f64c +T=4e40d459 1=renge\renge.h 2=renge\renge_task_intval.h 3=renge\renge_task_immediate.h 4=WDT.h 5=config.h 6=user_define.h -7=bsr_system.h +7=sim\simOnWin.h +8=bsr_system.h [accero.c] -T=4cc020c9 +T=4e422e91 1=config.h 2=incs.h -3=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\inc78k0r\math.h +3=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h [self_flash.c] -T=4cd9f64c +T=4e409e18 1=incs_loader.h -2=C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h +2=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h 3=fsl_user.h 4=i2c_ctr.h 5=pool.h 6=magic.h 7=pm.h [sw.c] -T=4cc020c9 +T=4e4251bb 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -118,13 +118,13 @@ T=4cc020c9 6=rtc.h 7=sw.h [task_debug.c] -T=4cc020c9 +T=4e409e1c 1=incs_loader.h 2=renge\renge.h 3=pm.h 4=accero.h [task_misc.c] -T=4cd9f5ab +T=4e409e61 1=incs.h 2=renge\renge.h 3=pm.h @@ -134,7 +134,7 @@ T=4cd9f5ab 7=led.h 8=vreg_twl.h [task_sys.c] -T=4cd9f64c +T=4e4251f0 1=incs.h 2=i2c_twl.h 3=i2c_ctr.h @@ -146,126 +146,160 @@ T=4cd9f64c 9=adc.h 10=self_flash.h [pedo_alg_thre_det2.c] -T=4cc020c9 +T=4e423b4a 1=incs.h -2=..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\inc78k0r\math.h +2=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h 3=accero.h 4=pedometer.h -5=pedo_lpf_coeff.h -6=pool.h +5=pool.h [ini_VECT.c] -T=4cc020c9 +T=4e409e1a 1=config.h +2=sim\sim_interrupt_decrare.c [task_status.c] -T=4cc020c9 +T=4e409e1c 1=incs_loader.h 2=renge\renge.h -3=pm.h -4=accero.h -5=adc.h -6=i2c_mcu.h -[incs_loader.h] -T=4cc020c9 +3=hal.h +4=pm.h +5=accero.h +6=adc.h +7=i2c_mcu.h +8=led.h +[led_cam.c] +T=4e409e1d +1=incs.h +2=led.h +[led_pow.c] +T=4e423450 +1=incs.h +2=led.h +[hal.c] +T=4e40c910 +1=incs_loader.h +[batt_params.c] +T=4e409e1b 1=jhl_defs.h -2=user_define.h -3=bsr_system.h -4=renge\renge.h -5=vreg_ctr.h -6=vreg_twl.h -7=loader.h -8=i2c_mcu.h -9=WDT.h -[jhl_defs.h] -T=4cc020c9 +2=batt_params.h +[voltable.c] +T=4e422f23 +1=incs.h +[pedo_lpf_coeff.c] +T=4e422f1d +1=incs.h +[incs_loader.h] +T=4e409e1d +1=sim\simOnWin.h +2=jhl_defs.h +3=user_define.h +4=hal.h +5=bsr_system.h +6=renge\renge.h +7=vreg_ctr.h +8=vreg_twl.h +9=loader.h +10=i2c_mcu.h +11=WDT.h +[sim\simOnWin.h] +T=4e4243ba +1=sim\sfrAlias.h +[sim\sfrAlias.h] +T=4e409e19 1=config.h [config.h] -T=4ce75a11 +T=4e409e18 +[jhl_defs.h] +T=4df82cd1 +1=config.h [user_define.h] -T=4cc020c9 +T=4e409e1d +[hal.h] +T=4e40c8f0 [bsr_system.h] -T=4cc020c9 +T=4e409e1a [renge\renge.h] -T=4cc020c4 +T=4cbf8235 1=renge\renge_defs.h 2=renge\renge_task_immediate.h [renge\renge_defs.h] -T=4cc020c4 +T=4c073c5a [renge\renge_task_immediate.h] -T=4cc020c4 +T=4d37f8c8 1=renge\renge_defs.h [vreg_ctr.h] -T=4cc11aea +T=4e409e1c 1=config.h [vreg_twl.h] -T=4cc11aea +T=4d42202e [loader.h] -T=4cc020c9 +T=4c318e0f [i2c_mcu.h] -T=4cc020c9 +T=4dde0033 [WDT.h] -T=4cc020c9 -[C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\inc78k0r\fsl.h] +T=4c319dfc +[..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h] T=49a3bd4e [fsl_user.h] -T=4cc020c9 +T=4e409e62 [i2c_ctr.h] -T=4cc020c9 +T=4bf0d1e1 [pm.h] -T=4cd9f5ab +T=4e409e1c [rtc.h] -T=4cc020c9 +T=4e409e1c [reboot.h] -T=4cc020c9 +T=4bf0d1e1 [magic.h] -T=4cc020c9 +T=4caab849 [incs.h] -T=4cc020c9 -1=jhl_defs.h -2=user_define.h -3=bsr_system.h -4=renge\renge.h -5=loader.h -6=vreg_ctr.h -7=vreg_twl.h -8=i2c_mcu.h -9=i2c_twl.h -10=rtc.h -11=accero.h -12=pm.h -13=sw.h -14=adc.h -15=WDT.h +T=4e409e18 +1=sim\simOnWin.h +2=jhl_defs.h +3=user_define.h +4=hal.h +5=bsr_system.h +6=renge\renge.h +7=loader.h +8=vreg_ctr.h +9=vreg_twl.h +10=i2c_mcu.h +11=i2c_twl.h +12=rtc.h +13=accero.h +14=pm.h +15=sw.h +16=adc.h +17=WDT.h [i2c_twl.h] -T=4bf0fdc7 +T=4bf4e29e [accero.h] -T=4cc020c9 +T=4ca28964 1=jhl_defs.h 2=pedometer.h [pedometer.h] -T=4cc020c9 +T=4e409e19 [sw.h] -T=4cc020c9 +T=4df2001a 1=config.h [adc.h] -T=4cc020c9 +T=4dd5c8b2 1=jhl_defs.h [led.h] -T=4cc020c9 +T=4e409e1c [batt_params.h] -T=4cc020c9 +T=4e409e1c +1=jhl_defs.h [pool.h] -T=4cc020c9 +T=4c072cf1 1=pedometer.h [i2c_twl_defs.h] -T=4cc020c9 -[voltable.h] -T=4cc020c9 +T=4bf0d1e1 [renge\renge_task_intval.h] -T=4cc020c4 +T=4d5e55a1 1=renge\renge_defs.h -[..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.12\inc78k0r\math.h] +[..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h] T=45f12258 [self_flash.h] -T=4cc020c9 -[pedo_lpf_coeff.h] -T=4cc020c9 +T=4bf0d1e0 +[sim\sim_interrupt_decrare.c] +T=4e409e19 diff --git a/trunk/ベースからの変更.xls b/trunk/ベースからの変更.xls new file mode 100644 index 0000000000000000000000000000000000000000..5212dac6485080dca2bfd246e855585895ff82af GIT binary patch literal 26624 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 literal 0 HcmV?d00001