Skip to content

Commit

Permalink
PowerMon initial protobufs
Browse files Browse the repository at this point in the history
  • Loading branch information
geeksville committed Jun 21, 2024
1 parent 1c3029f commit 97138a7
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
6 changes: 6 additions & 0 deletions meshtastic/config.proto
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,12 @@ message Config {
* I2C address of INA_2XX to use for reading device battery voltage
*/
uint32 device_battery_ina_address = 9;

/*
* If non-zero, we want powermon log outputs. With the particular (bitfield) sources enabled.
* Note: we picked an ID of 32 so that lower more efficient IDs can be used for more frequently used options.
*/
uint64 powermon_enables = 32;
}

/*
Expand Down
54 changes: 54 additions & 0 deletions meshtastic/powermon.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
syntax = "proto3";

option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "PowerMonProtos";
option java_package = "com.geeksville.mesh";
option swift_prefix = "";

package meshtastic.PowerMon;

/* Any significant power changing event in meshtastic should be tagged with a powermon state transition.
If you are making new meshtastic features feel free to add new entries at the end of this definition.
*/
enum State {
None = 0;

CPU_DeepSleep = 0x01;
CPU_LightSleep = 0x02;

/*
The external Vext1 power is on. Many boards have auxillary power rails that the CPU turns on only
occasionally. In cases where that rail has multiple devices on it we usually want to have logging on
the state of that rail as an independent record.
For instance on the Heltec Tracker 1.1 board, this rail is the power source for the GPS and screen.
*/
Vext1_On = 0x04;

Lora_RXOn = 0x08;
Lora_TXOn = 0x10;
Lora_RXActive = 0x20;
BT_On = 0x40;
LED_On = 0x80;

Screen_On = 0x100;
Screen_Drawing = 0x200;
Wifi_On = 0x400;

/*
GPS is actively trying to find our location
See GPSPowerState for more details
*/
GPS_Active = 0x800;
}

/*
the log messages will be short and complete (see PowerMon.Event in the protobufs for details).
something like "PwrMon,C,0x00001234,REASON" where the hex number is the bitmask of all current states.
(We use a bitmask for states so that if a log message gets lost it won't be fatal)
*/
message Event {

// Bitwise-OR of States
optional uint64 states = 1;
}

0 comments on commit 97138a7

Please sign in to comment.