syntax = "proto3"; option java_package = "com.geeksville.mesh"; option optimize_for = LITE_RUNTIME; option go_package = "github.com/meshtastic/gomeshproto"; option java_outer_classname = "ChannelProtos"; /* * Full settings (center freq, spread factor, pre-shared secret key etc...) * needed to configure a radio for speaking on a particular channel This * information can be encoded as a QRcode/url so that other users can configure * their radio to join the same channel. * A note about how channel names are shown to users: channelname-Xy * poundsymbol is a prefix used to indicate this is a channel name (idea from @professr). * Where X is a letter from A-Z (base 26) representing a hash of the PSK for this * channel - so that if the user changes anything about the channel (which does * force a new PSK) this letter will also change. Thus preventing user confusion if * two friends try to type in a channel name of "BobsChan" and then can't talk * because their PSKs will be different. * The PSK is hashed into this letter by "0x41 + [xor all bytes of the psk ] modulo 26" * This also allows the option of someday if people have the PSK off (zero), the * users COULD type in a channel name and be able to talk. * Y is a lower case letter from a-z that represents the channel 'speed' settings * (for some future definition of speed) * FIXME: Add description of multi-channel support and how primary vs secondary channels are used. * FIXME: explain how apps use channels for security. * explain how remote settings and remote gpio are managed as an example */ message ChannelSettings { /* * If zero then, use default max legal continuous power (ie. something that won't * burn out the radio hardware) * In most cases you should use zero here. * Units are in dBm. */ int32 tx_power = 1; /* * Standard predefined channel settings * Note: these mappings must match ModemConfigChoice in the device code. */ enum ModemConfig { /* * TODO: REPLACE */ VLongSlow = 0; /* * TODO: REPLACE */ LongSlow = 1; /* * TODO: REPLACE */ LongFast = 2; /* * TODO: REPLACE */ MidSlow = 3; /* * TODO: REPLACE */ MidFast = 4; /* * TODO: REPLACE */ ShortSlow = 5; /* * TODO: REPLACE */ ShortFast = 6; } /* * Note: This is the 'old' mechanism for specifying channel parameters. * Either modem_config or bandwidth/spreading/coding will be specified - NOT BOTH. * As a heuristic: If bandwidth is specified, do not use modem_config. * Because protobufs take ZERO space when the value is zero this works out nicely. * This value is replaced by bandwidth/spread_factor/coding_rate. * If you'd like to experiment with other options add them to MeshRadio.cpp in the device code. */ ModemConfig modem_config = 3; /* * Bandwidth in MHz * Certain bandwidth numbers are 'special' and will be converted to the * appropriate floating point value: 31 -> 31.25MHz */ uint32 bandwidth = 6; /* * A number from 7 to 12. * Indicates number of chirps per symbol as 1<