Program Listing for File MPU6050_regs.hpp

Return to documentation for file (include/library/MPU6050_regs.hpp)

#pragma once

#include "library/BlackBox_BigEndian.hpp"
#include <array>
#include <cstdint>

namespace MPU6050Regs {

enum registerAddresses {
    GyroscopeXOffsetTC = 0x00,
    GyroscopeYOffsetTC,
    GyroscopeZOffsetTC,
    FineGainX,
    FineGainY,
    FineGainZ,
    AccelerometerXOffsetH,
    AccelerometerXOffsetL,
    AccelerometerYOffsetH,
    AccelerometerYOffsetL,
    AccelerometerZOffsetH,
    AccelerometerZOffsetL,
    ProductID,
    SelfTestX,
    SelfTestY,
    SelfTestZ,
    SelfTestA,
    Unknown0,
    Unknown1,
    GyroscopeXOffsetH,
    GyroscopeXOffsetL,
    GyroscopeYOffsetH,
    GyroscopeYOffsetL,
    GyroscopeZOffsetH,
    GyroscopeZOffsetL,
    SampleRateDivider,
    Config,
    GyroscopeConfig,
    AccelerometerConfig,
    FreeFallThreshold,
    FreeFallDuration,
    MotionThreshold,
    MotionDuration,
    ZeroMotionThreshold,
    ZeroMotionDuration,
    FIFOEnable,
    I2CMasterControl,
    I2CSlave0Address,
    I2CSlave0Register,
    I2CSlave0Control,
    I2CSlave1Address,
    I2CSlave1Register,
    I2CSlave1Control,
    I2CSlave2Address,
    I2CSlave2Register,
    I2CSlave2Control,
    I2CSlave3Address,
    I2CSlave3Register,
    I2CSlave3Control,
    I2CSlave4Address,
    I2CSlave4Register,
    I2CSlave4DataOut,
    I2CSlave4Control,
    I2CSlave4DataIn,
    I2CMasterStatus,
    InterruptPinConfig,
    InterruptEnable,
    InterruptStatusDMP,
    InterruptStatus,
    AccelerometerXOutH,
    AccelerometerXOutL,
    AccelerometerYOutH,
    AccelerometerYOutL,
    AccelerometerZOutH,
    AccelerometerZOutL,
    TemperatureOutH,
    TemperatureOutL,
    GyroscopeXOutH,
    GyroscopeXOutL,
    GyroscopeYOutH,
    GyroscopeYOutL,
    GyroscopeZOutH,
    GyroscopeZOutL,
    ExternalSensorData0,
    ExternalSensorData1,
    ExternalSensorData2,
    ExternalSensorData3,
    ExternalSensorData4,
    ExternalSensorData5,
    ExternalSensorData6,
    ExternalSensorData7,
    ExternalSensorData8,
    ExternalSensorData9,
    ExternalSensorData10,
    ExternalSensorData11,
    ExternalSensorData12,
    ExternalSensorData13,
    ExternalSensorData14,
    ExternalSensorData15,
    ExternalSensorData16,
    ExternalSensorData17,
    ExternalSensorData18,
    ExternalSensorData19,
    ExternalSensorData20,
    ExternalSensorData21,
    ExternalSensorData22,
    ExternalSensorData23,
    MotionDetectionStatus,
    Unknown2,
    I2CSlave0DataOut,
    I2CSlave1DataOut,
    I2CSlave2DataOut,
    I2CSlave3DataOut,
    I2CMasterDelayControl,
    SignalPathReset,
    MotionDetectionControl,
    UserControl,
    PowerManagement1,
    PowerManagement2,
    BankSelection,
    MemoryStartAddress,
    MemoryReadWrite,
    ProgramStartAddressH,
    ProgramStartAddressL,
    FIFOCountH,
    FIFOCountL,
    FIFOReadWrite,
    WhoAmI,
    MaxAddress,
};

/*
This is here mainly as a backup if we ever need to get rid of UnknownX
static constexpr std::array<std::uint8_t, MaxAddress> hwRegisterAddresses = { {
    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,
    0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61,
    0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75
    } };
*/

static constexpr std::array<registerAddresses, 69> writableRegisters = { {
    GyroscopeXOffsetTC,
    GyroscopeYOffsetTC,
    GyroscopeZOffsetTC,
    FineGainX,
    FineGainY,
    FineGainZ,
    AccelerometerXOffsetH,
    AccelerometerXOffsetL,
    AccelerometerYOffsetH,
    AccelerometerYOffsetL,
    AccelerometerZOffsetH,
    AccelerometerZOffsetL,
    SelfTestX,
    SelfTestY,
    SelfTestZ,
    SelfTestA,
    GyroscopeXOffsetH,
    GyroscopeXOffsetL,
    GyroscopeYOffsetH,
    GyroscopeYOffsetL,
    GyroscopeZOffsetH,
    GyroscopeZOffsetL,
    SampleRateDivider,
    Config,
    GyroscopeConfig,
    AccelerometerConfig,
    FreeFallThreshold,
    FreeFallDuration,
    MotionThreshold,
    MotionDuration,
    ZeroMotionThreshold,
    ZeroMotionDuration,
    FIFOEnable,
    I2CMasterControl,
    I2CSlave0Address,
    I2CSlave0Register,
    I2CSlave0Control,
    I2CSlave1Address,
    I2CSlave1Register,
    I2CSlave1Control,
    I2CSlave2Address,
    I2CSlave2Register,
    I2CSlave2Control,
    I2CSlave3Address,
    I2CSlave3Register,
    I2CSlave3Control,
    I2CSlave4Address,
    I2CSlave4Register,
    I2CSlave4DataOut,
    I2CSlave4Control,
    I2CSlave4DataIn,
    I2CSlave0DataOut,
    I2CSlave1DataOut,
    I2CSlave2DataOut,
    I2CSlave3DataOut,
    I2CMasterDelayControl,
    SignalPathReset,
    MotionDetectionControl,
    UserControl,
    PowerManagement1,
    PowerManagement2,
    BankSelection,
    MemoryStartAddress,
    MemoryReadWrite,
    ProgramStartAddressH,
    ProgramStartAddressL,
    FIFOCountH,
    FIFOCountL,
    FIFOReadWrite,
} };

enum ExternalSyncSettings : std::uint8_t {
    InputDisabled = 0,
    TemperatureOutL0,
    GyroscopeXOutL0,
    GyroscopeYOutL0,
    GyroscopeZOutL0,
    AccelerometerXOutL0,
    AccelerometerYOutL0,
    AccelerometerZOutL0,
};

enum AccelerometerFullScaleSelect : std::uint8_t {
    _2G = 0,
    _4G,
    _8G,
    _16G,
};

enum GyroscopeFullScaleSelect : std::uint8_t {
    _250DpS = 0,
    _500DpS,
    _1000DpS,
    _2000DpS,
};

enum I2CMasterClockSpeed {
    _348kHz = 0,
    _333kHz,
    _320kHz,
    _308kHz,
    _296kHz,
    _286kHz,
    _276kHz,
    _267kHz,
    _258kHz,
    _500kHz,
    _471kHz,
    _444kHz,
    _421kHz,
    _400kHz,
    _381kHz,
    _364kHz,
};

enum WakeUpFrequency : std::uint16_t {
    _1Hz25 = 0,
    _5Hz,
    _20Hz,
    _40Hz,
};

enum ClockSelection : std::uint16_t {
    Internal = 0,
    PLLGyroX,
    PLLGyroY,
    PLLGyroZ,
    PLL32k768Hz,
    PLL19M2Hz,
    Reserved,
    Stop,
};

#pragma pack(push, 1)

union MPU6050_dev_t {
    struct {
        union {
            struct {
                union {
                    struct {
                        std::uint8_t otpBnkVld : 1;
                        std::uint8_t value : 6;
                        std::uint8_t auxilaryI2CVDD : 1;
                    };
                    std::uint8_t reg; // 0x00
                } x;

                union {
                    struct {
                        std::uint8_t reserved : 1;
                        std::uint8_t value : 6;
                        std::uint8_t reserved1 : 1;
                    };
                    std::uint8_t reg; // 0x01
                } y;

                union {
                    struct {
                        std::uint8_t reserved : 1;
                        std::uint8_t value : 6;
                        std::uint8_t reserved1 : 1;
                    };
                    std::uint8_t reg; // 0x02
                } z;
            };
            std::uint8_t regs[3];
        } gyroscopeOffsetTC;

        union {
            struct {
                std::uint8_t x; // 0x03
                std::uint8_t y; // 0x04
                std::uint8_t z; // 0x05
            };
            std::uint8_t regs[3];
        } fineGain;

        union {
            struct {
                BE::Int16 x; // 0x06
                BE::Int16 y; // 0x08
                BE::Int16 z; // 0x0A
            };
            BE::Int16 values[3];
            std::uint8_t regs[6];
        } accelerometerOffset;

        std::uint8_t ProductID; // 0x0C

        union {
            struct {
                std::uint8_t gyroTest : 5;
                std::uint8_t accelerometerTest : 3;
            };
            std::uint8_t reg;
        } selfTestX; // 0x0D

        union {
            struct {
                std::uint8_t gyroTest : 5;
                std::uint8_t accelerometerTest : 3;
            };
            std::uint8_t reg;
        } selfTestY; // 0x0E

        union {
            struct {
                std::uint8_t gyroTest : 5;
                std::uint8_t accelerometerTest : 3;
            };
            std::uint8_t reg;
        } selfTestZ; // 0x0F

        union {
            struct {
                std::uint8_t zTest : 2;
                std::uint8_t yTest : 2;
                std::uint8_t xTest : 2;
                std::uint8_t reserved : 2;
            };
            std::uint8_t reg;
        } selfTestA; // 0x10

        std::uint8_t unknown0; // 0x11
        std::uint8_t unknown1; // 0x12

        union {
            struct {
                BE::Int16 x; // 0x13
                BE::Int16 y; // 0x15
                BE::Int16 z; // 0x17
            };
            BE::Int16 values[3];
            std::uint8_t regs[6];
        } gyroscopeOffset;

        std::uint8_t sampleRateDivider; // 0x19

        union {
            struct {
                std::uint8_t digitalLowPassFilter : 3;
                ExternalSyncSettings externalSyncSet : 3;
                std::uint8_t reserved : 2;
            };
            std::uint8_t reg; // 0x1A
        } config;

        union {
            struct {
                std::uint8_t reserved : 3;
                GyroscopeFullScaleSelect fullScaleSelect : 2;
                std::uint8_t doSelfTestZ : 1;
                std::uint8_t doSelfTestY : 1;
                std::uint8_t doSelfTestX : 1;
            };
            std::uint8_t reg;
        } gyroscopeConfig; // 0x1B

        union {
            struct {
                std::uint8_t reserved : 3;
                AccelerometerFullScaleSelect fullScaleSelect : 2;
                std::uint8_t doSelfTestZ : 1;
                std::uint8_t doSelfTestY : 1;
                std::uint8_t doSelfTestX : 1;
            };
            std::uint8_t reg;
        } accelerometerConfig; // 0x1C

        std::uint8_t freeFallThreshold; // 0x1D
        std::uint8_t freeFallDuration; // 0x1E

        std::uint8_t motionThreshold; // 0x1F
        std::uint8_t motionDuration; // 0x20

        std::uint8_t zeroMotionThreshold; // 0x21
        std::uint8_t zeroMotionDuration; // 0x22

        union {
            struct {
                std::uint8_t slave0 : 1;
                std::uint8_t slave1 : 1;
                std::uint8_t slave2 : 1;
                std::uint8_t accelerometer : 1;
                std::uint8_t gyroscopeZ : 1;
                std::uint8_t gyroscopeY : 1;
                std::uint8_t gyroscopeX : 1;
                std::uint8_t temperature : 1;
            };
            std::uint8_t reg;
        } fifoEnable; // 0x23

        union {
            struct {
                I2CMasterClockSpeed clock : 4;
                std::uint8_t noRestart : 1;
                std::uint8_t slave3FIFOEnable : 1;
                std::uint8_t waitForExternalSensor : 1;
                std::uint8_t multiMasterEnable : 1;
            };
            std::uint8_t reg;
        } i2cMasterControl; // 0x24

        union {
            struct {
                struct {
                    std::uint8_t address : 7;
                    std::uint8_t readWrite : 1;
                };
                std::uint8_t registerAddress;
                struct {
                    std::uint8_t length : 4;
                    std::uint8_t groupingOrder : 1;
                    std::uint8_t writeRegisterAddress : 1;
                    std::uint8_t byteSwap : 1;
                    std::uint8_t enable : 1;
                };
            };
            std::uint8_t regs[3];
        } slaveControl[4];

        union {
            struct {
                struct {
                    std::uint8_t address : 7;
                    std::uint8_t readWrite : 1;
                }; // 0x31
                std::uint8_t registerAddress; // 0x32
                std::uint8_t dataToBeWritten; // 0x33
                struct {
                    std::uint8_t length : 5;
                    std::uint8_t writeRegisterAddress : 1;
                    std::uint8_t enableInterrupt : 1;
                    std::uint8_t enable : 1;
                }; // 0x34
                std::uint8_t dataRead; // 0x35
            };
            std::uint8_t regs[5];
        } slaveControl4;

        union {
            struct {
                std::uint8_t slave0NACK : 1;
                std::uint8_t slave1NACK : 1;
                std::uint8_t slave2NACK : 1;
                std::uint8_t slave3NACK : 1;
                std::uint8_t slave4NACK : 1;
                std::uint8_t lostArbitration : 1;
                std::uint8_t slave4Done : 1;
                std::uint8_t passThrough : 1;
            };
            std::uint8_t reg;
        } masterStatus; // 0x36

        union {
            struct {
                std::uint8_t reserved : 1;
                std::uint8_t i2cBypassEnable : 1;
                std::uint8_t fsyncInterruptEnable : 1;
                std::uint8_t fsyncInterruptLevel : 1;
                std::uint8_t clearOnReadMode : 1;
                std::uint8_t latchInterrupt : 1;
                std::uint8_t openDrainEnable : 1;
                std::uint8_t activeLevel : 1;
            };
            std::uint8_t reg;
        } interruptPinConfig; // 0x37

        union {
            struct {
                std::uint8_t dataReady : 1;
                std::uint8_t reserved : 2;
                std::uint8_t masterI2CInterrupt : 1;
                std::uint8_t fifoOverflow : 1;
                std::uint8_t reserved1 : 3;
            };
            std::uint8_t reg;
        } interruptEnable; // 0x38

        union {
            struct {
                std::uint16_t dmp0 : 1; // 0x39
                std::uint16_t dmp1 : 1;
                std::uint16_t dmp2 : 1;
                std::uint16_t dmp3 : 1;
                std::uint16_t dmp4 : 1;
                std::uint16_t dmp5 : 1;
                std::uint16_t reserved : 2;
                std::uint16_t dataReady : 1; // 0x3A
                std::uint16_t dmpInitialized : 1;
                std::uint16_t pllReady : 1;
                std::uint16_t masterI2CInterrupt : 1;
                std::uint16_t fifoOverflow : 1;
                std::uint16_t zeroMotion : 1;
                std::uint16_t motion : 1;
                std::uint16_t freeFall : 1;
            };
            std::uint8_t regs[2];
        } interruptStatus;

        union {
            struct {
                union {
                    struct {
                        BE::Int16 x; // 0x3B
                        BE::Int16 y; // 0x3D
                        BE::Int16 z; // 0x3F
                    };
                    BE::Int16 values[3];
                    std::uint8_t regs[6];
                } accelerometer;

                BE::Uint16 temperature; // 0x41

                union {
                    struct {
                        BE::Int16 x; // 0x43
                        BE::Int16 y; // 0x45
                        BE::Int16 z; // 0x47
                    };
                    BE::Int16 values[3];
                    std::uint8_t regs[6];
                } gyroscope;
            };
            BE::Int16 values[7];
            std::uint8_t regs[14];
        } measurements;

        std::uint8_t externalSensorData[24]; // 0x49

        union {
            struct {
                std::uint8_t zeroMotion : 1;
                std::uint8_t reserved : 1;
                std::uint8_t zPositive : 1;
                std::uint8_t zNegative : 1;
                std::uint8_t yPositive : 1;
                std::uint8_t yNegative : 1;
                std::uint8_t xPositive : 1;
                std::uint8_t xNegative : 1;
            };
            std::uint8_t reg;
        } motionDetectionStatus; // 0x61

        std::uint8_t unknown2; // 0x62

        std::uint8_t slaveDataOut[4]; // 0x63

        union {
            struct {
                std::uint8_t slave0DelayEnable : 1;
                std::uint8_t slave1DelayEnable : 1;
                std::uint8_t slave2DelayEnable : 1;
                std::uint8_t slave3DelayEnable : 1;
                std::uint8_t slave4DelayEnable : 1;
                std::uint8_t reserved : 2;
                std::uint8_t externalSensorShadowEnable : 1;
            };
            std::uint8_t reg;
        } i2cMasterDelayControl; // 0x67

        union {
            struct {
                std::uint8_t temperatureReset : 1;
                std::uint8_t accelerometerReset : 1;
                std::uint8_t gyroscopeReset : 1;
                std::uint8_t reset : 5;
            };
            std::uint8_t reg;
        } signalPathReset; // 0x68

        union {
            struct {
                std::uint8_t motionCount : 2;
                std::uint8_t freeFallCount : 2;
                std::uint8_t accelerometerOnDelay : 2;
                std::uint8_t reserved : 2;
            };
            std::uint8_t reg;
        } motionDetectionControl; // 0x69

        union {
            struct {
                std::uint8_t signalCondReset : 1;
                std::uint8_t i2cMasterReset : 1;
                std::uint8_t fifoReset : 1;
                std::uint8_t reserved : 1;
                std::uint8_t i2cInterfaceDisable : 1;
                std::uint8_t i2cMasterEnable : 1;
                std::uint8_t fifoEnable : 1;
                std::uint8_t reserved1 : 1;
            };
            std::uint8_t reg;
        } userControl; // 0x6A

        union {
            std::uint8_t regs[2];
            struct {
                ClockSelection clockSelection : 3; // 0x6B
                std::uint16_t temperatureDisable : 1;
                std::uint16_t reserved : 1;
                std::uint16_t cycle : 1;
                std::uint16_t sleep : 1;
                std::uint16_t deviceReset : 1;
                std::uint16_t standbyZGyroscope : 1; // 0x6C
                std::uint16_t standbyYGyroscope : 1;
                std::uint16_t standbyXGyroscope : 1;
                std::uint16_t standbyZAccelerometer : 1;
                std::uint16_t standbyYAccelerometer : 1;
                std::uint16_t standbyXAccelerometer : 1;
                WakeUpFrequency LowPowerWakeControl : 1;
            };
        } powerManagement;

        union {
            struct {
                std::uint8_t memorySelect : 5;
                std::uint8_t configureUserBank : 1;
                std::uint8_t prftchEnable : 1; // FIXME: WTF? prefetch?
                std::uint8_t reserved : 1;
            };
            std::uint8_t reg;
        } bankSelection; // 0x6D

        std::uint8_t memoryStartAddress; // 0x6E
        std::uint8_t memoryReadWrite; // 0x6F

        BE::Uint16 programStartAddress; // 0x70

        BE::Uint16 fifoCount; // 0x72

        std::uint8_t fifoReadWrite; // 0x74

        union {
            std::uint8_t reg;
            struct {
                std::uint8_t reserved : 1;
                std::uint8_t data : 6;
                std::uint8_t reserved1 : 1;
            };
        } whoAmI; // 0x75
    };
    std::uint8_t regs[MaxAddress];

    constexpr MPU6050_dev_t() : powerManagement{0x40, 0}, whoAmI{0x68} {}
};

#pragma pack(pop)

static constexpr unsigned dmpProgramSize = 3062;

static constexpr std::array<std::uint8_t, dmpProgramSize> dmpProgram = {
    /* bank # 0 */
    0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00,
    0x00, 0x65, 0x00, 0x54, 0xff, 0xef, 0x00, 0x00, 0xfa, 0x80, 0x00, 0x0b, 0x12, 0x82, 0x00, 0x01,
    0x03, 0x0c, 0x30, 0xc3, 0x0e, 0x8c, 0x8c, 0xe9, 0x14, 0xd5, 0x40, 0x02, 0x13, 0x71, 0x0f, 0x8e,
    0x38, 0x83, 0xf8, 0x83, 0x30, 0x00, 0xf8, 0x83, 0x25, 0x8e, 0xf8, 0x83, 0x30, 0x00, 0xf8, 0x83,
    0xff, 0xff, 0xff, 0xff, 0x0f, 0xfe, 0xa9, 0xd6, 0x24, 0x00, 0x04, 0x00, 0x1a, 0x82, 0x79, 0xa1,
    0x00, 0x00, 0x00, 0x3c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x38, 0x83, 0x6f, 0xa2,
    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,
    0xff, 0xff, 0x02, 0x56, 0xfd, 0x8c, 0xd3, 0x77, 0xff, 0xe1, 0xc4, 0x96, 0xe0, 0xc5, 0xbe, 0xaa,
    0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x2b, 0x00, 0x00, 0x16, 0x57, 0x00, 0x00, 0x03, 0x59,
    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xfa, 0x00, 0x02, 0x6c, 0x1d, 0x00, 0x00, 0x00, 0x00,
    0x3f, 0xff, 0xdf, 0xeb, 0x00, 0x3e, 0xb3, 0xb6, 0x00, 0x0d, 0x22, 0x78, 0x00, 0x00, 0x2f, 0x3c,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x42, 0xb5, 0x00, 0x00, 0x39, 0xa2, 0x00, 0x00, 0xb3, 0x65,
    0xd9, 0x0e, 0x9f, 0xc9, 0x1d, 0xcf, 0x4c, 0x34, 0x30, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00,
    0x3b, 0xb6, 0x7a, 0xe8, 0x00, 0x64, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    /* bank # 1 */
    0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0xfa, 0x92, 0x10, 0x00, 0x22, 0x5e, 0x00, 0x0d, 0x22, 0x9f,
    0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0xff, 0x46, 0x00, 0x00, 0x63, 0xd4, 0x00, 0x00,
    0x10, 0x00, 0x00, 0x00, 0x04, 0xd6, 0x00, 0x00, 0x04, 0xcc, 0x00, 0x00, 0x04, 0xcc, 0x00, 0x00,
    0x00, 0x00, 0x10, 0x72, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x06, 0x00, 0x02, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x64, 0x00, 0x20, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03, 0x00,
    0x00, 0x00, 0x00, 0x32, 0xf8, 0x98, 0x00, 0x00, 0xff, 0x65, 0x00, 0x00, 0x83, 0x0f, 0x00, 0x00,
    0xff, 0x9b, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xb2, 0x6a, 0x00, 0x02, 0x00, 0x00,
    0x00, 0x01, 0xfb, 0x83, 0x00, 0x68, 0x00, 0x00, 0x00, 0xd9, 0xfc, 0x00, 0x7c, 0xf1, 0xff, 0x83,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x64, 0x03, 0xe8, 0x00, 0x64, 0x00, 0x28,
    0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x16, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
    0x00, 0x00, 0x10, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0x00, 0x00, 0x10, 0x00,
    /* bank # 2 */
    0x00, 0x28, 0x00, 0x00, 0xff, 0xff, 0x45, 0x81, 0xff, 0xff, 0xfa, 0x72, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x05, 0x00, 0x05, 0xba, 0xc6, 0x00, 0x47, 0x78, 0xa2,
    0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x14,
    0x00, 0x00, 0x25, 0x4d, 0x00, 0x2f, 0x70, 0x6d, 0x00, 0x00, 0x05, 0xae, 0x00, 0x0c, 0x02, 0xd0,
    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, 0x64, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0e, 0x00, 0x0e,
    0x00, 0x00, 0x0a, 0xc7, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xff, 0xff, 0xff, 0x9c,
    0x00, 0x00, 0x0b, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x64,
    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, 0x06, 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, 0x00, 0x00, 0x00, 0x00, 0x17, 0xd7, 0x84, 0x00, 0x03, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x93, 0x8f, 0x9d, 0x1e, 0x1b, 0x1c, 0x19,
    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, 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, 0x00,
    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, 0xdc, 0xb4, 0xb8, 0xb0, 0xd8, 0xb9, 0xab, 0xf3, 0xf8, 0xfa, 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, 0xb0, 0x8a, 0xa8, 0x96,
    0x36, 0x56, 0x76, 0xf1, 0xba, 0xa3, 0xb4, 0xb2, 0x80, 0xc0, 0xb8, 0xa8, 0x97, 0x11, 0xb2, 0x83,
    0x98, 0xba, 0xa3, 0xf0, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xb2, 0xb9, 0xb4, 0x98, 0x83, 0xf1,
    0xa3, 0x29, 0x55, 0x7d, 0xba, 0xb5, 0xb1, 0xa3, 0x83, 0x93, 0xf0, 0x00, 0x28, 0x50, 0xf5, 0xb2,
    0xb6, 0xaa, 0x83, 0x93, 0x28, 0x54, 0x7c, 0xf1, 0xb9, 0xa3, 0x82, 0x93, 0x61, 0xba, 0xa2, 0xda,
    0xde, 0xdf, 0xdb, 0x81, 0x9a, 0xb9, 0xae, 0xf5, 0x60, 0x68, 0x70, 0xf1, 0xda, 0xba, 0xa2, 0xdf,
    0xd9, 0xba, 0xa2, 0xfa, 0xb9, 0xa3, 0x82, 0x92, 0xdb, 0x31, 0xba, 0xa2, 0xd9, 0xba, 0xa2, 0xf8,
    0xdf, 0x85, 0xa4, 0xd0, 0xc1, 0xbb, 0xad, 0x83, 0xc2, 0xc5, 0xc7, 0xb8, 0xa2, 0xdf, 0xdf, 0xdf,
    0xba, 0xa0, 0xdf, 0xdf, 0xdf, 0xd8, 0xd8, 0xf1, 0xb8, 0xaa, 0xb3, 0x8d, 0xb4, 0x98, 0x0d, 0x35,
    0x5d, 0xb2, 0xb6, 0xba, 0xaf, 0x8c, 0x96, 0x19, 0x8f, 0x9f, 0xa7, 0x0e, 0x16, 0x1e, 0xb4, 0x9a,
    0xb8, 0xaa, 0x87, 0x2c, 0x54, 0x7c, 0xba, 0xa4, 0xb0, 0x8a, 0xb6, 0x91, 0x32, 0x56, 0x76, 0xb2,
    0x84, 0x94, 0xa4, 0xc8, 0x08, 0xcd, 0xd8, 0xb8, 0xb4, 0xb0, 0xf1, 0x99, 0x82, 0xa8, 0x2d, 0x55,
    0x7d, 0x98, 0xa8, 0x0e, 0x16, 0x1e, 0xa2, 0x2c, 0x54, 0x7c, 0x92, 0xa4, 0xf0, 0x2c, 0x50, 0x78,
    /* bank # 5 */
    0xf1, 0x84, 0xa8, 0x98, 0xc4, 0xcd, 0xfc, 0xd8, 0x0d, 0xdb, 0xa8, 0xfc, 0x2d, 0xf3, 0xd9, 0xba,
    0xa6, 0xf8, 0xda, 0xba, 0xa6, 0xde, 0xd8, 0xba, 0xb2, 0xb6, 0x86, 0x96, 0xa6, 0xd0, 0xf3, 0xc8,
    0x41, 0xda, 0xa6, 0xc8, 0xf8, 0xd8, 0xb0, 0xb4, 0xb8, 0x82, 0xa8, 0x92, 0xf5, 0x2c, 0x54, 0x88,
    0x98, 0xf1, 0x35, 0xd9, 0xf4, 0x18, 0xd8, 0xf1, 0xa2, 0xd0, 0xf8, 0xf9, 0xa8, 0x84, 0xd9, 0xc7,
    0xdf, 0xf8, 0xf8, 0x83, 0xc5, 0xda, 0xdf, 0x69, 0xdf, 0x83, 0xc1, 0xd8, 0xf4, 0x01, 0x14, 0xf1,
    0xa8, 0x82, 0x4e, 0xa8, 0x84, 0xf3, 0x11, 0xd1, 0x82, 0xf5, 0xd9, 0x92, 0x28, 0x97, 0x88, 0xf1,
    0x09, 0xf4, 0x1c, 0x1c, 0xd8, 0x84, 0xa8, 0xf3, 0xc0, 0xf9, 0xd1, 0xd9, 0x97, 0x82, 0xf1, 0x29,
    0xf4, 0x0d, 0xd8, 0xf3, 0xf9, 0xf9, 0xd1, 0xd9, 0x82, 0xf4, 0xc2, 0x03, 0xd8, 0xde, 0xdf, 0x1a,
    0xd8, 0xf1, 0xa2, 0xfa, 0xf9, 0xa8, 0x84, 0x98, 0xd9, 0xc7, 0xdf, 0xf8, 0xf8, 0xf8, 0x83, 0xc7,
    0xda, 0xdf, 0x69, 0xdf, 0xf8, 0x83, 0xc3, 0xd8, 0xf4, 0x01, 0x14, 0xf1, 0x98, 0xa8, 0x82, 0x2e,
    0xa8, 0x84, 0xf3, 0x11, 0xd1, 0x82, 0xf5, 0xd9, 0x92, 0x50, 0x97, 0x88, 0xf1, 0x09, 0xf4, 0x1c,
    0xd8, 0x84, 0xa8, 0xf3, 0xc0, 0xf8, 0xf9, 0xd1, 0xd9, 0x97, 0x82, 0xf1, 0x49, 0xf4, 0x0d, 0xd8,
    0xf3, 0xf9, 0xf9, 0xd1, 0xd9, 0x82, 0xf4, 0xc4, 0x03, 0xd8, 0xde, 0xdf, 0xd8, 0xf1, 0xad, 0x88,
    0x98, 0xcc, 0xa8, 0x09, 0xf9, 0xd9, 0x82, 0x92, 0xa8, 0xf5, 0x7c, 0xf1, 0x88, 0x3a, 0xcf, 0x94,
    0x4a, 0x6e, 0x98, 0xdb, 0x69, 0x31, 0xda, 0xad, 0xf2, 0xde, 0xf9, 0xd8, 0x87, 0x95, 0xa8, 0xf2,
    0x21, 0xd1, 0xda, 0xa5, 0xf9, 0xf4, 0x17, 0xd9, 0xf1, 0xae, 0x8e, 0xd0, 0xc0, 0xc3, 0xae, 0x82,
    /* bank # 6 */
    0xc6, 0x84, 0xc3, 0xa8, 0x85, 0x95, 0xc8, 0xa5, 0x88, 0xf2, 0xc0, 0xf1, 0xf4, 0x01, 0x0e, 0xf1,
    0x8e, 0x9e, 0xa8, 0xc6, 0x3e, 0x56, 0xf5, 0x54, 0xf1, 0x88, 0x72, 0xf4, 0x01, 0x15, 0xf1, 0x98,
    0x45, 0x85, 0x6e, 0xf5, 0x8e, 0x9e, 0x04, 0x88, 0xf1, 0x42, 0x98, 0x5a, 0x8e, 0x9e, 0x06, 0x88,
    0x69, 0xf4, 0x01, 0x1c, 0xf1, 0x98, 0x1e, 0x11, 0x08, 0xd0, 0xf5, 0x04, 0xf1, 0x1e, 0x97, 0x02,
    0x02, 0x98, 0x36, 0x25, 0xdb, 0xf9, 0xd9, 0x85, 0xa5, 0xf3, 0xc1, 0xda, 0x85, 0xa5, 0xf3, 0xdf,
    0xd8, 0x85, 0x95, 0xa8, 0xf3, 0x09, 0xda, 0xa5, 0xfa, 0xd8, 0x82, 0x92, 0xa8, 0xf5, 0x78, 0xf1,
    0x88, 0x1a, 0x84, 0x9f, 0x26, 0x88, 0x98, 0x21, 0xda, 0xf4, 0x1d, 0xf3, 0xd8, 0x87, 0x9f, 0x39,
    0xd1, 0xaf, 0xd9, 0xdf, 0xdf, 0xfb, 0xf9, 0xf4, 0x0c, 0xf3, 0xd8, 0xfa, 0xd0, 0xf8, 0xda, 0xf9,
    0xf9, 0xd0, 0xdf, 0xd9, 0xf9, 0xd8, 0xf4, 0x0b, 0xd8, 0xf3, 0x87, 0x9f, 0x39, 0xd1, 0xaf, 0xd9,
    0xdf, 0xdf, 0xf4, 0x1d, 0xf3, 0xd8, 0xfa, 0xfc, 0xa8, 0x69, 0xf9, 0xf9, 0xaf, 0xd0, 0xda, 0xde,
    0xfa, 0xd9, 0xf8, 0x8f, 0x9f, 0xa8, 0xf1, 0xcc, 0xf3, 0x98, 0xdb, 0x45, 0xd9, 0xaf, 0xdf, 0xd0,
    0xf8, 0xd8, 0xf1, 0x8f, 0x9f, 0xa8, 0xca, 0xf3, 0x88, 0x09, 0xda, 0xaf, 0x8f, 0xcb, 0xf8, 0xd8,
    0xf2, 0xad, 0x97, 0x8d, 0x0c, 0xd9, 0xa5, 0xdf, 0xf9, 0xba, 0xa6, 0xf3, 0xfa, 0xf4, 0x12, 0xf2,
    0xd8, 0x95, 0x0d, 0xd1, 0xd9, 0xba, 0xa6, 0xf3, 0xfa, 0xda, 0xa5, 0xf2, 0xc1, 0xba, 0xa6, 0xf3,
    0xdf, 0xd8, 0xf1, 0xba, 0xb2, 0xb6, 0x86, 0x96, 0xa6, 0xd0, 0xca, 0xf3, 0x49, 0xda, 0xa6, 0xcb,
    0xf8, 0xd8, 0xb0, 0xb4, 0xb8, 0xd8, 0xad, 0x84, 0xf2, 0xc0, 0xdf, 0xf1, 0x8f, 0xcb, 0xc3, 0xa8,
    /* bank # 7 */
    0xb2, 0xb6, 0x86, 0x96, 0xc8, 0xc1, 0xcb, 0xc3, 0xf3, 0xb0, 0xb4, 0x88, 0x98, 0xa8, 0x21, 0xdb,
    0x71, 0x8d, 0x9d, 0x71, 0x85, 0x95, 0x21, 0xd9, 0xad, 0xf2, 0xfa, 0xd8, 0x85, 0x97, 0xa8, 0x28,
    0xd9, 0xf4, 0x08, 0xd8, 0xf2, 0x8d, 0x29, 0xda, 0xf4, 0x05, 0xd9, 0xf2, 0x85, 0xa4, 0xc2, 0xf2,
    0xd8, 0xa8, 0x8d, 0x94, 0x01, 0xd1, 0xd9, 0xf4, 0x11, 0xf2, 0xd8, 0x87, 0x21, 0xd8, 0xf4, 0x0a,
    0xd8, 0xf2, 0x84, 0x98, 0xa8, 0xc8, 0x01, 0xd1, 0xd9, 0xf4, 0x11, 0xd8, 0xf3, 0xa4, 0xc8, 0xbb,
    0xaf, 0xd0, 0xf2, 0xde, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xd8, 0xf1, 0xb8, 0xf6,
    0xb5, 0xb9, 0xb0, 0x8a, 0x95, 0xa3, 0xde, 0x3c, 0xa3, 0xd9, 0xf8, 0xd8, 0x5c, 0xa3, 0xd9, 0xf8,
    0xd8, 0x7c, 0xa3, 0xd9, 0xf8, 0xd8, 0xf8, 0xf9, 0xd1, 0xa5, 0xd9, 0xdf, 0xda, 0xfa, 0xd8, 0xb1,
    0x85, 0x30, 0xf7, 0xd9, 0xde, 0xd8, 0xf8, 0x30, 0xad, 0xda, 0xde, 0xd8, 0xf2, 0xb4, 0x8c, 0x99,
    0xa3, 0x2d, 0x55, 0x7d, 0xa0, 0x83, 0xdf, 0xdf, 0xdf, 0xb5, 0x91, 0xa0, 0xf6, 0x29, 0xd9, 0xfb,
    0xd8, 0xa0, 0xfc, 0x29, 0xd9, 0xfa, 0xd8, 0xa0, 0xd0, 0x51, 0xd9, 0xf8, 0xd8, 0xfc, 0x51, 0xd9,
    0xf9, 0xd8, 0x79, 0xd9, 0xfb, 0xd8, 0xa0, 0xd0, 0xfc, 0x79, 0xd9, 0xfa, 0xd8, 0xa1, 0xf9, 0xf9,
    0xf9, 0xf9, 0xf9, 0xa0, 0xda, 0xdf, 0xdf, 0xdf, 0xd8, 0xa1, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xac,
    0xde, 0xf8, 0xad, 0xde, 0x83, 0x93, 0xac, 0x2c, 0x54, 0x7c, 0xf1, 0xa8, 0xdf, 0xdf, 0xdf, 0xf6,
    0x9d, 0x2c, 0xda, 0xa0, 0xdf, 0xd9, 0xfa, 0xdb, 0x2d, 0xf8, 0xd8, 0xa8, 0x50, 0xda, 0xa0, 0xd0,
    0xde, 0xd9, 0xd0, 0xf8, 0xf8, 0xf8, 0xdb, 0x55, 0xf8, 0xd8, 0xa8, 0x78, 0xda, 0xa0, 0xd0, 0xdf,
    /* bank # 8 */
    0xd9, 0xd0, 0xfa, 0xf8, 0xf8, 0xf8, 0xf8, 0xdb, 0x7d, 0xf8, 0xd8, 0x9c, 0xa8, 0x8c, 0xf5, 0x30,
    0xdb, 0x38, 0xd9, 0xd0, 0xde, 0xdf, 0xa0, 0xd0, 0xde, 0xdf, 0xd8, 0xa8, 0x48, 0xdb, 0x58, 0xd9,
    0xdf, 0xd0, 0xde, 0xa0, 0xdf, 0xd0, 0xde, 0xd8, 0xa8, 0x68, 0xdb, 0x70, 0xd9, 0xdf, 0xdf, 0xa0,
    0xdf, 0xdf, 0xd8, 0xf1, 0xa8, 0x88, 0x90, 0x2c, 0x54, 0x7c, 0x98, 0xa8, 0xd0, 0x5c, 0x38, 0xd1,
    0xda, 0xf2, 0xae, 0x8c, 0xdf, 0xf9, 0xd8, 0xb0, 0x87, 0xa8, 0xc1, 0xc1, 0xb1, 0x88, 0xa8, 0xc6,
    0xf9, 0xf9, 0xda, 0x36, 0xd8, 0xa8, 0xf9, 0xda, 0x36, 0xd8, 0xa8, 0xf9, 0xda, 0x36, 0xd8, 0xa8,
    0xf9, 0xda, 0x36, 0xd8, 0xa8, 0xf9, 0xda, 0x36, 0xd8, 0xf7, 0x8d, 0x9d, 0xad, 0xf8, 0x18, 0xda,
    0xf2, 0xae, 0xdf, 0xd8, 0xf7, 0xad, 0xfa, 0x30, 0xd9, 0xa4, 0xde, 0xf9, 0xd8, 0xf2, 0xae, 0xde,
    0xfa, 0xf9, 0x83, 0xa7, 0xd9, 0xc3, 0xc5, 0xc7, 0xf1, 0x88, 0x9b, 0xa7, 0x7a, 0xad, 0xf7, 0xde,
    0xdf, 0xa4, 0xf8, 0x84, 0x94, 0x08, 0xa7, 0x97, 0xf3, 0x00, 0xae, 0xf2, 0x98, 0x19, 0xa4, 0x88,
    0xc6, 0xa3, 0x94, 0x88, 0xf6, 0x32, 0xdf, 0xf2, 0x83, 0x93, 0xdb, 0x09, 0xd9, 0xf2, 0xaa, 0xdf,
    0xd8, 0xd8, 0xae, 0xf8, 0xf9, 0xd1, 0xda, 0xf3, 0xa4, 0xde, 0xa7, 0xf1, 0x88, 0x9b, 0x7a, 0xd8,
    0xf3, 0x84, 0x94, 0xae, 0x19, 0xf9, 0xda, 0xaa, 0xf1, 0xdf, 0xd8, 0xa8, 0x81, 0xc0, 0xc3, 0xc5,
    0xc7, 0xa3, 0x92, 0x83, 0xf6, 0x28, 0xad, 0xde, 0xd9, 0xf8, 0xd8, 0xa3, 0x50, 0xad, 0xd9, 0xf8,
    0xd8, 0xa3, 0x78, 0xad, 0xd9, 0xf8, 0xd8, 0xf8, 0xf9, 0xd1, 0xa1, 0xda, 0xde, 0xc3, 0xc5, 0xc7,
    0xd8, 0xa1, 0x81, 0x94, 0xf8, 0x18, 0xf2, 0xb0, 0x89, 0xac, 0xc3, 0xc5, 0xc7, 0xf1, 0xd8, 0xb8,
    /* bank # 9 */
    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, 0x79, 0x8a, 0x24, 0x70, 0x59,
    0x8b, 0x20, 0x58, 0x71, 0x8a, 0x44, 0x69, 0x38, 0x8b, 0x39, 0x40, 0x68, 0x8a, 0x64, 0x48, 0x31,
    0x8b, 0x30, 0x49, 0x60, 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, 0xb1, 0xb5, 0xb9, 0xa3, 0xdf, 0xdf, 0xdf, 0xae, 0xd0,
    0xdf, 0xaa, 0xd0, 0xde, 0xf2, 0xab, 0xf8, 0xf9, 0xd9, 0xb0, 0x87, 0xc4, 0xaa, 0xf1, 0xdf, 0xdf,
    0xbb, 0xaf, 0xdf, 0xdf, 0xb9, 0xd8, 0xb1, 0xf1, 0xa3, 0x97, 0x8e, 0x60, 0xdf, 0xb0, 0x84, 0xf2,
    0xc8, 0xf8, 0xf9, 0xd9, 0xde, 0xd8, 0x93, 0x85, 0xf1, 0x4a, 0xb1, 0x83, 0xa3, 0x08, 0xb5, 0x83,
    /* bank # 10 */
    0x9a, 0x08, 0x10, 0xb7, 0x9f, 0x10, 0xd8, 0xf1, 0xb0, 0xba, 0xae, 0xb0, 0x8a, 0xc2, 0xb2, 0xb6,
    0x8e, 0x9e, 0xf1, 0xfb, 0xd9, 0xf4, 0x1d, 0xd8, 0xf9, 0xd9, 0x0c, 0xf1, 0xd8, 0xf8, 0xf8, 0xad,
    0x61, 0xd9, 0xae, 0xfb, 0xd8, 0xf4, 0x0c, 0xf1, 0xd8, 0xf8, 0xf8, 0xad, 0x19, 0xd9, 0xae, 0xfb,
    0xdf, 0xd8, 0xf4, 0x16, 0xf1, 0xd8, 0xf8, 0xad, 0x8d, 0x61, 0xd9, 0xf4, 0xf4, 0xac, 0xf5, 0x9c,
    0x9c, 0x8d, 0xdf, 0x2b, 0xba, 0xb6, 0xae, 0xfa, 0xf8, 0xf4, 0x0b, 0xd8, 0xf1, 0xae, 0xd0, 0xf8,
    0xad, 0x51, 0xda, 0xae, 0xfa, 0xf8, 0xf1, 0xd8, 0xb9, 0xb1, 0xb6, 0xa3, 0x83, 0x9c, 0x08, 0xb9,
    0xb1, 0x83, 0x9a, 0xb5, 0xaa, 0xc0, 0xfd, 0x30, 0x83, 0xb7, 0x9f, 0x10, 0xb5, 0x8b, 0x93, 0xf2,
    0x02, 0x02, 0xd1, 0xab, 0xda, 0xde, 0xd8, 0xf1, 0xb0, 0x80, 0xba, 0xab, 0xc0, 0xc3, 0xb2, 0x84,
    0xc1, 0xc3, 0xd8, 0xb1, 0xb9, 0xf3, 0x8b, 0xa3, 0x91, 0xb6, 0x09, 0xb4, 0xd9, 0xab, 0xde, 0xb0,
    0x87, 0x9c, 0xb9, 0xa3, 0xdd, 0xf1, 0xb3, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0xb0, 0x87, 0xa3, 0xa3,
    0xa3, 0xa3, 0xb2, 0x8b, 0xb6, 0x9b, 0xf2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
    0xa3, 0xf1, 0xb0, 0x87, 0xb5, 0x9a, 0xa3, 0xf3, 0x9b, 0xa3, 0xa3, 0xdc, 0xba, 0xac, 0xdf, 0xb9,
    0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3,
    0xd8, 0xd8, 0xd8, 0xbb, 0xb3, 0xb7, 0xf1, 0xaa, 0xf9, 0xda, 0xff, 0xd9, 0x80, 0x9a, 0xaa, 0x28,
    0xb4, 0x80, 0x98, 0xa7, 0x20, 0xb7, 0x97, 0x87, 0xa8, 0x66, 0x88, 0xf0, 0x79, 0x51, 0xf1, 0x90,
    0x2c, 0x87, 0x0c, 0xa7, 0x81, 0x97, 0x62, 0x93, 0xf0, 0x71, 0x71, 0x60, 0x85, 0x94, 0x01, 0x29,
    /* bank # 11 */
    0x51, 0x79, 0x90, 0xa5, 0xf1, 0x28, 0x4c, 0x6c, 0x87, 0x0c, 0x95, 0x18, 0x85, 0x78, 0xa3, 0x83,
    0x90, 0x28, 0x4c, 0x6c, 0x88, 0x6c, 0xd8, 0xf3, 0xa2, 0x82, 0x00, 0xf2, 0x10, 0xa8, 0x92, 0x19,
    0x80, 0xa2, 0xf2, 0xd9, 0x26, 0xd8, 0xf1, 0x88, 0xa8, 0x4d, 0xd9, 0x48, 0xd8, 0x96, 0xa8, 0x39,
    0x80, 0xd9, 0x3c, 0xd8, 0x95, 0x80, 0xa8, 0x39, 0xa6, 0x86, 0x98, 0xd9, 0x2c, 0xda, 0x87, 0xa7,
    0x2c, 0xd8, 0xa8, 0x89, 0x95, 0x19, 0xa9, 0x80, 0xd9, 0x38, 0xd8, 0xa8, 0x89, 0x39, 0xa9, 0x80,
    0xda, 0x3c, 0xd8, 0xa8, 0x2e, 0xa8, 0x39, 0x90, 0xd9, 0x0c, 0xd8, 0xa8, 0x95, 0x31, 0x98, 0xd9,
    0x0c, 0xd8, 0xa8, 0x09, 0xd9, 0xff, 0xd8, 0x01, 0xda, 0xff, 0xd8, 0x95, 0x39, 0xa9, 0xda, 0x26,
    0xff, 0xd8, 0x90, 0xa8, 0x0d, 0x89, 0x99, 0xa8, 0x10, 0x80, 0x98, 0x21, 0xda, 0x2e, 0xd8, 0x89,
    0x99, 0xa8, 0x31, 0x80, 0xda, 0x2e, 0xd8, 0xa8, 0x86, 0x96, 0x31, 0x80, 0xda, 0x2e, 0xd8, 0xa8,
    0x87, 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, 0xa6, 0x2e, 0xa7, 0x2e, 0xa9, 0x22, 0x98, 0xa8, 0x29, 0xda, 0xac, 0xde, 0xff, 0xd8, 0xa2,
    0xf2, 0x2a, 0xf1, 0xa9, 0x2e, 0x82, 0x92, 0xa8, 0xf2, 0x31, 0x80, 0xa6, 0x96, 0xf1, 0xd9, 0x00,
    0xac, 0x8c, 0x9c, 0x0c, 0x30, 0xac, 0xde, 0xd0, 0xde, 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, 0xf1, 0xff
};

// enum dmpMap {
//     Ptat = 0,
//     XGyroscope = 2,
//     YGyroscope = 4,
//     ZGyroscope = 6,
//     XAccelerometer = 8,
//     YAccelerometer = 10,
//     ZAccelerometer = 12,
//     Adc1 = 14,
//     Adc2 = 16,
//     Adc3 = 18,
//     Biasunc = 20,
//     Fifort = 22,
//     Invgsfh = 24,
//     Invgsfl = 26,
//     _1h = 28,
//     _1l = 30,
//     Blpfstch = 32,
//     Blpfstcl = 34,
//     Blpfsxh = 36,
//     Blpfsxl = 38,
//     Blpfsyh = 40,
//     Blpfsyl = 42,
//     Blpfszh = 44,
//     Blpfszl = 46,
//     Blpfmtc = 48,
//     Smc = 50,
//     Blpfmxh = 52,
//     Blpfmxl = 54,
//     Blpfmyh = 56,
//     Blpfmyl = 58,
//     Blpfmzh = 60,
//     Blpfmzl = 62,
//     Blpfc = 64,
//     Smcth = 66,
//     _0h2 = 68,
//     _0l2 = 70,
//     Berr2h = 72,
//     Berr2l = 74,
//     Berr2nh = 76,
//     Smcinc = 78,
//     Angvbxh = 80,
//     Angvbxl = 82,
//     Angvbyh = 84,
//     Angvbyl = 86,
//     Angvbzh = 88,
//     Angvbzl = 90,
//     Berr1h = 92,
//     Berr1l = 94,
//     Atch = 96,
//     Biasuncsf = 98,
//     Act2h = 100,
//     Act2l = 102,
//     Gsfh = 104,
//     Gsfl = 106,
//     Gh = 108,
//     Gl = 110,
//     _5h = 112,
//     _5l = 114,
//     _0h = 116,
//     _0l = 118,
//     _0h = 120,
//     _0l = 122,
//     _5h = 124,
//     _5l = 126,
//     Tmp1ah = 128,
//     Tmp1al = 130,
//     Tmp2ah = 132,
//     Tmp2al = 134,
//     Tmp3ah = 136,
//     Tmp3al = 138,
//     Tmp4ah = 140,
//     Tmp4al = 142,
//     XAccelerometerW = 144,
//     Tmp5 = 146,
//     XAccelerometerB = 148,
//     Tmp8 = 150,
//     YAccelerometerB = 152,
//     Tmp9 = 154,
//     ZAccelerometerB = 156,
//     Tmp10 = 158,
//     Dzh = 160,
//     Dzl = 162,
//     Xgch = 164,
//     Xgcl = 166,
//     Ygch = 168,
//     Ygcl = 170,
//     Zgch = 172,
//     Zgcl = 174,
//     YAccelerometerW = 176,
//     Tmp7 = 178,
//     Afb1h = 180,
//     Afb1l = 182,
//     Afb2h = 184,
//     Afb2l = 186,
//     Magfbh = 188,
//     Magfbl = 190,
//     Qt1h = 192,
//     Qt1l = 194,
//     Qt2h = 196,
//     Qt2l = 198,
//     Qt3h = 200,
//     Qt3l = 202,
//     Qt4h = 204,
//     Qt4l = 206,
//     Ctrl1h = 208,
//     Ctrl1l = 210,
//     Ctrl2h = 212,
//     Ctrl2l = 214,
//     Ctrl3h = 216,
//     Ctrl3l = 218,
//     Ctrl4h = 220,
//     Ctrl4l = 222,
//     Ctrls1 = 224,
//     Ctrlsf1 = 226,
//     Ctrls2 = 228,
//     Ctrlsf2 = 230,
//     Ctrls3 = 232,
//     Ctrlsfnll = 234,
//     Ctrls4 = 236,
//     Ctrlsfnl2 = 238,
//     Ctrlsfnl = 240,
//     Tmp30 = 242,
//     Ctrlsfjt = 244,
//     Tmp31 = 246,
//     Tmp11 = 248,
//     _2 = 250,
//     Tmp12 = 252,
//     _2 = 254,
//     Prevptat = 256,
//     Acczb = 258,
//     Accxb = 264,
//     Accyb = 266,
//     _1hb = 272,
//     _1lb = 274,
//     _0h = 276,
//     _0l = 278,
//     Asr22h = 280,
//     Asr22l = 282,
//     Asr6h = 284,
//     Asr6l = 286,
//     Tmp13 = 288,
//     Tmp14 = 290,
//     Fintxh = 292,
//     Fintxl = 294,
//     Fintyh = 296,
//     Fintyl = 298,
//     Fintzh = 300,
//     Fintzl = 302,
//     Tmp1bh = 304,
//     Tmp1bl = 306,
//     Tmp2bh = 308,
//     Tmp2bl = 310,
//     Tmp3bh = 312,
//     Tmp3bl = 314,
//     Tmp4bh = 316,
//     Tmp4bl = 318,
//     Stxg = 320,
//     Zctxg = 322,
//     Styg = 324,
//     Zctyg = 326,
//     Stzg = 328,
//     Zctzg = 330,
//     Ctrlsfjt2 = 332,
//     Ctrlsfjtcnt = 334,
//     Pvxg = 336,
//     Tmp15 = 338,
//     Pvyg = 340,
//     Tmp16 = 342,
//     Pvzg = 344,
//     Tmp17 = 346,
//     Mnmflagh = 352,
//     Mnmflagl = 354,
//     Mnmtmh = 356,
//     Mnmtml = 358,
//     Mnmtmthrh = 360,
//     Mnmtmthrl = 362,
//     Mnmthrh = 364,
//     Mnmthrl = 366,
//     Accqd4h = 368,
//     Accqd4l = 370,
//     Accqd5h = 372,
//     Accqd5l = 374,
//     Accqd6h = 376,
//     Accqd6l = 378,
//     Accqd7h = 380,
//     Accqd7l = 382,
//     Accqd0h = 384,
//     Accqd0l = 386,
//     Accqd1h = 388,
//     Accqd1l = 390,
//     Accqd2h = 392,
//     Accqd2l = 394,
//     Accqd3h = 396,
//     Accqd3l = 398,
//     Xn2h = 400,
//     Xn2l = 402,
//     Xn1h = 404,
//     Xn1l = 406,
//     Yn2h = 408,
//     Yn2l = 410,
//     Yn1h = 412,
//     Yn1l = 414,
//     Yh = 416,
//     Yl = 418,
//     B0h = 420,
//     B0l = 422,
//     A1h = 424,
//     A1l = 426,
//     A2h = 428,
//     A2l = 430,
//     Sem1 = 432,
//     Fifocnt = 434,
//     X = 436,
//     Packet = 438,
//     Y = 440,
//     Footer = 442,
//     Z = 444,
//     Temp29 = 448,
//     Temp30 = 450,
//     Pre = 452,
//     Prel = 454,
//     Pre = 456,
//     Prel = 458,
//     Pre = 460,
//     Prel = 462,
//     Tmp22 = 464,
//     Timer = 466,
//     Thx = 468,
//     Thy = 472,
//     Thz = 476,
//     Min = 478,
//     Tmp25 = 480,
//     Tmp26 = 482,
//     Tmp27 = 484,
//     Tmp28 = 486,
//     Orient = 488,
//     Thrsh = 490,
//     Endianh = 492,
//     Endianl = 494,
//     Blpfnmtch = 496,
//     Blpfnmtcl = 498,
//     Blpfnmxh = 500,
//     Blpfnmxl = 502,
//     Blpfnmyh = 504,
//     Blpfnmyl = 506,
//     Blpfnmzh = 508,
//     Blpfnmzl = 510,
// };

// enum dmpKeys {
//     Config_25,
//     Config_24,
//     Config_26,
//     Config_27,
//     Config_21,
//     Config_20,
//     ConfigTap_4,
//     ConfigTap_5,
//     ConfigTap_6,
//     ConfigTap_7,
//     ConfigTap_0,
//     ConfigTap_1,
//     ConfigTap_2,
//     ConfigTap_3,
//     ConfigTapQuantize,
//     ConfigTapJerk,
//     ConfigDrInt,
//     ConfigAuth,
//     ConfigTapSaveAccelerometerB,
//     ConfigTapClearSticky,
//     ConfigFifoOnEvent,
//     FConfigAccelerometerInput,
//     FConfigAccelerometerInit,
//     Config_23,
//     FConfig_1,
//     FConfig_3,
//     FConfig_2,
//     Config_3D,
//     Config_3B,
//     Config_3C,
//     FConfig_5,
//     FConfig_4,
//     FConfig_7,
//     FConfigFScale,
//     FConfigAz,
//     FConfig_6,
//     FConfigLSB_4,
//     Config_12,
//     Config_14,
//     Config_15,
//     Config_16,
//     Config_18,
//     Config_6,
//     Config_7,
//     Config_4,
//     Config_5,
//     Config_2,
//     Config_3,
//     Config_1,
//     ConfigExternal,
//     Config_8,
//     Config_9,
//     ConfigOrient_3,
//     ConfigOrient_2,
//     ConfigOrient_1,
//     ConfigGyro_source,
//     ConfigOrient_irq_1,
//     ConfigOrient_irq_2,
//     ConfigOrient_irq_3,
//     FConfigMagValue,
//     FConfigMagMov,
//     ConfigLpQuat,

//     /* MPU6050 keys */
//     ConfigAccelFilter,
//     ConfigMotionBias,
//     TemperatureLabel,

//     D0_22,
//     D0_24,
//     D0_36,
//     D0_52,
//     D0_96,
//     D0_104,
//     D0_108,
//     D0_163,
//     D0_188,
//     D0_192,
//     D0_224,
//     D0_228,
//     D0_232,
//     D0_236,

//     DmpPrevPtat,
//     D1_2,
//     D1_4,
//     D1_8,
//     D1_10,
//     D1_24,
//     D1_28,
//     D1_36,
//     D1_40,
//     D1_44,
//     D1_72,
//     D1_74,
//     D1_79,
//     D1_88,
//     D1_90,
//     D1_92,
//     D1_96,
//     D1_98,
//     D1_100,
//     D1_106,
//     D1_108,
//     D1_112,
//     D1_128,
//     D1_152,
//     D1_160,
//     D1_168,
//     D1_175,
//     D1_176,
//     D1_178,
//     D1_179,
//     D1_218,
//     D1_232,
//     D1_236,
//     D1_240,
//     D1_244,
//     D1_250,
//     D1_252,
//     D2_12,
//     D2_96,
//     D2_108,
//     D2_208,
//     FlickMsg,
//     FlickCounter,
//     FlickLower,
//     Config_Flick_in,
//     FlickUpper,
//     CGNoticeIntr,
//     D2_224,
//     D2_244,
//     D2_248,
//     D2_252,

//     DGyroBiasX,
//     DGyroBiasY,
//     DGyroBiasZ,
//     DAccBiasX,
//     DAccBiasY,
//     DAccBiasZ,
//     DGyroEnable,
//     DAccelEnable,
//     DQuatEnable,
//     DOutputEnable,
//     DCrTimeG,
//     DCrTimeA,
//     DCrTimeQ,
//     DCsTax,
//     DCsTay,
//     DCsTaz,
//     DCsTgx,
//     DCsTgy,
//     DCsTgz,
//     DCsTq0,
//     DCsTq1,
//     DCsTq2,
//     DCsTq3,

//     /* Compass keys */
//     CpassBiasX,
//     CpassBiasY,
//     CpassBiasZ,
//     CpassMtx_00,
//     CpassMtx_01,
//     CpassMtx_02,
//     CpassMtx_10,
//     CpassMtx_11,
//     CpassMtx_12,
//     CpassMtx_20,
//     CpassMtx_21,
//     CpassMtx_22,

//     /* Gesture Keys */
//     DmpTapWMin,
//     DmpTapThrX,
//     DmpTapThrY,
//     DmpTapThrZ,
//     DmpShThY,
//     DmpShThX,
//     DmpShThZ,
//     DmpOrient,
//     DAct0,
//     DAcsx,
//     DAcsy,
//     DAcsz,
//     XGRTYTemperature,
//     SkipX_grtYTmp,
//     SkipEnd_compare,
//     EndCompareYXTmp2,
//     Config_Android_orient_int,
//     NoOrient_interrupt,
//     EndCompareYXTmp,
//     EndOrient_1,
//     EndCompareYX,
//     EndOrient,
//     XGRTY,
//     NotTime_minus_1,
//     EndCompareYXTmp3,
//     XGRTYTemperature2,
//     /* Authenticate Keys */
//     DAuthOut,
//     DAuthIn,
//     DAuthA,
//     DAuthB,

//     /* Pedometer standalone only keys */
//     DPedstd_bp_b,
//     DPedstd_hp_a,
//     DPedstd_hp_b,
//     DPedstd_bp_a4,
//     DPedstd_bp_a3,
//     DPedstd_bp_a2,
//     DPedstd_bp_a1,
//     DPedstd_intThrsh,
//     DPedstd_clip,
//     DPedstd_sb,
//     DPedstd_sbTime,
//     DPedstd_peakthrsh,
//     DPedstdTiml,
//     DPedstdTimh,
//     DPedstd_peak,
//     DPedstdTimectr,
//     DPedstd_stepctr,
//     DPedstd_walktime,
//     DPedstd_deci,

//     /*Host Based No Motion*/
//     DHost_no_mot,

//     /* EIS keys */
//     DFifo_footer,
//     DFifoYshift,
//     DData_rate,
//     DFifoXshift,
//     DFifo_sync,
//     DFifoZshift,
//     DFifo_ready,
//     DmpFooter,
//     DmpIntx_hc,
//     DmpIntx_ph,
//     DmpIntx_sh,
//     DmpAinv_sh,
//     DmpA_invXh,
//     DmpAinv_ph,
//     DmpCthx_h,
//     DmpCthy_h,
//     DmpCthz_h,
//     DmpNcthx_h,
//     DmpNcthy_h,
//     DmpNcthz_h,
//     DmpCtsqXh,
//     DmpCtsqYh,
//     DmpCtsqZh,
//     DmpIntx_h,
//     DmpInty_h,
//     DmpIntz_h,
//     //    DmpHpx_h,
//     //    DmpHpy_h,
//     //    DmpHpz_h,

//     /* Stream keys */
//     StreamP_gyroZ,
//     StreamP_gyroY,
//     StreamP_gyroX,
//     StreamPTemp,
//     StreamP_auxY,
//     StreamP_auxX,
//     StreamP_auxZ,
//     StreamPAccelerometerY,
//     StreamPAccelerometerX,
//     StreamP_footer,
//     StreamPAccelerometerZ,

//     MaxKey,
// };

// enum Din {
//     A_00 = 0x00,
//     A_01 = 0x01,
//     A_04 = 0x04,
//     A_06 = 0x06,
//     A_08 = 0x08,
//     A_09 = 0x09,
//     A_0C = 0x0c,
//     A_0E = 0x0e,
//     A_10 = 0x10,
//     A_11 = 0x11,
//     A_14 = 0x14,
//     A_16 = 0x16,
//     A_18 = 0x18,
//     A_19 = 0x19,
//     A_1C = 0x1C,
//     A_1E = 0x1e,
//     A_20 = 0x20,
//     A_21 = 0x21,
//     A_22 = 0x22,
//     A_24 = 0x24,
//     A_25 = 0x25,
//     A_26 = 0x26,
//     A_28 = 0x28,
//     A_29 = 0x29,
//     A_2C = 0x2c,
//     A_2D = 0x2d,
//     A_2E = 0x2e,
//     A_30 = 0x30,
//     A_31 = 0x31,
//     A_34 = 0x34,
//     A_35 = 0x35,
//     A_36 = 0x36,
//     A_38 = 0x38,
//     A_39 = 0x39,
//     A_3C = 0x3c,
//     A_3D = 0x3d,
//     A_3E = 0x3e,
//     A_40 = 0x40,
//     A_41 = 0x41,
//     A_42 = 0x42,
//     A_44 = 0x44,
//     A_46 = 0x46,
//     A_48 = 0x48,
//     A_49 = 0x49,
//     A_4C = 0x4c,
//     A_4D = 0x4d,
//     A_4E = 0x4e,
//     A_50 = 0x50,
//     A_51 = 0x51,
//     A_54 = 0x54,
//     A_55 = 0x55,
//     A_56 = 0x56,
//     A_58 = 0x58,
//     A_59 = 0x59,
//     A_5A = 0x5a,
//     A_5C = 0x5c,
//     A_5D = 0x5D,
//     A_5E = 0x5e,
//     A_60 = 0x60,
//     A_61 = 0x61,
//     A_64 = 0x64,
//     A_66 = 0x66,
//     A_68 = 0x68,
//     A_69 = 0x69,
//     A_6C = 0x6c,
//     A_6D = 0x6d,
//     A_6E = 0x6e,
//     A_70 = 0x70,
//     A_71 = 0x71,
//     A_74 = 0x74,
//     A_75 = 0x75,
//     A_76 = 0x76,
//     A_78 = 0x78,
//     A_79 = 0x79,
//     A_7C = 0x7c,
//     A_7D = 0x7d,
//     A_7E = 0x7e,
//     A_80 = 0x80,
//     A_8B = 0x8b,
//     A_90 = 0x90,
//     A_91 = 0x91,
//     A_A0 = 0xa0,
//     A_A3 = 0xa3,
//     A_AA = 0xaa,
//     A_AB = 0xab,
//     A_B1 = 0xb1,
//     A_B4 = 0xb4,
//     A_B6 = 0xb6,
//     A_B9 = 0xb9,
//     A_C0 = 0xb0,
//     A_C1 = 0xb1,
//     A_C2 = 0xb4,
//     A_C3 = 0xb5,
//     A_C4 = 0xb8,
//     A_C5 = 0xb9,
//     A_C8 = 0xc8,
//     A_C9 = 0xc9,
//     A_CA = 0xca,
//     A_CB = 0xcb,
//     A_CC = 0xcc,
//     A_CD = 0xcd,
//     A_CE = 0xce,
//     A_CF = 0xcf,
//     A_D8 = 0xd8,
//     A_DA = 0xda,
//     A_DC = 0xdc,
//     A_DD = 0xdd,
//     A_DF = 0xdf,
//     A_F1 = 0xf1,
//     A_F2 = 0xf2,
//     A_F3 = 0xf3,
//     A_F8 = 0xf0,
//     A_FE = 0xfe,

//     B_C0 = 0xc0,
//     B_C2 = 0xc2,
//     B_C4 = 0xc4,
//     B_C6 = 0xc6,
//     B_F8 = 0xf8,

//     C_00 = 0x00,
//     C_01 = 0x01,
//     C_02 = 0x02,
//     C_03 = 0x03,
//     C_08 = 0x08,
//     C_09 = 0x09,
//     C_0A = 0x0a,
//     C_0B = 0x0b,
//     C_10 = 0x10,
//     C_11 = 0x11,
//     C_12 = 0x12,
//     C_13 = 0x13,
//     C_18 = 0x18,
//     C_19 = 0x19,
//     C_1A = 0x1a,
//     C_1B = 0x1b,
//     C_20 = 0x20,
//     C_21 = 0x21,
//     C_22 = 0x22,
//     C_23 = 0x23,
//     C_28 = 0x28,
//     C_29 = 0x29,
//     C_2A = 0x2a,
//     C_2B = 0x2b,
//     C_30 = 0x30,
//     C_31 = 0x31,
//     C_32 = 0x32,
//     C_33 = 0x33,
//     C_38 = 0x38,
//     C_39 = 0x39,
//     C_3A = 0x3a,
//     C_3B = 0x3b,
//     C_40 = 0x40,
//     C_41 = 0x41,
//     C_42 = 0x42,
//     C_43 = 0x43,
//     C_48 = 0x48,
//     C_49 = 0x49,
//     C_4A = 0x4a,
//     C_4B = 0x4b,
//     C_50 = 0x50,
//     C_51 = 0x51,
//     C_52 = 0x52,
//     C_53 = 0x53,
//     C_58 = 0x58,
//     C_59 = 0x59,
//     C_5A = 0x5a,
//     C_5B = 0x5b,
//     C_60 = 0x60,
//     C_61 = 0x61,
//     C_62 = 0x62,
//     C_63 = 0x63,
//     C_68 = 0x68,
//     C_69 = 0x69,
//     C_6A = 0x6a,
//     C_6B = 0x6b,
//     C_70 = 0x70,
//     C_71 = 0x71,
//     C_72 = 0x72,
//     C_73 = 0x73,
//     C_78 = 0x78,
//     C_79 = 0x79,
//     C_7A = 0x7a,
//     C_7B = 0x7b,

//     D_40 = 0x40,
// }; */
} // namespace MPU6050Regs