// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v5.29.3
// source: meshtastic/powermon.proto

package meshtastic

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// 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.
type PowerMon_State int32

const (
	PowerMon_None           PowerMon_State = 0
	PowerMon_CPU_DeepSleep  PowerMon_State = 1
	PowerMon_CPU_LightSleep PowerMon_State = 2
	// 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.
	//
	// The log messages will be short and complete (see PowerMon.Event in the protobufs for details).
	// something like "S:PM: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)
	PowerMon_Vext1_On       PowerMon_State = 4
	PowerMon_Lora_RXOn      PowerMon_State = 8
	PowerMon_Lora_TXOn      PowerMon_State = 16
	PowerMon_Lora_RXActive  PowerMon_State = 32
	PowerMon_BT_On          PowerMon_State = 64
	PowerMon_LED_On         PowerMon_State = 128
	PowerMon_Screen_On      PowerMon_State = 256
	PowerMon_Screen_Drawing PowerMon_State = 512
	PowerMon_Wifi_On        PowerMon_State = 1024
	// GPS is actively trying to find our location
	// See GPSPowerState for more details
	PowerMon_GPS_Active PowerMon_State = 2048
)

// Enum value maps for PowerMon_State.
var (
	PowerMon_State_name = map[int32]string{
		0:    "None",
		1:    "CPU_DeepSleep",
		2:    "CPU_LightSleep",
		4:    "Vext1_On",
		8:    "Lora_RXOn",
		16:   "Lora_TXOn",
		32:   "Lora_RXActive",
		64:   "BT_On",
		128:  "LED_On",
		256:  "Screen_On",
		512:  "Screen_Drawing",
		1024: "Wifi_On",
		2048: "GPS_Active",
	}
	PowerMon_State_value = map[string]int32{
		"None":           0,
		"CPU_DeepSleep":  1,
		"CPU_LightSleep": 2,
		"Vext1_On":       4,
		"Lora_RXOn":      8,
		"Lora_TXOn":      16,
		"Lora_RXActive":  32,
		"BT_On":          64,
		"LED_On":         128,
		"Screen_On":      256,
		"Screen_Drawing": 512,
		"Wifi_On":        1024,
		"GPS_Active":     2048,
	}
)

func (x PowerMon_State) Enum() *PowerMon_State {
	p := new(PowerMon_State)
	*p = x
	return p
}

func (x PowerMon_State) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PowerMon_State) Descriptor() protoreflect.EnumDescriptor {
	return file_meshtastic_powermon_proto_enumTypes[0].Descriptor()
}

func (PowerMon_State) Type() protoreflect.EnumType {
	return &file_meshtastic_powermon_proto_enumTypes[0]
}

func (x PowerMon_State) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PowerMon_State.Descriptor instead.
func (PowerMon_State) EnumDescriptor() ([]byte, []int) {
	return file_meshtastic_powermon_proto_rawDescGZIP(), []int{0, 0}
}

// What operation would we like the UUT to perform.
// note: senders should probably set want_response in their request packets, so that they can know when the state
// machine has started processing their request
type PowerStressMessage_Opcode int32

const (
	// Unset/unused
	PowerStressMessage_UNSET         PowerStressMessage_Opcode = 0
	PowerStressMessage_PRINT_INFO    PowerStressMessage_Opcode = 1   // Print board version slog and send an ack that we are alive and ready to process commands
	PowerStressMessage_FORCE_QUIET   PowerStressMessage_Opcode = 2   // Try to turn off all automatic processing of packets, screen, sleeping, etc (to make it easier to measure in isolation)
	PowerStressMessage_END_QUIET     PowerStressMessage_Opcode = 3   // Stop powerstress processing - probably by just rebooting the board
	PowerStressMessage_SCREEN_ON     PowerStressMessage_Opcode = 16  // Turn the screen on
	PowerStressMessage_SCREEN_OFF    PowerStressMessage_Opcode = 17  // Turn the screen off
	PowerStressMessage_CPU_IDLE      PowerStressMessage_Opcode = 32  // Let the CPU run but we assume mostly idling for num_seconds
	PowerStressMessage_CPU_DEEPSLEEP PowerStressMessage_Opcode = 33  // Force deep sleep for FIXME seconds
	PowerStressMessage_CPU_FULLON    PowerStressMessage_Opcode = 34  // Spin the CPU as fast as possible for num_seconds
	PowerStressMessage_LED_ON        PowerStressMessage_Opcode = 48  // Turn the LED on for num_seconds (and leave it on - for baseline power measurement purposes)
	PowerStressMessage_LED_OFF       PowerStressMessage_Opcode = 49  // Force the LED off for num_seconds
	PowerStressMessage_LORA_OFF      PowerStressMessage_Opcode = 64  // Completely turn off the LORA radio for num_seconds
	PowerStressMessage_LORA_TX       PowerStressMessage_Opcode = 65  // Send Lora packets for num_seconds
	PowerStressMessage_LORA_RX       PowerStressMessage_Opcode = 66  // Receive Lora packets for num_seconds (node will be mostly just listening, unless an external agent is helping stress this by sending packets on the current channel)
	PowerStressMessage_BT_OFF        PowerStressMessage_Opcode = 80  // Turn off the BT radio for num_seconds
	PowerStressMessage_BT_ON         PowerStressMessage_Opcode = 81  // Turn on the BT radio for num_seconds
	PowerStressMessage_WIFI_OFF      PowerStressMessage_Opcode = 96  // Turn off the WIFI radio for num_seconds
	PowerStressMessage_WIFI_ON       PowerStressMessage_Opcode = 97  // Turn on the WIFI radio for num_seconds
	PowerStressMessage_GPS_OFF       PowerStressMessage_Opcode = 112 // Turn off the GPS radio for num_seconds
	PowerStressMessage_GPS_ON        PowerStressMessage_Opcode = 113 // Turn on the GPS radio for num_seconds
)

// Enum value maps for PowerStressMessage_Opcode.
var (
	PowerStressMessage_Opcode_name = map[int32]string{
		0:   "UNSET",
		1:   "PRINT_INFO",
		2:   "FORCE_QUIET",
		3:   "END_QUIET",
		16:  "SCREEN_ON",
		17:  "SCREEN_OFF",
		32:  "CPU_IDLE",
		33:  "CPU_DEEPSLEEP",
		34:  "CPU_FULLON",
		48:  "LED_ON",
		49:  "LED_OFF",
		64:  "LORA_OFF",
		65:  "LORA_TX",
		66:  "LORA_RX",
		80:  "BT_OFF",
		81:  "BT_ON",
		96:  "WIFI_OFF",
		97:  "WIFI_ON",
		112: "GPS_OFF",
		113: "GPS_ON",
	}
	PowerStressMessage_Opcode_value = map[string]int32{
		"UNSET":         0,
		"PRINT_INFO":    1,
		"FORCE_QUIET":   2,
		"END_QUIET":     3,
		"SCREEN_ON":     16,
		"SCREEN_OFF":    17,
		"CPU_IDLE":      32,
		"CPU_DEEPSLEEP": 33,
		"CPU_FULLON":    34,
		"LED_ON":        48,
		"LED_OFF":       49,
		"LORA_OFF":      64,
		"LORA_TX":       65,
		"LORA_RX":       66,
		"BT_OFF":        80,
		"BT_ON":         81,
		"WIFI_OFF":      96,
		"WIFI_ON":       97,
		"GPS_OFF":       112,
		"GPS_ON":        113,
	}
)

func (x PowerStressMessage_Opcode) Enum() *PowerStressMessage_Opcode {
	p := new(PowerStressMessage_Opcode)
	*p = x
	return p
}

func (x PowerStressMessage_Opcode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (PowerStressMessage_Opcode) Descriptor() protoreflect.EnumDescriptor {
	return file_meshtastic_powermon_proto_enumTypes[1].Descriptor()
}

func (PowerStressMessage_Opcode) Type() protoreflect.EnumType {
	return &file_meshtastic_powermon_proto_enumTypes[1]
}

func (x PowerStressMessage_Opcode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use PowerStressMessage_Opcode.Descriptor instead.
func (PowerStressMessage_Opcode) EnumDescriptor() ([]byte, []int) {
	return file_meshtastic_powermon_proto_rawDescGZIP(), []int{1, 0}
}

// Note: There are no 'PowerMon' messages normally in use (PowerMons are sent only as structured logs - slogs).
// But we wrap our State enum in this message to effectively nest a namespace (without our linter yelling at us)
type PowerMon struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PowerMon) Reset() {
	*x = PowerMon{}
	mi := &file_meshtastic_powermon_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PowerMon) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PowerMon) ProtoMessage() {}

func (x *PowerMon) ProtoReflect() protoreflect.Message {
	mi := &file_meshtastic_powermon_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PowerMon.ProtoReflect.Descriptor instead.
func (*PowerMon) Descriptor() ([]byte, []int) {
	return file_meshtastic_powermon_proto_rawDescGZIP(), []int{0}
}

// PowerStress testing support via the C++ PowerStress module
type PowerStressMessage struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// What type of HardwareMessage is this?
	Cmd           PowerStressMessage_Opcode `protobuf:"varint,1,opt,name=cmd,proto3,enum=meshtastic.PowerStressMessage_Opcode" json:"cmd,omitempty"`
	NumSeconds    float32                   `protobuf:"fixed32,2,opt,name=num_seconds,json=numSeconds,proto3" json:"num_seconds,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PowerStressMessage) Reset() {
	*x = PowerStressMessage{}
	mi := &file_meshtastic_powermon_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PowerStressMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PowerStressMessage) ProtoMessage() {}

func (x *PowerStressMessage) ProtoReflect() protoreflect.Message {
	mi := &file_meshtastic_powermon_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PowerStressMessage.ProtoReflect.Descriptor instead.
func (*PowerStressMessage) Descriptor() ([]byte, []int) {
	return file_meshtastic_powermon_proto_rawDescGZIP(), []int{1}
}

func (x *PowerStressMessage) GetCmd() PowerStressMessage_Opcode {
	if x != nil {
		return x.Cmd
	}
	return PowerStressMessage_UNSET
}

func (x *PowerStressMessage) GetNumSeconds() float32 {
	if x != nil {
		return x.NumSeconds
	}
	return 0
}

var File_meshtastic_powermon_proto protoreflect.FileDescriptor

const file_meshtastic_powermon_proto_rawDesc = "" +
	"\n" +
	"\x19meshtastic/powermon.proto\x12\n" +
	"meshtastic\"\xe0\x01\n" +
	"\bPowerMon\"\xd3\x01\n" +
	"\x05State\x12\b\n" +
	"\x04None\x10\x00\x12\x11\n" +
	"\rCPU_DeepSleep\x10\x01\x12\x12\n" +
	"\x0eCPU_LightSleep\x10\x02\x12\f\n" +
	"\bVext1_On\x10\x04\x12\r\n" +
	"\tLora_RXOn\x10\b\x12\r\n" +
	"\tLora_TXOn\x10\x10\x12\x11\n" +
	"\rLora_RXActive\x10 \x12\t\n" +
	"\x05BT_On\x10@\x12\v\n" +
	"\x06LED_On\x10\x80\x01\x12\x0e\n" +
	"\tScreen_On\x10\x80\x02\x12\x13\n" +
	"\x0eScreen_Drawing\x10\x80\x04\x12\f\n" +
	"\aWifi_On\x10\x80\b\x12\x0f\n" +
	"\n" +
	"GPS_Active\x10\x80\x10\"\x90\x03\n" +
	"\x12PowerStressMessage\x127\n" +
	"\x03cmd\x18\x01 \x01(\x0e2%.meshtastic.PowerStressMessage.OpcodeR\x03cmd\x12\x1f\n" +
	"\vnum_seconds\x18\x02 \x01(\x02R\n" +
	"numSeconds\"\x9f\x02\n" +
	"\x06Opcode\x12\t\n" +
	"\x05UNSET\x10\x00\x12\x0e\n" +
	"\n" +
	"PRINT_INFO\x10\x01\x12\x0f\n" +
	"\vFORCE_QUIET\x10\x02\x12\r\n" +
	"\tEND_QUIET\x10\x03\x12\r\n" +
	"\tSCREEN_ON\x10\x10\x12\x0e\n" +
	"\n" +
	"SCREEN_OFF\x10\x11\x12\f\n" +
	"\bCPU_IDLE\x10 \x12\x11\n" +
	"\rCPU_DEEPSLEEP\x10!\x12\x0e\n" +
	"\n" +
	"CPU_FULLON\x10\"\x12\n" +
	"\n" +
	"\x06LED_ON\x100\x12\v\n" +
	"\aLED_OFF\x101\x12\f\n" +
	"\bLORA_OFF\x10@\x12\v\n" +
	"\aLORA_TX\x10A\x12\v\n" +
	"\aLORA_RX\x10B\x12\n" +
	"\n" +
	"\x06BT_OFF\x10P\x12\t\n" +
	"\x05BT_ON\x10Q\x12\f\n" +
	"\bWIFI_OFF\x10`\x12\v\n" +
	"\aWIFI_ON\x10a\x12\v\n" +
	"\aGPS_OFF\x10p\x12\n" +
	"\n" +
	"\x06GPS_ON\x10qB`\n" +
	"\x13com.geeksville.meshB\x0ePowerMonProtosZ\x1fmeshstream/generated/meshtastic\xaa\x02\x14Meshtastic.Protobufs\xba\x02\x00b\x06proto3"

var (
	file_meshtastic_powermon_proto_rawDescOnce sync.Once
	file_meshtastic_powermon_proto_rawDescData []byte
)

func file_meshtastic_powermon_proto_rawDescGZIP() []byte {
	file_meshtastic_powermon_proto_rawDescOnce.Do(func() {
		file_meshtastic_powermon_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_meshtastic_powermon_proto_rawDesc), len(file_meshtastic_powermon_proto_rawDesc)))
	})
	return file_meshtastic_powermon_proto_rawDescData
}

var file_meshtastic_powermon_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_meshtastic_powermon_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_meshtastic_powermon_proto_goTypes = []any{
	(PowerMon_State)(0),            // 0: meshtastic.PowerMon.State
	(PowerStressMessage_Opcode)(0), // 1: meshtastic.PowerStressMessage.Opcode
	(*PowerMon)(nil),               // 2: meshtastic.PowerMon
	(*PowerStressMessage)(nil),     // 3: meshtastic.PowerStressMessage
}
var file_meshtastic_powermon_proto_depIdxs = []int32{
	1, // 0: meshtastic.PowerStressMessage.cmd:type_name -> meshtastic.PowerStressMessage.Opcode
	1, // [1:1] is the sub-list for method output_type
	1, // [1:1] is the sub-list for method input_type
	1, // [1:1] is the sub-list for extension type_name
	1, // [1:1] is the sub-list for extension extendee
	0, // [0:1] is the sub-list for field type_name
}

func init() { file_meshtastic_powermon_proto_init() }
func file_meshtastic_powermon_proto_init() {
	if File_meshtastic_powermon_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_meshtastic_powermon_proto_rawDesc), len(file_meshtastic_powermon_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   2,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_meshtastic_powermon_proto_goTypes,
		DependencyIndexes: file_meshtastic_powermon_proto_depIdxs,
		EnumInfos:         file_meshtastic_powermon_proto_enumTypes,
		MessageInfos:      file_meshtastic_powermon_proto_msgTypes,
	}.Build()
	File_meshtastic_powermon_proto = out.File
	file_meshtastic_powermon_proto_goTypes = nil
	file_meshtastic_powermon_proto_depIdxs = nil
}
