Mer/Documentation/BME Protocol
(New page: This documentation is entirely for the purpose of implementing software gathering battery information, not alteration of battery management state. General protocol, published https://gara...) |
|||
| Line 1: | Line 1: | ||
| - | This documentation is entirely for the purpose of implementing software gathering battery information, not alteration of battery management state. | + | This documentation is entirely for the purpose of implementing software gathering battery information on Nokia Internet Tablets, not alteration of battery management state. |
General protocol, published https://garage.maemo.org/plugins/scmsvn/viewcvs.php/dsme/trunk/adhoc/dummy_bme.c?revision=155&root=dsm&view=markup , released as LGPL 2.1 | General protocol, published https://garage.maemo.org/plugins/scmsvn/viewcvs.php/dsme/trunk/adhoc/dummy_bme.c?revision=155&root=dsm&view=markup , released as LGPL 2.1 | ||
| Line 7: | Line 7: | ||
* Server: send('\n') | * Server: send('\n') | ||
| - | + | After handshake: | |
| - | < | + | <pre> |
typedef struct { | typedef struct { | ||
uint16 type, subtype; | uint16 type, subtype; | ||
} BMEHeader; | } BMEHeader; | ||
| - | </ | + | </pre> |
types so far (NAME, (type, subtype)): | types so far (NAME, (type, subtype)): | ||
| Line 19: | Line 19: | ||
== EM_BATTERY_INFO_REQ (0x06, 0x00) == | == EM_BATTERY_INFO_REQ (0x06, 0x00) == | ||
| - | < | + | <pre> |
typedef struct { | typedef struct { | ||
BMEHeader header; | BMEHeader header; | ||
| - | u_int32_t flags; | + | u_int32_t flags; // Set to 0xFFFFFFFF to get all data |
} BME_EM_BATTERY_INFO_Req; | } BME_EM_BATTERY_INFO_Req; | ||
| Line 30: | Line 30: | ||
uint16 c; | uint16 c; | ||
uint16 d; | uint16 d; | ||
| - | uint16 temp; | + | uint16 temp; // Battery temperature measured in Kelvin |
uint16 f; | uint16 f; | ||
uint16 g; | uint16 g; | ||
| Line 39: | Line 39: | ||
uint16 l; | uint16 l; | ||
}; | }; | ||
| - | </ | + | </pre> |
| + | |||
| + | == Some BULK0 message (0x42, 0x00) == | ||
| + | |||
| + | <pre> | ||
| + | typedef struct { | ||
| + | BMEHeader header; | ||
| + | u_int32_t flags; // Set to 0xFFFFFFFF to get all data | ||
| + | } BME_EM_BULK_Req; | ||
| + | |||
| + | struct emsg_bme_bulk_reply { | ||
| + | uint32 unknown1; | ||
| + | uint32 unknown2; | ||
| + | uint32 unknown3; | ||
| + | uint16 sw_status; // Battery monitor SW status | ||
| + | uint16 instaneous_battery_voltage; // Instantaneous battery voltage (mV) | ||
| + | uint16 // Remaining standby time to battery low (mins) | ||
| + | uint16 unknown4; | ||
| + | uint16 unknown5; | ||
| + | uint16 unknown6; | ||
| + | uint16 // Battery monitor check voltage (mV) | ||
| + | uint16 // Battery low warning interval counter | ||
| + | uint16 // Double median filtered battery voltage | ||
| + | uint16 // Initial battery monitor voltage (mV) | ||
| + | uint16 // Time per battery bar (mins) | ||
| + | uint16 // DMF voltage sampled at first battery low (mV) | ||
| + | uint32 // Average phone current (uA) | ||
| + | uint16 // Most recent battery charge condition (mAh) | ||
| + | uint16 // Lowest TX-Off voltage (mV) | ||
| + | uint16 // Lowest TX-On voltage (mV) | ||
| + | uint16 // Largest TX-Off/On voltage difference (mV) | ||
| + | uint8 // Battery bar level log mask | ||
| + | uint8 // Previous battery bar level | ||
| + | uint8 // Battery low reason | ||
| + | uint8 // CS state information | ||
| + | uint16 // Number of battery bars | ||
| + | uint16 // Battery type | ||
| + | uint16 // Temperature, in kelvin | ||
| + | uint16 // Battery capacity | ||
| + | uint16 // Battery impedance (mOhm) | ||
| + | uint16 // Present value of v_bat_full_level | ||
| + | uint16 // Present value of v_bat_low_ths_mv | ||
| + | uint16 unknown7; | ||
| + | uint16 unknown8; | ||
| + | uint16 unknown9; | ||
| + | uint16 // Load current estimated by Batmon4 (uA) | ||
| + | uint16 unknown10; | ||
| + | }; | ||
| + | </pre> | ||
Revision as of 15:44, 7 February 2009
This documentation is entirely for the purpose of implementing software gathering battery information on Nokia Internet Tablets, not alteration of battery management state.
General protocol, published https://garage.maemo.org/plugins/scmsvn/viewcvs.php/dsme/trunk/adhoc/dummy_bme.c?revision=155&root=dsm&view=markup , released as LGPL 2.1
- UNIX socket connection to /tmp/.bmesrv
- Client: send('BMentity')
- Server: send('\n')
After handshake:
typedef struct {
uint16 type, subtype;
} BMEHeader;
types so far (NAME, (type, subtype)):
EM_BATTERY_INFO_REQ (0x06, 0x00)
typedef struct {
BMEHeader header;
u_int32_t flags; // Set to 0xFFFFFFFF to get all data
} BME_EM_BATTERY_INFO_Req;
struct emsg_battery_info_reply {
uint32 a;
uint32 flags;
uint16 c;
uint16 d;
uint16 temp; // Battery temperature measured in Kelvin
uint16 f;
uint16 g;
uint16 h;
uint16 i;
uint16 j;
uint16 k;
uint16 l;
};
Some BULK0 message (0x42, 0x00)
typedef struct {
BMEHeader header;
u_int32_t flags; // Set to 0xFFFFFFFF to get all data
} BME_EM_BULK_Req;
struct emsg_bme_bulk_reply {
uint32 unknown1;
uint32 unknown2;
uint32 unknown3;
uint16 sw_status; // Battery monitor SW status
uint16 instaneous_battery_voltage; // Instantaneous battery voltage (mV)
uint16 // Remaining standby time to battery low (mins)
uint16 unknown4;
uint16 unknown5;
uint16 unknown6;
uint16 // Battery monitor check voltage (mV)
uint16 // Battery low warning interval counter
uint16 // Double median filtered battery voltage
uint16 // Initial battery monitor voltage (mV)
uint16 // Time per battery bar (mins)
uint16 // DMF voltage sampled at first battery low (mV)
uint32 // Average phone current (uA)
uint16 // Most recent battery charge condition (mAh)
uint16 // Lowest TX-Off voltage (mV)
uint16 // Lowest TX-On voltage (mV)
uint16 // Largest TX-Off/On voltage difference (mV)
uint8 // Battery bar level log mask
uint8 // Previous battery bar level
uint8 // Battery low reason
uint8 // CS state information
uint16 // Number of battery bars
uint16 // Battery type
uint16 // Temperature, in kelvin
uint16 // Battery capacity
uint16 // Battery impedance (mOhm)
uint16 // Present value of v_bat_full_level
uint16 // Present value of v_bat_low_ths_mv
uint16 unknown7;
uint16 unknown8;
uint16 unknown9;
uint16 // Load current estimated by Batmon4 (uA)
uint16 unknown10;
};
