diff options
author | Nick Vaccaro <nvaccaro@google.com> | 2014-04-02 12:43:18 -0700 |
---|---|---|
committer | Nick Vaccaro <nvaccaro@google.com> | 2014-04-02 13:00:01 -0700 |
commit | 2eed2d4028b5706e977b016e49b010ee5595e48a (patch) | |
tree | 29ff9429011024aba1ce3a5cc954890036ba1e55 /6515/libsensors_iio | |
parent | 864e0965786d598cf6313da4b6ade65f95d4f50e (diff) | |
download | invensense-2eed2d4028b5706e977b016e49b010ee5595e48a.tar.gz |
Invensense: 6515: Update MPU libraries to RC20
Update the libmllite.so and libmplmpu.so binaries to RC20.
Update sources for libraries.
Remove obsolete MPLSensorSysAPi.cpp and MPLSensorSysApi.h.
Change-Id: Ida5c2cdb97fba37574926cf5731e45e731f9d852
Diffstat (limited to '6515/libsensors_iio')
18 files changed, 257 insertions, 423 deletions
diff --git a/6515/libsensors_iio/MPLSensorSysApi.cpp b/6515/libsensors_iio/MPLSensorSysApi.cpp deleted file mode 100644 index 92e8ea1..0000000 --- a/6515/libsensors_iio/MPLSensorSysApi.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/* -* Copyright (C) 2012 Invensense, Inc. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#undef NDEBUG -#define NDEBUG 0 - -#include <fcntl.h> -#include <errno.h> -#include <math.h> -#include <float.h> -#include <poll.h> -#include <unistd.h> -#include <dirent.h> -#include <stdlib.h> -#include <sys/select.h> -#include <dlfcn.h> -#include <pthread.h> - -#include <cutils/log.h> -#include <utils/KeyedVector.h> -#include <linux/input.h> - -#include "invensense.h" - -#include "MPLSensorSysApi.h" - -/*******************************************************************************/ -/* Gyro Driver Specific SYSFS Attribute */ -/*******************************************************************************/ -#define GYRO_SENSOR_SYSFS_PATH "/sys/class/input/input0/" -#define GYRO_SENSOR_SELFTEST "device/inv_gyro/self_test" - -MplSys_Interface* getSysInterfaceObject() -{ - MPLSensorSysApi* s = static_cast<MPLSensorSysApi*>(MPLSensor::gMPLSensor); - return static_cast<MplSys_Interface*>(s); -} - -MPLSensorSysApi::MPLSensorSysApi() : MPLSensor() -{ - -} - -MPLSensorSysApi::~MPLSensorSysApi() -{ - -} - -MPLSensorSysApi::MplSys_Interface::~MplSys_Interface() -{ - -} - -/* Should be getting from hardware self-test */ -int MPLSensorSysApi::getBiases(float *b) -{ - FUNC_LOG; - int rv = INV_SUCCESS; - long val[3]; - long temp; - LOGV("get biases\n"); - pthread_mutex_lock(&mMplMutex); - pthread_mutex_unlock(&mMplMutex); - return rv; -} - -int MPLSensorSysApi::setBiases(float *b) -{ - FUNC_LOG; - int rv = INV_SUCCESS; - pthread_mutex_lock(&mMplMutex); - pthread_mutex_unlock(&mMplMutex); - return rv; -} - -int MPLSensorSysApi::setBiasUpdateFunc(long f) -{ - FUNC_LOG; - LOGW("SysApi :: setBiasUpdateFunc is OBSOLETE and ineffective"); - return 0; -} - -int MPLSensorSysApi::setSensors(long s) -{ - FUNC_LOG; - int rv = INV_SUCCESS; - - pthread_mutex_lock(&mMplMutex); - mMasterSensorMask = s; - pthread_mutex_unlock(&mMplMutex); - return rv; -} - -int MPLSensorSysApi::getSensors(long* s) -{ - FUNC_LOG; - int rv = INV_SUCCESS; - pthread_mutex_lock(&mMplMutex); - pthread_mutex_unlock(&mMplMutex); - return rv; -} - -int MPLSensorSysApi::resetCal() -{ - FUNC_LOG; - int rv = INV_SUCCESS; - LOGI("SysApi :: resetCal is OBSOLETE"); - return rv; -} - -int MPLSensorSysApi::selfTest() -{ - FUNC_LOG; - int rv = INV_SUCCESS; - char buf[50]; - - LOGV_IF(EXTRA_VERBOSE, "gyro set delay path: %s", GYRO_SENSOR_SELF_TEST); - - int fd = open(mpu.self_test, O_RDONLY); - if( fd < 0 ) { - LOGE("Error opening gyro self-test"); - return INV_ERROR; - } - pthread_mutex_lock(&mMplMutex); - char x[15], y[15], z[15]; - char result[2]; - do { - memset(buf, 0, sizeof(buf)); - int count = read_attribute_sensor(fd, buf, sizeof(buf)); - if( count < 1 ) { - LOGE("Error reading gyro self-test"); - pthread_mutex_unlock(&mMplMutex); - return INV_ERROR; - } - sscanf(buf, "%[^','],%[^','],%[^','],%[^',']", x, y, z, result); - LOGI("Bias: X:Y:Z (%ld, %ld, %ld)", atol(x), atol(y), atol(z)); - if ( atoi(result) ) { - LOGE("self test passed"); - } - else { - LOGE("error self-test failed"); - break; - } - } while (0); - pthread_mutex_unlock(&mMplMutex); - return rv; -} - -int MPLSensorSysApi::setLocalMagField(float x, float y, float z) -{ - FUNC_LOG; - int rv = INV_SUCCESS; - LOGI("SysApi :: setLocalMagField is OBSOLETE"); - return rv; -} - diff --git a/6515/libsensors_iio/MPLSensorSysApi.h b/6515/libsensors_iio/MPLSensorSysApi.h deleted file mode 100644 index 3c1c53e..0000000 --- a/6515/libsensors_iio/MPLSensorSysApi.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -* Copyright (C) 2012 Invensense, Inc. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#ifndef INV_HAL_SYS_API_H -#define INV_HAL_SYS_API_H - -#include "sensors.h" -#include "MPLSensor.h" -#include <gui/MplInterfaces.h> - -class MPLSensorSysApi : public MPLSensor, public MplSys_Interface { - -public: - MPLSensorSysApi(); - virtual ~MPLSensorSysApi(); - - virtual int getBiases(float *b); - virtual int setBiases(float *b); - virtual int setBiasUpdateFunc(long f); - virtual int setSensors(long s); - virtual int getSensors(long* s); - virtual int resetCal(); - virtual int selfTest(); - virtual int setLocalMagField(float x, float y, float z); - -private: - int write_attribute_sensor(int fd, unsigned char* buf, size_t count); - -}; - -extern "C" { -MplSys_Interface* getSysInterfaceObject(); -} - -#endif - diff --git a/6515/libsensors_iio/libmllite.so b/6515/libsensors_iio/libmllite.so Binary files differindex 407d4f2..4a7e0b8 100644 --- a/6515/libsensors_iio/libmllite.so +++ b/6515/libsensors_iio/libmllite.so diff --git a/6515/libsensors_iio/libmplmpu.so b/6515/libsensors_iio/libmplmpu.so Binary files differindex 4e49996..cfd0958 100644 --- a/6515/libsensors_iio/libmplmpu.so +++ b/6515/libsensors_iio/libmplmpu.so diff --git a/6515/libsensors_iio/software/core/mllite/build/android/libmllite.so b/6515/libsensors_iio/software/core/mllite/build/android/libmllite.so Binary files differindex 407d4f2..4a7e0b8 100755 --- a/6515/libsensors_iio/software/core/mllite/build/android/libmllite.so +++ b/6515/libsensors_iio/software/core/mllite/build/android/libmllite.so diff --git a/6515/libsensors_iio/software/core/mllite/data_builder.c b/6515/libsensors_iio/software/core/mllite/data_builder.c index 0c842a1..bffc689 100644 --- a/6515/libsensors_iio/software/core/mllite/data_builder.c +++ b/6515/libsensors_iio/software/core/mllite/data_builder.c @@ -344,19 +344,19 @@ static int inv_raw_sensor_timestamp(int sensor_number, inv_time_t *ts) if (inv_data_builder.mode & INV_GYRO_NEW) if (sensors.gyro.timestamp_prev != sensors.gyro.timestamp) status = 1; + return status; + case 2: // Accel + *ts = sensors.accel.timestamp; + if (inv_data_builder.mode & INV_ACCEL_NEW) + if (sensors.accel.timestamp_prev != sensors.accel.timestamp) + status = 1; return status; - case 2: // Compass + case 3: // Compass *ts = sensors.compass.timestamp; if (inv_data_builder.mode & INV_MAG_NEW) if (sensors.compass.timestamp_prev != sensors.compass.timestamp) status = 1; return status; - case 3: // Accel - *ts = sensors.accel.timestamp; - if (inv_data_builder.mode & INV_ACCEL_NEW) - if (sensors.accel.timestamp_prev != sensors.accel.timestamp) - status = 1; - return status; default: *ts = 0; return 0; @@ -395,7 +395,7 @@ int inv_get_9_axis_timestamp(long sample_rate_us, inv_time_t *ts) if ((sensors.quat.status & (INV_QUAT_6AXIS | INV_SENSOR_ON)) == (INV_QUAT_6AXIS | INV_SENSOR_ON)) { // Sensor tied to compass or 6-axis idx = inv_pick_best_time_difference(td[0], td[1]); - idx *= 2; // Sensor number is 0 (Quat) or 2 (Compass) + idx *= 3; // Sensor number is 0 (Quat) or 3 (Compass) return inv_raw_sensor_timestamp(idx, ts); } else if ((sensors.accel.status & INV_SENSOR_ON) == 0) { return 0; // Accel must be on or 6-axis quat must be on @@ -448,8 +448,8 @@ int inv_get_6_axis_compass_accel_timestamp(long sample_rate_us, inv_time_t *ts) } // At this point, we know compass & accel are both on. - td[0] = sample_rate_us - sensors.compass.sample_rate_us; - td[1] = sample_rate_us - sensors.accel.sample_rate_us; + td[0] = sample_rate_us - sensors.accel.sample_rate_us; + td[1] = sample_rate_us - sensors.compass.sample_rate_us; idx = inv_pick_best_time_difference(td[0], td[1]); idx += 2; return inv_raw_sensor_timestamp(idx, ts); @@ -478,7 +478,7 @@ int inv_get_6_axis_gyro_accel_timestamp(long sample_rate_us, inv_time_t *ts) td[1] = sample_rate_us - sensors.accel.sample_rate_us; if ((sensors.quat.status & (INV_QUAT_3AXIS | INV_SENSOR_ON)) == (INV_QUAT_3AXIS | INV_SENSOR_ON)) { idx = inv_pick_best_time_difference(td[0], td[1]); - idx *= 3; + idx *= 2; // 0 = quat, 3=accel return inv_raw_sensor_timestamp(idx, ts); } diff --git a/6515/libsensors_iio/software/core/mllite/linux/inv_sysfs_utils.c b/6515/libsensors_iio/software/core/mllite/linux/inv_sysfs_utils.c index 649b917..e01c850 100644 --- a/6515/libsensors_iio/software/core/mllite/linux/inv_sysfs_utils.c +++ b/6515/libsensors_iio/software/core/mllite/linux/inv_sysfs_utils.c @@ -1,3 +1,9 @@ +/* + $License: + Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. + $ + */ + /** * @brief Provides helpful file IO wrappers for use with sysfs. * @details Based on Jonathan Cameron's @e iio_utils.h. diff --git a/6515/libsensors_iio/software/core/mllite/linux/inv_sysfs_utils.h b/6515/libsensors_iio/software/core/mllite/linux/inv_sysfs_utils.h index 45a35f9..4956f97 100644 --- a/6515/libsensors_iio/software/core/mllite/linux/inv_sysfs_utils.h +++ b/6515/libsensors_iio/software/core/mllite/linux/inv_sysfs_utils.h @@ -1,3 +1,9 @@ +/* + $License: + Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. + $ + */ + /** * @brief Provides helpful file IO wrappers for use with sysfs. * @details Based on Jonathan Cameron's @e iio_utils.h. diff --git a/6515/libsensors_iio/software/core/mllite/linux/ml_load_dmp.c b/6515/libsensors_iio/software/core/mllite/linux/ml_load_dmp.c index 14e0c9c..7715f47 100644 --- a/6515/libsensors_iio/software/core/mllite/linux/ml_load_dmp.c +++ b/6515/libsensors_iio/software/core/mllite/linux/ml_load_dmp.c @@ -1,6 +1,6 @@ /* $License: - Copyright (C) 2012 InvenSense Corporation, All Rights Reserved. + Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. $ */ @@ -30,174 +30,207 @@ #define LOADDMP_LOG MPL_LOGI #define NUM_LOCAL_KEYS (sizeof(dmpTConfig)/sizeof(dmpTConfig[0])) -#define DMP_CODE_SIZE 2463 +#define DMP_CODE_SIZE 2950 static const unsigned char dmpMemory[DMP_CODE_SIZE] = { /* bank # 0 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7d, 0x00, 0x01, - 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x83, 0x12, 0x6f, 0xff, 0xdf, 0x3b, 0x64, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3e, 0x03, 0x30, 0x40, 0x00, 0x00, 0x00, 0x02, 0xca, 0xe3, 0x09, 0x3e, 0x80, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x6e, 0x00, 0x00, 0x06, 0x92, 0x0a, 0x16, 0xc0, 0xdf, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x2b, 0x00, 0x00, 0x16, 0x57, 0x00, 0x00, 0x03, 0x59, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xfa, 0x00, 0x02, 0x6c, 0x1d, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x10, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x0a, + 0x06, 0xb8, 0x81, 0xa1, 0xe1, 0x89, 0xb2, 0x78, 0x37, 0xf8, 0x5a, 0x9c, 0xcf, 0xdd, 0x85, 0x3b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xf0, 0x19, 0x80, 0x40, 0x00, 0x00, 0x00, 0x02, 0xca, 0xe3, 0x09, 0x3e, 0x80, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x6e, 0x00, 0x00, 0x06, 0x92, 0x0a, 0x16, 0xc0, 0xdf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x2b, 0x00, 0x00, 0x16, 0x57, 0x00, 0x00, 0x03, 0x59, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xfa, 0x00, 0x02, 0x6c, 0x1d, 0x36, 0x66, 0x66, 0x66, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xdb, 0xe2, 0xb9, 0x3b, 0x7b, 0x11, 0x7b, 0x32, 0x57, 0x83, 0x7b, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* bank # 1 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x72, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x58, 0x05, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, - 0x08, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x80, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xeb, 0x85, 0x3f, 0xae, 0x14, 0x7b, + 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x72, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xff, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x58, 0x05, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, + 0x08, 0x00, 0x02, 0x00, 0x04, 0x00, 0x01, 0x00, 0x80, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x6a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* bank # 2 */ - 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0xeb, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x18, 0x85, 0x04, 0x06, 0x31, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, - 0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x47, 0xae, 0x14, 0x3e, 0xb8, 0x51, 0xec, 0x00, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x74, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x41, 0x28, 0x14, 0xc5, 0xaf, 0x3e, 0xf2, 0x59, 0xd9, 0x4a, 0x5f, 0xc2, 0x36, 0xd9, 0x51, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0xd9, 0xe8, 0x3e, 0x30, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, + 0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* bank # 3 */ - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x24, 0x26, 0xd3, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x10, 0x00, 0x96, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x0a, 0x4e, 0x68, 0xcd, 0xcf, 0x77, 0x09, 0x50, 0x16, 0x67, 0x59, 0xc6, 0x19, 0xce, 0x82, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x18, 0x85, 0x00, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x67, 0x7d, 0xdf, 0x7e, 0x72, 0x90, 0x2e, 0x55, 0x4c, 0xf6, 0xe6, 0x88, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x18, 0x74, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x10, 0x00, 0x96, 0x00, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0xb3, 0x12, 0xb4, 0xcc, 0x0f, 0x1e, 0x1b, 0x51, 0xa0, 0xa3, 0x45, 0xc5, 0xad, 0x1e, 0x16, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x18, 0x85, 0x00, 0x00, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x67, 0x7d, 0xdf, 0x7e, 0x72, 0x90, 0x2e, 0x55, 0x4c, 0xf6, 0xe6, 0x88, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* bank # 4 */ - 0xd8, 0xb0, 0xb5, 0xb9, 0xf3, 0xa6, 0xf8, 0xf9, 0xd1, 0xd9, 0x81, 0x96, 0xf8, 0xf7, 0x3e, 0xd8, - 0xf3, 0xb1, 0x86, 0x96, 0xa3, 0x31, 0xd1, 0xda, 0xf1, 0xff, 0xd8, 0xb3, 0xb7, 0xbb, 0x8e, 0x9e, - 0xae, 0xf1, 0x32, 0xf5, 0x1b, 0xf1, 0xb4, 0xb8, 0xb0, 0x80, 0x97, 0xf1, 0xa9, 0xdf, 0xdf, 0xdf, - 0xaa, 0xdf, 0xdf, 0xdf, 0xf2, 0xaa, 0xc5, 0xcd, 0xc7, 0xa9, 0x0c, 0xc9, 0x2c, 0x97, 0xf1, 0xa9, - 0x89, 0x26, 0x46, 0x66, 0xb2, 0x89, 0x99, 0xa9, 0x2d, 0x55, 0x7d, 0xb0, 0x8a, 0xa8, 0x96, 0x36, - 0x56, 0x76, 0xd8, 0xf1, 0xb0, 0x89, 0xb9, 0xa3, 0xc3, 0xc5, 0xc7, 0xb1, 0x81, 0xb4, 0x97, 0xa3, - 0x11, 0xb5, 0x93, 0xa1, 0xf0, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xf1, 0x93, 0x81, 0xa3, 0x2d, - 0x55, 0x3d, 0xf2, 0xa6, 0xfa, 0xf9, 0xd1, 0xd9, 0xf8, 0xf1, 0x83, 0xa2, 0xc3, 0xc5, 0xc7, 0xd8, - 0xf3, 0xa2, 0xde, 0xf1, 0x82, 0x93, 0xa3, 0x2d, 0x55, 0x7d, 0x83, 0x95, 0xf5, 0xa3, 0x30, 0xd9, - 0xf3, 0xa2, 0xf8, 0xd8, 0xf5, 0xa3, 0x50, 0xd9, 0xf3, 0xa2, 0xf8, 0xd8, 0xf5, 0xa3, 0x70, 0xd9, - 0xf3, 0xa2, 0xf8, 0xd8, 0xf2, 0xb9, 0xa2, 0xf8, 0xf9, 0xd1, 0xd9, 0xa6, 0xde, 0xdf, 0xf4, 0x1c, - 0xd8, 0xf2, 0xa6, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4, 0x14, 0xd8, 0xf2, 0xf9, 0xd1, 0xd9, 0xf8, 0xf4, - 0x1e, 0xd8, 0xf2, 0xf9, 0xd1, 0xd9, 0xf8, 0xf8, 0xf4, 0x14, 0xd8, 0xf4, 0x10, 0xd8, 0xf3, 0xa2, - 0xf8, 0xf9, 0xd1, 0xda, 0xf2, 0xa6, 0xf8, 0xf1, 0xa5, 0xde, 0xd8, 0xf4, 0xa3, 0x14, 0x14, 0xd8, - 0xf1, 0xa5, 0xf8, 0xa3, 0x85, 0x95, 0x09, 0xd9, 0xf1, 0xa5, 0xde, 0xf2, 0xa6, 0xf8, 0xdf, 0xd8, - 0xf4, 0xa3, 0x09, 0xd8, 0xf3, 0xa2, 0xf8, 0xf9, 0xd1, 0xf4, 0xd9, 0x08, 0x17, 0xda, 0x42, 0xf2, + 0xd8, 0xb0, 0xb5, 0xb9, 0xf3, 0xa6, 0xf8, 0xf9, 0xd1, 0xd9, 0x81, 0x96, 0xf8, 0xf7, 0x3e, 0xd8, + 0xf3, 0xb1, 0x86, 0x96, 0xa3, 0x31, 0xd1, 0xda, 0xf1, 0xff, 0xd8, 0xb9, 0xb1, 0xb4, 0xa7, 0x87, + 0x9d, 0xd0, 0xf7, 0x4a, 0xf3, 0x40, 0xb8, 0xb0, 0xf7, 0xa8, 0x8d, 0x91, 0x6a, 0x8d, 0x90, 0x5f, + 0x98, 0x4a, 0xb9, 0xf2, 0xa6, 0xd0, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4, 0x07, 0xd8, 0xf3, 0xb8, 0xa8, + 0xf9, 0xdb, 0xfb, 0xf7, 0xb9, 0xb1, 0xa7, 0x87, 0x9d, 0xd0, 0x4a, 0xd8, 0xb3, 0xb7, 0xbb, 0x8e, + 0x9e, 0xae, 0xf1, 0x32, 0xf5, 0x1b, 0xf1, 0xb4, 0xb8, 0xb0, 0x80, 0x97, 0xf1, 0xa9, 0xdf, 0xdf, + 0xdf, 0xaa, 0xdf, 0xdf, 0xdf, 0xf2, 0xaa, 0xc5, 0xcd, 0xc7, 0xa9, 0x0c, 0xc9, 0x2c, 0x97, 0xf1, + 0xa9, 0x89, 0x26, 0x46, 0x66, 0xb2, 0x89, 0x99, 0xa9, 0x2d, 0x55, 0x7d, 0xb0, 0x8a, 0xa8, 0x96, + 0x36, 0x56, 0x76, 0xd8, 0xf1, 0xb0, 0x89, 0xb9, 0xa3, 0xc3, 0xc5, 0xc7, 0xb1, 0x81, 0xb4, 0x97, + 0xa3, 0x11, 0xb5, 0x93, 0xa1, 0xf0, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xf1, 0x93, 0x81, 0xa3, + 0x2d, 0x55, 0x3d, 0xf2, 0xa6, 0xfa, 0xf9, 0xd1, 0xd9, 0xf8, 0xf1, 0x83, 0xa2, 0xc3, 0xc5, 0xc7, + 0xd8, 0xf3, 0xa2, 0xde, 0xf1, 0x82, 0x93, 0xa3, 0x2d, 0x55, 0x7d, 0x83, 0x95, 0xf5, 0xa3, 0x30, + 0xd9, 0xf3, 0xa2, 0xf8, 0xd8, 0xf5, 0xa3, 0x50, 0xd9, 0xf3, 0xa2, 0xf8, 0xd8, 0xf5, 0xa3, 0x70, + 0xd9, 0xf3, 0xa2, 0xf8, 0xd8, 0xf2, 0xb9, 0xa2, 0xf8, 0xf9, 0xd1, 0xd9, 0xa6, 0xde, 0xdf, 0xf4, + 0x1c, 0xd8, 0xf2, 0xa6, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4, 0x14, 0xd8, 0xf2, 0xf9, 0xd1, 0xd9, 0xf8, + 0xf4, 0x1e, 0xd8, 0xf2, 0xf9, 0xd1, 0xd9, 0xf8, 0xf8, 0xf4, 0x14, 0xd8, 0xf4, 0x10, 0xd8, 0xf3, /* bank # 5 */ - 0xa2, 0xde, 0xf4, 0x0b, 0xd8, 0xf1, 0xa5, 0xf8, 0xa3, 0x85, 0x95, 0x19, 0xda, 0xf4, 0x05, 0xd8, - 0xf2, 0xa6, 0xde, 0xdf, 0xd8, 0xf1, 0xb8, 0xaa, 0xb3, 0x8d, 0xb4, 0x98, 0x0d, 0x35, 0x5d, 0xb2, - 0xb6, 0xba, 0xaf, 0x8c, 0x96, 0x19, 0x8f, 0x9f, 0xb8, 0xa8, 0x0e, 0x16, 0x1e, 0xb4, 0x9a, 0xaa, - 0x88, 0x2c, 0x54, 0x7c, 0xd8, 0xf1, 0xb8, 0xb4, 0xb0, 0x97, 0x86, 0xa8, 0x31, 0x9b, 0x06, 0x99, - 0x07, 0xab, 0x97, 0x28, 0x88, 0x9b, 0xf0, 0x0c, 0x20, 0x14, 0x40, 0xb0, 0xb4, 0xb8, 0xf0, 0xa8, - 0x8a, 0x9a, 0x28, 0x50, 0x78, 0xb7, 0x9b, 0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, - 0x38, 0x64, 0x48, 0x31, 0xf1, 0xbb, 0xab, 0x88, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 0xb3, 0x8b, 0xb8, - 0xa8, 0x04, 0x28, 0x50, 0x78, 0xf1, 0xb0, 0x88, 0xb4, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xbb, 0xab, - 0xb3, 0x8b, 0x02, 0x26, 0x46, 0x66, 0xb0, 0xb8, 0xf0, 0x8a, 0x9c, 0xa8, 0x29, 0x51, 0x79, 0x8b, - 0x29, 0x51, 0x8a, 0x24, 0x70, 0x59, 0x8b, 0x20, 0x58, 0x8a, 0x44, 0x69, 0x38, 0x8b, 0x39, 0x40, - 0x8a, 0x64, 0x48, 0x31, 0x8b, 0x30, 0x49, 0x88, 0xf1, 0xac, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 0x8c, - 0xa8, 0x04, 0x28, 0x50, 0x78, 0xf1, 0x88, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xac, 0x8c, 0x02, 0x26, - 0x46, 0x66, 0xf0, 0x89, 0x9c, 0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 0x64, - 0x48, 0x31, 0xa9, 0x88, 0x09, 0x20, 0x59, 0x70, 0xab, 0x11, 0x38, 0x40, 0x69, 0xa8, 0x19, 0x31, - 0x48, 0x60, 0x8c, 0xa8, 0x3c, 0x41, 0x5c, 0x20, 0x7c, 0x00, 0xf1, 0x87, 0x98, 0x19, 0x86, 0xa8, - 0x6e, 0x76, 0x7e, 0xa9, 0x99, 0x88, 0x2d, 0x55, 0x7d, 0xd8, 0xf1, 0xb3, 0x8b, 0xb4, 0x97, 0xbb, + 0xa2, 0xf8, 0xf9, 0xd1, 0xda, 0xf2, 0xa6, 0xf8, 0xf1, 0xa5, 0xde, 0xd8, 0xf4, 0xa3, 0x14, 0x14, + 0xd8, 0xf1, 0xa5, 0xf8, 0xa3, 0x85, 0x95, 0x09, 0xd9, 0xf1, 0xa5, 0xde, 0xf2, 0xa6, 0xf8, 0xdf, + 0xd8, 0xf4, 0xa3, 0x09, 0xd8, 0xf3, 0xa2, 0xf8, 0xf9, 0xd1, 0xf4, 0xd9, 0x08, 0x17, 0xda, 0x42, + 0xf2, 0xa2, 0xde, 0xf4, 0x0b, 0xd8, 0xf1, 0xa5, 0xf8, 0xa3, 0x85, 0x95, 0x19, 0xda, 0xf4, 0x05, + 0xd8, 0xf2, 0xa6, 0xde, 0xdf, 0xd8, 0xf1, 0xb8, 0xaa, 0xb3, 0x8d, 0xb4, 0x98, 0x0d, 0x35, 0x5d, + 0xb2, 0xb6, 0xba, 0xaf, 0x8c, 0x96, 0x19, 0x8f, 0x9f, 0xb8, 0xa8, 0x0e, 0x16, 0x1e, 0xb4, 0x9a, + 0xaa, 0x88, 0x2c, 0x54, 0x7c, 0xd8, 0xf1, 0xb8, 0xb4, 0xb0, 0x97, 0x86, 0xa8, 0x31, 0x9b, 0x06, + 0x99, 0x07, 0xab, 0x97, 0x28, 0x88, 0x9b, 0xf0, 0x0c, 0x20, 0x14, 0x40, 0xb0, 0xb4, 0xb8, 0xf0, + 0xa8, 0x8a, 0x9a, 0x28, 0x50, 0x78, 0xb7, 0x9b, 0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, + 0x69, 0x38, 0x64, 0x48, 0x31, 0xf1, 0xbb, 0xab, 0x88, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 0xb3, 0x8b, + 0xb8, 0xa8, 0x04, 0x28, 0x50, 0x78, 0xf1, 0xb0, 0x88, 0xb4, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xbb, + 0xab, 0xb3, 0x8b, 0x02, 0x26, 0x46, 0x66, 0xb0, 0xb8, 0xf0, 0x8a, 0x9c, 0xa8, 0x29, 0x51, 0x79, + 0x8b, 0x29, 0x51, 0x8a, 0x24, 0x70, 0x59, 0x8b, 0x20, 0x58, 0x8a, 0x44, 0x69, 0x38, 0x8b, 0x39, + 0x40, 0x8a, 0x64, 0x48, 0x31, 0x8b, 0x30, 0x49, 0x88, 0xf1, 0xac, 0x00, 0x2c, 0x54, 0x7c, 0xf0, + 0x8c, 0xa8, 0x04, 0x28, 0x50, 0x78, 0xf1, 0x88, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xac, 0x8c, 0x02, + 0x26, 0x46, 0x66, 0xf0, 0x89, 0x9c, 0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, /* bank # 6 */ - 0xab, 0xf8, 0xf9, 0xb9, 0xa3, 0xda, 0xc3, 0xc5, 0xc7, 0xd9, 0x2d, 0x4d, 0x6d, 0xd8, 0xb0, 0x8c, - 0xb8, 0xac, 0xf8, 0xf9, 0xa8, 0xda, 0xc3, 0xc5, 0xc7, 0xd9, 0x2d, 0x4d, 0x6d, 0xd8, 0xf3, 0xb9, - 0xac, 0xde, 0xd8, 0xb1, 0xb6, 0xb9, 0xf1, 0xa8, 0xf8, 0xf3, 0xb9, 0xaa, 0xfa, 0xf9, 0xd1, 0xda, - 0xf2, 0x8a, 0xca, 0xf4, 0x0e, 0xf3, 0xb1, 0x87, 0xdd, 0xc2, 0xc2, 0xf1, 0x8c, 0xc4, 0xdc, 0xf3, - 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, 0xb6, 0xba, 0xad, 0xfa, 0x8d, 0x9d, 0xab, 0x39, 0xd9, 0xad, - 0xdf, 0xf4, 0x13, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x08, 0x08, 0xf1, 0xb1, 0x83, 0xc2, 0xc4, - 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xad, 0xf8, 0x8d, 0x9d, 0xab, - 0x11, 0xd9, 0xad, 0xde, 0xf4, 0x13, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x28, 0x28, 0xf1, 0xb0, - 0x88, 0xc2, 0xc4, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xad, 0xfa, - 0x8d, 0x9d, 0xab, 0x39, 0xd9, 0xad, 0xdf, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 0xb5, 0x9a, 0x08, - 0xf2, 0xf2, 0x88, 0xc2, 0xc4, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, 0xb6, 0xba, - 0xae, 0xf8, 0x8e, 0x9e, 0xab, 0x11, 0xd9, 0xae, 0xde, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 0xb5, - 0x9a, 0x68, 0xf2, 0xb0, 0x80, 0xc0, 0xc8, 0xc2, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, - 0xb6, 0xba, 0xae, 0xfa, 0x8e, 0x9e, 0xab, 0x39, 0xd9, 0xae, 0xdf, 0xf4, 0x12, 0xdd, 0xf2, 0xb1, - 0x87, 0xb5, 0x9a, 0x68, 0xf2, 0xb0, 0x80, 0xc4, 0xcc, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, - 0xf3, 0xb2, 0xb6, 0xba, 0xae, 0xf8, 0x8e, 0x9e, 0xab, 0x11, 0xd9, 0xae, 0xde, 0xf4, 0x12, 0xdd, + 0x64, 0x48, 0x31, 0xa9, 0x88, 0x09, 0x20, 0x59, 0x70, 0xab, 0x11, 0x38, 0x40, 0x69, 0xa8, 0x19, + 0x31, 0x48, 0x60, 0x8c, 0xa8, 0x3c, 0x41, 0x5c, 0x20, 0x7c, 0x00, 0xf1, 0x87, 0x98, 0x19, 0x86, + 0xa8, 0x6e, 0x76, 0x7e, 0xa9, 0x99, 0x88, 0x2d, 0x55, 0x7d, 0xd8, 0xf1, 0xb3, 0x8b, 0xb4, 0x97, + 0xbb, 0xab, 0xf8, 0xf9, 0xb9, 0xa3, 0xda, 0xc3, 0xc5, 0xc7, 0xd9, 0x2d, 0x4d, 0x6d, 0xd8, 0xb0, + 0x8c, 0xb8, 0xac, 0xf8, 0xf9, 0xa8, 0xda, 0xc3, 0xc5, 0xc7, 0xd9, 0x2d, 0x4d, 0x6d, 0xd8, 0xf3, + 0xb9, 0xac, 0xde, 0xd8, 0xb1, 0xb6, 0xb9, 0xf1, 0xa8, 0xf8, 0xf3, 0xb9, 0xaa, 0xfa, 0xf9, 0xd1, + 0xda, 0xf2, 0x8a, 0xca, 0xf4, 0x0e, 0xf3, 0xb1, 0x87, 0xdd, 0xc2, 0xc2, 0xf1, 0x8c, 0xc4, 0xdc, + 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, 0xb6, 0xba, 0xad, 0xfa, 0x8d, 0x9d, 0xab, 0x39, 0xd9, + 0xad, 0xdf, 0xf4, 0x13, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x08, 0x08, 0xf1, 0xb1, 0x83, 0xc2, + 0xc4, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xad, 0xf8, 0x8d, 0x9d, + 0xab, 0x11, 0xd9, 0xad, 0xde, 0xf4, 0x13, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x28, 0x28, 0xf1, + 0xb0, 0x88, 0xc2, 0xc4, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xad, + 0xfa, 0x8d, 0x9d, 0xab, 0x39, 0xd9, 0xad, 0xdf, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, 0xb5, 0x9a, + 0x08, 0xf2, 0xf2, 0x88, 0xc2, 0xc4, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb2, 0xb6, + 0xba, 0xae, 0xf8, 0x8e, 0x9e, 0xab, 0x11, 0xd9, 0xae, 0xde, 0xf4, 0x12, 0xdd, 0xf3, 0xb1, 0x87, + 0xb5, 0x9a, 0x68, 0xf2, 0xb0, 0x80, 0xc0, 0xc8, 0xc2, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, /* bank # 7 */ - 0xf3, 0xb1, 0x87, 0xb5, 0x9a, 0x48, 0xf2, 0xb0, 0x81, 0xc0, 0xc8, 0xc2, 0xdc, 0xf3, 0xb9, 0xac, - 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xae, 0xfa, 0x8e, 0x9e, 0xab, 0x39, 0xd9, 0xae, 0xdf, 0xf4, - 0x12, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x48, 0xf2, 0xb0, 0x81, 0xc4, 0xcc, 0xc6, 0xdc, 0xf3, - 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb0, 0x88, 0xb9, 0xa8, 0xc3, 0xc5, 0xc7, 0xb1, 0xb5, 0xb9, 0xf3, - 0xac, 0xfa, 0xf9, 0xd1, 0xda, 0xf4, 0x10, 0xd8, 0xf3, 0xac, 0xf8, 0xf9, 0xd1, 0xda, 0xf1, 0xb9, - 0xaa, 0xdf, 0xf4, 0x1c, 0xd9, 0xf4, 0x1a, 0xd8, 0xf3, 0xac, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4, 0x1d, - 0xd8, 0xf2, 0x8c, 0xac, 0xf8, 0xf9, 0xd1, 0xd9, 0xc2, 0xd8, 0xf2, 0xf9, 0xd9, 0xde, 0xf4, 0x09, - 0x1d, 0x16, 0xda, 0xf2, 0xdd, 0xc6, 0xdc, 0xf4, 0x30, 0xf1, 0xb9, 0xaa, 0xdf, 0xd8, 0xf1, 0xab, - 0xfa, 0x8b, 0x9b, 0xa3, 0x69, 0xd9, 0xf4, 0x07, 0x06, 0xda, 0xf1, 0xb9, 0xab, 0xdf, 0xfe, 0xd8, - 0xf1, 0xbb, 0xb3, 0xb7, 0xaa, 0xf9, 0xda, 0xff, 0xd9, 0x80, 0x9a, 0xaa, 0x28, 0xb4, 0x80, 0x98, - 0xa7, 0x20, 0xd8, 0xf1, 0xb3, 0xb7, 0xbb, 0x87, 0xaa, 0xd0, 0xc1, 0xa7, 0x81, 0x97, 0x62, 0x93, - 0xf0, 0x71, 0x71, 0x60, 0x85, 0x94, 0x01, 0x29, 0x51, 0x79, 0x90, 0xa5, 0xf1, 0x28, 0x4c, 0x6c, - 0x87, 0x0c, 0x95, 0x18, 0x85, 0x78, 0xa3, 0x83, 0x90, 0x28, 0x4c, 0x6c, 0x8a, 0x6c, 0xf2, 0xb0, - 0xb4, 0xb8, 0x83, 0x93, 0xa5, 0x71, 0xdb, 0xf1, 0x8c, 0x01, 0xa3, 0xc0, 0xd8, 0xf2, 0x83, 0xa5, - 0x71, 0xd9, 0xa3, 0xd0, 0xf8, 0xf1, 0x9c, 0xa5, 0xdb, 0x21, 0x8c, 0xa3, 0xc1, 0xd8, 0xf2, 0x83, - 0xa5, 0xc7, 0xf9, 0xf1, 0x93, 0x25, 0xf2, 0xa5, 0x95, 0x49, 0xd9, 0xf3, 0xa3, 0xd0, 0xde, 0xf8, + 0xb2, 0xb6, 0xba, 0xae, 0xfa, 0x8e, 0x9e, 0xab, 0x39, 0xd9, 0xae, 0xdf, 0xf4, 0x12, 0xdd, 0xf2, + 0xb1, 0x87, 0xb5, 0x9a, 0x68, 0xf2, 0xb0, 0x80, 0xc4, 0xcc, 0xc6, 0xdc, 0xf3, 0xb9, 0xac, 0xf8, + 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xae, 0xf8, 0x8e, 0x9e, 0xab, 0x11, 0xd9, 0xae, 0xde, 0xf4, 0x12, + 0xdd, 0xf3, 0xb1, 0x87, 0xb5, 0x9a, 0x48, 0xf2, 0xb0, 0x81, 0xc0, 0xc8, 0xc2, 0xdc, 0xf3, 0xb9, + 0xac, 0xf8, 0xd8, 0xf3, 0xb2, 0xb6, 0xba, 0xae, 0xfa, 0x8e, 0x9e, 0xab, 0x39, 0xd9, 0xae, 0xdf, + 0xf4, 0x12, 0xdd, 0xf2, 0xb1, 0x87, 0xb5, 0x9a, 0x48, 0xf2, 0xb0, 0x81, 0xc4, 0xcc, 0xc6, 0xdc, + 0xf3, 0xb9, 0xac, 0xf8, 0xd8, 0xf2, 0xb0, 0x88, 0xb9, 0xa8, 0xc3, 0xc5, 0xc7, 0xb1, 0xb5, 0xb9, + 0xf3, 0xac, 0xfa, 0xf9, 0xd1, 0xda, 0xf4, 0x10, 0xd8, 0xf3, 0xac, 0xf8, 0xf9, 0xd1, 0xda, 0xf1, + 0xb9, 0xaa, 0xdf, 0xf4, 0x1c, 0xd9, 0xf4, 0x1a, 0xd8, 0xf3, 0xac, 0xf8, 0xf9, 0xd1, 0xd9, 0xf4, + 0x1d, 0xd8, 0xf2, 0x8c, 0xac, 0xf8, 0xf9, 0xd1, 0xd9, 0xc2, 0xd8, 0xf2, 0xf9, 0xd9, 0xde, 0xf4, + 0x09, 0x1d, 0x16, 0xda, 0xf2, 0xdd, 0xc6, 0xdc, 0xf4, 0x30, 0xf1, 0xb9, 0xaa, 0xdf, 0xd8, 0xf1, + 0xab, 0xfa, 0x8b, 0x9b, 0xa3, 0x69, 0xd9, 0xf4, 0x07, 0x06, 0xda, 0xf1, 0xb9, 0xab, 0xdf, 0xfe, + 0xd8, 0xf1, 0xbb, 0xb3, 0xb7, 0xaa, 0xf9, 0xda, 0xff, 0xd9, 0x80, 0x9a, 0xaa, 0x28, 0xb4, 0x80, + 0x98, 0xa7, 0x20, 0xd8, 0xf1, 0xb3, 0xb7, 0xbb, 0x87, 0xaa, 0xd0, 0xc1, 0xa7, 0x81, 0x97, 0x62, + 0x93, 0xf0, 0x71, 0x71, 0x60, 0x85, 0x94, 0x01, 0x29, 0x51, 0x79, 0x90, 0xa5, 0xf1, 0x28, 0x4c, + 0x6c, 0x87, 0x0c, 0x95, 0x18, 0x85, 0x78, 0xf1, 0xb0, 0xb4, 0xb8, 0x87, 0x98, 0xad, 0x20, 0xad, /* bank # 8 */ - 0xf1, 0x84, 0xa5, 0xd0, 0xdb, 0x55, 0xf3, 0xa3, 0xd0, 0xde, 0xd8, 0xf2, 0xa5, 0x83, 0x95, 0x49, - 0xdb, 0xf3, 0x8e, 0x93, 0x11, 0xf1, 0x85, 0x94, 0xa5, 0x79, 0x9e, 0x83, 0xf3, 0x69, 0xa3, 0xd0, - 0xf8, 0xd8, 0xf2, 0xa5, 0x83, 0x95, 0x49, 0xd9, 0xf3, 0xa3, 0xd0, 0xc5, 0xf2, 0xa3, 0xd0, 0xde, - 0xf1, 0xa3, 0xde, 0x87, 0xc5, 0xd8, 0xf3, 0x8e, 0x93, 0xa5, 0x11, 0xdb, 0xf2, 0x8d, 0xb7, 0x92, - 0x31, 0xbb, 0xa2, 0xd0, 0xc2, 0xa8, 0xb3, 0x82, 0xb4, 0x9d, 0x21, 0xb0, 0x8d, 0xb7, 0x92, 0x49, - 0xa2, 0xdf, 0xd8, 0xf3, 0xb4, 0x9e, 0xb0, 0x83, 0xb8, 0xa5, 0x49, 0xdb, 0xf2, 0xb3, 0x82, 0x9d, - 0x41, 0x21, 0xb0, 0x84, 0xb7, 0x92, 0x09, 0xd9, 0xb3, 0x82, 0xbb, 0xa8, 0xf1, 0xca, 0x96, 0x88, - 0xa6, 0x00, 0xd8, 0xf3, 0xb7, 0x90, 0xb0, 0x83, 0xb8, 0xa5, 0x49, 0xdb, 0xf2, 0xb3, 0x82, 0xb4, - 0x9d, 0x41, 0xb0, 0x8d, 0xbb, 0xa2, 0xd0, 0xc0, 0xb3, 0x82, 0xb4, 0x9d, 0xa8, 0x21, 0xa2, 0xdf, - 0xd8, 0xf3, 0xbb, 0xb3, 0xb7, 0x90, 0xa2, 0x82, 0x00, 0xf2, 0x10, 0xa8, 0x92, 0x19, 0x80, 0xa2, - 0xf2, 0xd9, 0x26, 0xf3, 0xa7, 0xd0, 0xdf, 0xd8, 0xf1, 0xa8, 0x89, 0x95, 0x19, 0xa9, 0x80, 0xd9, - 0x38, 0xd8, 0xa8, 0x89, 0x39, 0xa9, 0x80, 0xda, 0x3c, 0xd8, 0xa8, 0x2e, 0x85, 0xf5, 0x75, 0xda, - 0xff, 0xd8, 0x71, 0x80, 0xa9, 0xda, 0xf1, 0xff, 0xd8, 0xd8, 0xf1, 0xb2, 0xb7, 0xba, 0x83, 0x99, - 0xa4, 0x09, 0xda, 0xa3, 0xdf, 0xf9, 0xc7, 0xf4, 0x0b, 0xd8, 0xf1, 0xa3, 0xfb, 0xf8, 0xdb, 0xfb, - 0xd9, 0xde, 0xa3, 0xdf, 0xd8, 0xf1, 0xa3, 0xfa, 0xf9, 0xbb, 0xa9, 0xd0, 0x84, 0xda, 0xc2, 0xd9, - 0xc4, 0xd8, 0xb3, 0x82, 0xa7, 0xf3, 0xc1, 0xf2, 0x80, 0xc2, 0xf1, 0x97, 0x86, 0x49, 0x2e, 0xa6, + 0x83, 0x9d, 0x22, 0xb7, 0x93, 0xf0, 0x31, 0x31, 0x20, 0x8e, 0xb4, 0x94, 0x01, 0x29, 0x51, 0x79, + 0x97, 0xae, 0xf1, 0x28, 0x4c, 0x6c, 0x8d, 0x0c, 0x9e, 0x18, 0x8e, 0x78, 0x87, 0x98, 0xad, 0x20, + 0xad, 0x83, 0x9d, 0x22, 0xb7, 0x93, 0xf0, 0x31, 0x31, 0x20, 0xb2, 0x81, 0xb4, 0x94, 0x01, 0x9d, + 0x29, 0x51, 0x79, 0x97, 0xba, 0xa1, 0xf1, 0x28, 0x4c, 0x6c, 0xb0, 0x8d, 0x0c, 0xb6, 0x91, 0x18, + 0xb2, 0x81, 0x78, 0xf1, 0xb0, 0x87, 0xb4, 0x98, 0xba, 0xab, 0x20, 0xab, 0xb2, 0x86, 0xb6, 0x9b, + 0x02, 0xb7, 0x93, 0xf0, 0x11, 0x11, 0x00, 0x84, 0xb6, 0x97, 0x01, 0x29, 0x51, 0x79, 0xb4, 0x97, + 0xa4, 0xf1, 0x28, 0x4c, 0x6c, 0x8b, 0x0c, 0xb6, 0x94, 0x18, 0xb2, 0x84, 0x78, 0xbb, 0xa3, 0xb3, + 0x83, 0xb7, 0x90, 0x28, 0x4c, 0x6c, 0x8a, 0x6c, 0xf2, 0xb0, 0x83, 0xb4, 0x93, 0xb8, 0xa3, 0x71, + 0xd9, 0xa3, 0xd0, 0xf8, 0xf5, 0x8e, 0x9e, 0xb9, 0xa3, 0x78, 0xf1, 0xb1, 0x8a, 0xb5, 0x93, 0x45, + 0xb2, 0x8c, 0x2e, 0xb1, 0x8a, 0x54, 0x83, 0xaa, 0xd0, 0xc6, 0xf5, 0xb2, 0x81, 0xb6, 0x91, 0xa3, + 0x78, 0xf1, 0xb1, 0x8a, 0xb5, 0x93, 0x65, 0xb2, 0x8c, 0x2e, 0xb1, 0x8a, 0x74, 0x83, 0xaa, 0xd0, + 0xc7, 0xd8, 0xf2, 0xb0, 0x83, 0xb8, 0xad, 0xc6, 0xf9, 0xa3, 0xb4, 0x9d, 0x41, 0xd9, 0xf1, 0xb1, + 0x8a, 0xba, 0xa6, 0xc5, 0xc7, 0xf1, 0xb2, 0xb6, 0xb9, 0x86, 0x96, 0xa3, 0x50, 0xb1, 0x83, 0xb5, + 0x93, 0x04, 0x2c, 0xf3, 0xb8, 0xa3, 0xd0, 0xf8, 0xf9, 0xd1, 0xdb, 0xf1, 0xb6, 0x9c, 0xb9, 0xa3, + 0xd0, 0x56, 0xd8, 0xf2, 0xb0, 0x83, 0xb4, 0x9d, 0xb8, 0xa3, 0x41, 0xdb, 0xf3, 0x97, 0x49, 0xf1, + 0xb1, 0x83, 0xb6, 0x9c, 0xb9, 0xa3, 0xd0, 0x5e, 0xd8, 0xf2, 0xb0, 0x83, 0xb8, 0xa3, 0xb4, 0x9d, /* bank # 9 */ - 0xd0, 0x50, 0x96, 0x86, 0xa8, 0x75, 0xd9, 0x88, 0xa2, 0xd0, 0xf3, 0xc4, 0xc7, 0xf1, 0xda, 0x88, - 0x96, 0xa2, 0xd0, 0xf3, 0xc2, 0xc3, 0x82, 0xb4, 0x94, 0x68, 0x68, 0xf1, 0xd8, 0x80, 0xb7, 0x90, - 0xa8, 0x0d, 0x89, 0x99, 0xa8, 0x10, 0x80, 0x98, 0x21, 0xda, 0x2e, 0xd8, 0x89, 0x99, 0xa8, 0x31, - 0x80, 0xda, 0x2e, 0xd8, 0xa8, 0x82, 0x92, 0xf3, 0x41, 0x80, 0xf1, 0xd9, 0x2e, 0xd8, 0xa8, 0x82, - 0xf3, 0x19, 0x80, 0xf1, 0xd9, 0x2e, 0xd8, 0x82, 0xac, 0xf3, 0xc0, 0xa2, 0x80, 0x22, 0xf1, 0xa9, - 0x22, 0x26, 0x98, 0xa8, 0x29, 0xda, 0xac, 0xde, 0xff, 0xd8, 0xa2, 0xf2, 0xde, 0xf1, 0xa9, 0xdf, - 0x97, 0x8c, 0xa8, 0xf3, 0x79, 0xda, 0xf1, 0xf1, 0xf1, 0xf1, 0xb1, 0x88, 0xb9, 0xac, 0xd0, 0xc0, - 0xb3, 0xf3, 0xf3, 0xb9, 0xaa, 0xfa, 0xf1, 0xbb, 0xaa, 0xd0, 0xf8, 0xf4, 0x10, 0xd8, 0xf3, 0xa7, - 0xd0, 0xfa, 0x97, 0x8c, 0xa8, 0x79, 0xda, 0xf1, 0x87, 0x9a, 0xaa, 0xd0, 0x70, 0xd8, 0xf2, 0x82, - 0x92, 0xa8, 0x31, 0x80, 0xa6, 0x96, 0xf1, 0xd9, 0x00, 0xac, 0x8c, 0x9c, 0x0c, 0x30, 0xac, 0xde, - 0xd0, 0xde, 0xf1, 0xff, 0xd8, 0x8c, 0x9c, 0xac, 0xd0, 0x10, 0xac, 0xde, 0x80, 0x92, 0xa2, 0xf2, - 0x4c, 0x82, 0xa8, 0xf1, 0xca, 0xf2, 0x35, 0xf1, 0x96, 0x88, 0xa6, 0xd9, 0x00, 0xd8, 0xff + 0x41, 0xd9, 0xf3, 0xa3, 0xd0, 0xde, 0xf8, 0xf1, 0xb1, 0x83, 0xb6, 0x96, 0xb9, 0xa3, 0xdb, 0x69, + 0xf3, 0xb8, 0xa3, 0xd0, 0xde, 0xf1, 0xb3, 0x86, 0xba, 0xa0, 0xc0, 0xd8, 0xf2, 0xb0, 0x83, 0xb8, + 0xa3, 0xb4, 0x9d, 0x41, 0xd9, 0xd0, 0xde, 0xd8, 0xf3, 0xbb, 0xb3, 0xb7, 0x90, 0xa2, 0x82, 0x00, + 0xf2, 0x10, 0xf1, 0xba, 0xa2, 0xd0, 0xfa, 0xf2, 0xab, 0xc2, 0xf8, 0xf9, 0xd1, 0xf1, 0xb9, 0xa4, + 0xd9, 0xde, 0xda, 0xf8, 0xd8, 0xf2, 0xbb, 0xaf, 0x80, 0x92, 0x50, 0x8f, 0x0d, 0xdb, 0xf1, 0xb1, + 0x84, 0xb5, 0x94, 0x21, 0xd9, 0xf5, 0xb3, 0x85, 0xb7, 0x95, 0xb9, 0xa3, 0x78, 0xf1, 0xb1, 0x80, + 0xb5, 0x90, 0xa0, 0x1a, 0xf0, 0x93, 0x40, 0xf5, 0xb2, 0x84, 0xb6, 0x94, 0xa3, 0x78, 0xf1, 0xb1, + 0x80, 0xb5, 0x90, 0xa0, 0x3e, 0xf0, 0x93, 0x40, 0xd8, 0xf1, 0xb9, 0xa3, 0xd0, 0xdf, 0xb0, 0x8b, + 0xb5, 0x90, 0xb9, 0xa3, 0x6a, 0xb1, 0x80, 0x93, 0x05, 0xd9, 0xd0, 0xf8, 0xd8, 0xf2, 0xb3, 0x80, + 0xb7, 0x92, 0xbb, 0xaf, 0x50, 0xf8, 0x8f, 0x0d, 0xdb, 0xf1, 0xb1, 0x84, 0xb5, 0x94, 0xb9, 0xa3, + 0x21, 0xd0, 0xfa, 0xd8, 0xf1, 0xb9, 0xa3, 0xd0, 0xfa, 0xf9, 0xd1, 0xd9, 0xf1, 0xb2, 0x84, 0xbb, + 0xa8, 0xd0, 0xc4, 0xc7, 0xf3, 0xb9, 0xa4, 0xd0, 0xde, 0xda, 0xf1, 0xb3, 0x85, 0xbb, 0xa8, 0xd0, + 0xc4, 0xc7, 0xf3, 0xb9, 0xa4, 0xd0, 0xde, 0xf8, 0xdf, 0xf8, 0xd8, 0xf3, 0xb1, 0x84, 0xb7, 0x90, + 0xb9, 0xa3, 0x69, 0xdb, 0xb3, 0x80, 0xb5, 0x94, 0x11, 0xd9, 0xf2, 0xa4, 0xd0, 0xde, 0xd8, 0xf2, + 0xbb, 0xaf, 0xb7, 0x92, 0xb3, 0x82, 0x19, 0xb3, 0x80, 0xa2, 0xf2, 0xd9, 0x26, 0xf3, 0xa7, 0xd0, + 0xdf, 0xd8, 0xf1, 0xaf, 0x89, 0x98, 0x19, 0xa9, 0x80, 0xd9, 0x38, 0xd8, 0xaf, 0x89, 0x39, 0xa9, + /* bank # 10 */ + 0x80, 0xda, 0x3c, 0xd8, 0xaf, 0x2e, 0x88, 0xf5, 0x75, 0xda, 0xff, 0xd8, 0x71, 0x80, 0xa9, 0xda, + 0xf1, 0xff, 0xd8, 0xb3, 0xb7, 0xbb, 0x82, 0xa7, 0xf3, 0xc1, 0xf2, 0x80, 0xc2, 0xf1, 0x97, 0x86, + 0x49, 0x2e, 0xa6, 0xd0, 0x50, 0x96, 0x86, 0xaf, 0x75, 0xd9, 0xa2, 0xd0, 0xf3, 0xc0, 0xc3, 0xf1, + 0xda, 0x8f, 0x96, 0xa2, 0xd0, 0xf3, 0xc2, 0xc3, 0x82, 0xb4, 0x93, 0x78, 0x78, 0xf1, 0xd8, 0x80, + 0xb7, 0x90, 0xaf, 0x0d, 0x89, 0x99, 0xaf, 0x10, 0x80, 0x9f, 0x21, 0xda, 0x2e, 0xd8, 0x89, 0x99, + 0xaf, 0x31, 0x80, 0xda, 0x2e, 0xd8, 0xaf, 0x82, 0x92, 0xf3, 0x41, 0x80, 0xf1, 0xd9, 0x2e, 0xd8, + 0xaf, 0x82, 0xf3, 0x19, 0x80, 0xf1, 0xd9, 0x2e, 0xd8, 0xf1, 0x89, 0x90, 0xaf, 0xd0, 0x09, 0x8f, + 0x99, 0xaf, 0x51, 0xdb, 0x89, 0x31, 0xf3, 0x82, 0x92, 0x19, 0xf2, 0xb1, 0x84, 0xb5, 0x94, 0x71, + 0xd9, 0xf1, 0xdf, 0xf9, 0xf2, 0xb9, 0xa4, 0xd0, 0xf8, 0xf8, 0xf3, 0xdf, 0xd8, 0xb3, 0xb7, 0xbb, + 0x82, 0xac, 0xf3, 0xc0, 0xa2, 0x80, 0x22, 0xf1, 0xa9, 0x22, 0x26, 0x9f, 0xaf, 0x29, 0xda, 0xac, + 0xde, 0xff, 0xd8, 0xa2, 0xf2, 0xde, 0xf1, 0xa9, 0xdf, 0xf3, 0xb8, 0xa3, 0xd0, 0xf8, 0xf9, 0xd1, + 0xd9, 0xff, 0xd8, 0xf2, 0xb2, 0xb6, 0xba, 0xa2, 0xd0, 0xde, 0xf8, 0xf1, 0xb0, 0x87, 0x90, 0xab, + 0xd0, 0x7e, 0xb2, 0x80, 0xb7, 0x96, 0xab, 0x01, 0x8b, 0xb6, 0x92, 0xab, 0x05, 0xdb, 0x82, 0x9b, + 0x79, 0xf3, 0xb1, 0x84, 0xb4, 0x97, 0x49, 0xf2, 0xa2, 0xd0, 0xf8, 0xd8, 0xf3, 0xb9, 0xa4, 0xd0, + 0xf8, 0xf9, 0xd1, 0xd9, 0xf2, 0xba, 0xa2, 0xd0, 0xf8, 0xd8, 0xb3, 0xb7, 0xbb, 0x97, 0x8c, 0xaf, + 0xf3, 0x79, 0xda, 0xf1, 0xf1, 0xf1, 0xf1, 0xb1, 0x88, 0xb9, 0xac, 0xd0, 0xc0, 0xb3, 0xf3, 0xf3, + /* bank # 11 */ + 0xb9, 0xaa, 0xfa, 0xf1, 0xbb, 0xaa, 0xd0, 0xf8, 0xf4, 0x10, 0xd8, 0xf3, 0xa7, 0xd0, 0xfa, 0x97, + 0x8c, 0xaf, 0x79, 0xda, 0xf1, 0x87, 0x9a, 0xaa, 0xd0, 0x70, 0xd8, 0xf2, 0x82, 0x92, 0xaf, 0x31, + 0xd9, 0xf1, 0xde, 0xb2, 0x82, 0xb6, 0x92, 0xcc, 0xb3, 0x8f, 0xb7, 0x96, 0xa6, 0x00, 0xac, 0x8c, + 0x9c, 0x0c, 0x30, 0xdb, 0xb2, 0xb6, 0xba, 0x82, 0x92, 0xab, 0x39, 0xf3, 0xb1, 0x84, 0xb4, 0x97, + 0x49, 0xd9, 0xf1, 0xb2, 0xb6, 0x80, 0x90, 0xa0, 0xd0, 0x5e, 0xf0, 0x92, 0x38, 0xd8, 0xf2, 0xb3, + 0x82, 0xb7, 0x92, 0xbb, 0xaf, 0x31, 0xd9, 0xf1, 0xbb, 0xac, 0xde, 0xd0, 0xde, 0xba, 0xa2, 0xd0, + 0xdf, 0xf1, 0xff, 0xd8, 0xf3, 0xb9, 0xa4, 0xd0, 0xf8, 0xf9, 0xd1, 0xd9, 0xf2, 0xbb, 0xa2, 0xfa, + 0xf8, 0xda, 0xf2, 0xbb, 0xa2, 0xfa, 0xd8, 0xf2, 0xb3, 0xb7, 0xbb, 0x80, 0x92, 0xaf, 0x49, 0xd1, + 0xd9, 0xf1, 0xb9, 0xa4, 0xde, 0xa0, 0xde, 0xdf, 0xd8, 0xf1, 0x8c, 0x9c, 0xbb, 0xac, 0xd0, 0x10, + 0xac, 0xde, 0xba, 0xa2, 0xd0, 0xdf, 0xbb, 0x92, 0x82, 0xaf, 0xf1, 0xca, 0xf2, 0x35, 0xf1, 0x96, + 0x8f, 0xa6, 0xd9, 0x00, 0xd8, 0xff }; #define DMP_VERSION (dmpMemory) @@ -206,7 +239,7 @@ inv_error_t inv_write_dmp_data(FILE *fd, const unsigned char *dmp, size_t len) { inv_error_t result = INV_SUCCESS; int bytesWritten = 0; - + if (len <= 0) { MPL_LOGE("Nothing to write"); return INV_ERROR_FILE_WRITE; @@ -238,7 +271,7 @@ inv_error_t inv_load_dmp(FILE *fd) void read_dmp_img(char *dmp_path, char* out_file) { - MPL_LOGI("read_dmp_img"); + MPL_LOGI("read_dmp_img"); FILE *fp; int i; int dmpSize = DMP_CODE_SIZE; diff --git a/6515/libsensors_iio/software/core/mllite/linux/ml_load_dmp.h b/6515/libsensors_iio/software/core/mllite/linux/ml_load_dmp.h index 3369f37..01d806b 100644 --- a/6515/libsensors_iio/software/core/mllite/linux/ml_load_dmp.h +++ b/6515/libsensors_iio/software/core/mllite/linux/ml_load_dmp.h @@ -1,6 +1,6 @@ /* $License: - Copyright (C) 2012 InvenSense Corporation, All Rights Reserved. + Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. $ */ diff --git a/6515/libsensors_iio/software/core/mllite/linux/ml_stored_data.c b/6515/libsensors_iio/software/core/mllite/linux/ml_stored_data.c index bf4520d..a5b30a5 100644 --- a/6515/libsensors_iio/software/core/mllite/linux/ml_stored_data.c +++ b/6515/libsensors_iio/software/core/mllite/linux/ml_stored_data.c @@ -1,6 +1,6 @@ /* $License: - Copyright (C) 2011 InvenSense Corporation, All Rights Reserved. + Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. $ */ diff --git a/6515/libsensors_iio/software/core/mllite/linux/ml_stored_data.h b/6515/libsensors_iio/software/core/mllite/linux/ml_stored_data.h index 115b34c..8b6d5fc 100644 --- a/6515/libsensors_iio/software/core/mllite/linux/ml_stored_data.h +++ b/6515/libsensors_iio/software/core/mllite/linux/ml_stored_data.h @@ -1,6 +1,6 @@ /* $License: - Copyright (C) 2011 InvenSense Corporation, All Rights Reserved. + Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. $ */ diff --git a/6515/libsensors_iio/software/core/mllite/linux/ml_sysfs_helper.c b/6515/libsensors_iio/software/core/mllite/linux/ml_sysfs_helper.c index cbf69f8..d2b9543 100644 --- a/6515/libsensors_iio/software/core/mllite/linux/ml_sysfs_helper.c +++ b/6515/libsensors_iio/software/core/mllite/linux/ml_sysfs_helper.c @@ -1,3 +1,9 @@ +/* + $License: + Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. + $ + */ + #undef MPL_LOG_NDEBUG #define MPL_LOG_NDEBUG 0 /* Use 0 to turn on MPL_LOGV output */ #undef MPL_LOG_TAG @@ -22,15 +28,16 @@ enum PROC_SYSFS_CMD { }; static char sysfs_path[100]; static char *chip_name[] = { - "ITG3500", - "MPU6050", - "MPU9150", - "MPU3050", + "ITG3500", + "MPU6050", + "MPU9150", + "MPU3050", "MPU6500", "MPU9250", "MPU6XXX", "MPU9350", "MPU6515", + "MPU6880", }; static int chip_ind; static int initialized =0; @@ -127,13 +134,13 @@ static int parsing_proc_input(int mode, char *name){ i = 0; d = 0; memset(line, 0, 100); - while(d != '\n'){ + while(d != '\n'){ result = fread(&d, 1, 1, fp); if(result == 0){ line[0] = 0; break; } - sprintf(&line[i], "%c", d); + sprintf(&line[i], "%c", d); i ++; } if(line[0] == 'N'){ @@ -157,7 +164,7 @@ static int parsing_proc_input(int mode, char *name){ find_flag = 1; } } - } + } if(find_flag){ if(mode == 0){ if(line[0] == 'S'){ @@ -169,7 +176,7 @@ static int parsing_proc_input(int mode, char *name){ while(line[i] != '\n'){ tmp[j] = line[i]; i ++; j++; - } + } sprintf(sysfs_path, "%s%s", "/sys", tmp); find_flag++; } @@ -177,7 +184,7 @@ static int parsing_proc_input(int mode, char *name){ if(line[0] == 'H') { i = 2; while(line[i] != '=') i++; - while(line[i] != 't') i++; + while(line[i] != 't') i++; i++; event_number = 0; while(line[i] != '\n'){ @@ -199,9 +206,9 @@ static int parsing_proc_input(int mode, char *name){ i ++; j++; } input_number = 0; - if(tmp[j-2] >= '0' && tmp[j-2] <= '9') + if(tmp[j-2] >= '0' && tmp[j-2] <= '9') input_number += (tmp[j-2]-0x30)*10; - if(tmp[j-1] >= '0' && tmp[j-1] <= '9') + if(tmp[j-1] >= '0' && tmp[j-1] <= '9') input_number += (tmp[j-1]-0x30); find_flag++; } @@ -281,7 +288,7 @@ static int process_sysfs_request(enum PROC_SYSFS_CMD cmd, char *data) memset(key_path, 0, 100); if (iio_initialized == 1) sprintf(key_path, "/sys/bus/iio/devices/iio:device%d/key", iio_dev_num); - else + else sprintf(key_path, "%s%s", sysfs_path, "/device/invensense/mpu/key"); if((fp = fopen(key_path, "rt")) == NULL) @@ -290,7 +297,7 @@ static int process_sysfs_request(enum PROC_SYSFS_CMD cmd, char *data) fscanf(fp, "%02x", &result); data[i] = (char)result; } - + fclose(fp); break; default: @@ -364,14 +371,14 @@ int find_name_by_sensor_type(const char *sensor_type, const char *type, char *se continue; fscanf(nameFile, "%s", sensor_name); MPL_LOGI("name found: %s now test for mpuxxxx", sensor_name); - if( !strncmp("mpu",sensor_name, 3) ) { - char secondaryFileName[200]; + if( !strncmp("mpu",sensor_name, 3) ) { + char secondaryFileName[200]; sprintf(secondaryFileName, "%s%s%d/secondary_name", iio_dir, type, number); nameFile = fopen(secondaryFileName, "r"); - MPL_LOGI("name path: %s\n", secondaryFileName); + MPL_LOGI("name path: %s\n", secondaryFileName); if(!nameFile) continue; fscanf(nameFile, "%s", sensor_name); @@ -390,7 +397,7 @@ int find_name_by_sensor_type(const char *sensor_type, const char *type, char *se return -ENODEV; } -/** +/** * @brief return sysfs key. if the key is not available * return false. So the return value must be checked * to make sure the path is valid. @@ -406,8 +413,8 @@ inv_error_t inv_get_sysfs_key(unsigned char *key) return INV_SUCCESS; } -/** - * @brief return the sysfs path. If the path is not +/** + * @brief return the sysfs path. If the path is not * found yet. return false. So the return value must be checked * to make sure the path is valid. * @unsigned char *name: This should be array big enough to hold the sysfs @@ -428,8 +435,8 @@ inv_error_t inv_get_sysfs_abs_path(char *name) return INV_SUCCESS; } -/** - * @brief return the dmp file path. If the path is not +/** + * @brief return the dmp file path. If the path is not * found yet. return false. So the return value must be checked * to make sure the path is valid. * @unsigned char *name: This should be array big enough to hold the dmp file @@ -443,8 +450,8 @@ inv_error_t inv_get_dmpfile(char *name) else return INV_SUCCESS; } -/** - * @brief return the chip name. If the chip is not +/** + * @brief return the chip name. If the chip is not * found yet. return false. So the return value must be checked * to make sure the path is valid. * @unsigned char *name: This should be array big enough to hold the chip name @@ -458,7 +465,7 @@ inv_error_t inv_get_chip_name(char *name) else return INV_SUCCESS; } -/** +/** * @brief return event handler number. If the handler number is not found * return false. the return value must be checked * to make sure the path is valid. @@ -473,10 +480,10 @@ inv_error_t inv_get_handler_number(const char *name, int *num) if ((*num = parsing_proc_input(1, (char *)name)) < 0) return INV_ERROR_NOT_OPENED; else - return INV_SUCCESS; + return INV_SUCCESS; } -/** +/** * @brief return input number. If the handler number is not found * return false. the return value must be checked * to make sure the path is valid. @@ -492,10 +499,10 @@ inv_error_t inv_get_input_number(const char *name, int *num) return INV_ERROR_NOT_OPENED; else { return INV_SUCCESS; - } + } } -/** +/** * @brief return iio trigger name. If iio is not initialized, return false. * So the return must be checked to make sure the numeber is valid. * @unsigned char *name: This should be array big enough to hold the trigger @@ -510,7 +517,7 @@ inv_error_t inv_get_iio_trigger_path(const char *name) return INV_SUCCESS; } -/** +/** * @brief return iio device node. If iio is not initialized, return false. * So the return must be checked to make sure the numeber is valid. * @unsigned char *name: This should be array big enough to hold the device diff --git a/6515/libsensors_iio/software/core/mllite/linux/ml_sysfs_helper.h b/6515/libsensors_iio/software/core/mllite/linux/ml_sysfs_helper.h index 184d3b2..7ab6499 100644 --- a/6515/libsensors_iio/software/core/mllite/linux/ml_sysfs_helper.h +++ b/6515/libsensors_iio/software/core/mllite/linux/ml_sysfs_helper.h @@ -1,6 +1,6 @@ /* $License: - Copyright (C) 2011 InvenSense Corporation, All Rights Reserved. + Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. $ */ diff --git a/6515/libsensors_iio/software/core/mllite/linux/mlos.h b/6515/libsensors_iio/software/core/mllite/linux/mlos.h index d4f8912..3e3f55e 100644 --- a/6515/libsensors_iio/software/core/mllite/linux/mlos.h +++ b/6515/libsensors_iio/software/core/mllite/linux/mlos.h @@ -1,6 +1,6 @@ /* $License: - Copyright (C) 2011 InvenSense Corporation, All Rights Reserved. + Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. $ */ diff --git a/6515/libsensors_iio/software/core/mllite/linux/mlos_linux.c b/6515/libsensors_iio/software/core/mllite/linux/mlos_linux.c index 5424508..d787ce1 100644 --- a/6515/libsensors_iio/software/core/mllite/linux/mlos_linux.c +++ b/6515/libsensors_iio/software/core/mllite/linux/mlos_linux.c @@ -1,6 +1,6 @@ /* $License: - Copyright (C) 2012 InvenSense Corporation, All Rights Reserved. + Copyright (C) 2014 InvenSense Corporation, All Rights Reserved. $ */ diff --git a/6515/libsensors_iio/software/core/mllite/mpl.c b/6515/libsensors_iio/software/core/mllite/mpl.c index 0aa2242..085e717 100644 --- a/6515/libsensors_iio/software/core/mllite/mpl.c +++ b/6515/libsensors_iio/software/core/mllite/mpl.c @@ -46,7 +46,7 @@ inv_error_t inv_init_mpl(void) return INV_SUCCESS; } -const char ml_ver[] = "InvenSense MA 5.2.0 K"; +const char ml_ver[] = "InvenSense MA 5.2.0 K RC20"; /** * @brief used to get the MPL version. diff --git a/6515/libsensors_iio/software/core/mpl/build/android/libmplmpu.so b/6515/libsensors_iio/software/core/mpl/build/android/libmplmpu.so Binary files differindex e1b0276..cfd0958 100755 --- a/6515/libsensors_iio/software/core/mpl/build/android/libmplmpu.so +++ b/6515/libsensors_iio/software/core/mpl/build/android/libmplmpu.so |