third_party.pigweed.src/pw_snapshot/pw_snapshot_protos/snapshot_metadata.proto
Armando Montanez 179aa8eab0 pw_snapshot: Add snapshot proto
Initial commit for the pw_snapshot module that introduces the proto
format for device snapshots, and documentation that introduces the
pw_snapshot module and how to use it.

Change-Id: I63e12d245073e82de03be995a001a0ee0cc1f443
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/38103
Commit-Queue: Armando Montanez <amontanez@google.com>
Reviewed-by: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: David Rogers <davidrogers@google.com>
2021-04-30 22:46:47 +00:00

85 lines
2.7 KiB
Protocol Buffer

// Copyright 2021 The Pigweed Authors
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
syntax = "proto3";
package pw.snapshot;
option java_package = "pw.snapshot.proto";
option java_outer_classname = "Snapshot";
message CpuArchitecture {
enum Enum {
UNKNOWN = 0;
ARMV6M = 1;
ARMV7M = 2;
ARMV8M = 3;
}
}
message Metadata {
// A relatively unique descriptive reason for what triggered the snapshot
// capture. This should either be human readable text, or tokenized data
// (e.g. base-64 encoded or binary data).
//
// Examples:
// Null-pointer dereference
// [main.cc:22] True is not false!
// STACK_OVERFLOW
bytes reason = 1;
// Whether or not the snapshot was captured due to a crash of some kind.
bool fatal = 2;
// Project name to assist in identifying where to redirect this snapshot. A
// single project might have multiple devices that can produce snapshots.
bytes project_name = 3;
// Version characters must be alphanumeric, punctuation, and space. This
// string is case-sensitive. This should either be human readable text, or
// tokenized data.
//
// Examples:
// "codename-local-[build_id]"
// "codename-release-193"
bytes software_version = 4;
// UUID associated with the build for the software version.
bytes software_build_uuid = 5;
// String containing the specific device name. This should be as specific as
// possible, detailing hardware revision, and distinguishing different cores
// in a multi-core device. Snapshots aggregated as related_snapshots should
// include information that distinguishes the source of the snapshot. This
// should either be human readable text, or tokenized data.
//
// Examples:
// "propellerhat-evk"
// "gshoe-sensor-core-pvt"
// "alarm-clock-dsp-p1"
bytes device_name = 6;
// 128-bit UUID for this snapshot, used to help with de-duplication.
bytes snapshot_uuid = 7;
// The architecture of the CPU that generated this report.
CpuArchitecture.Enum cpu_arch = 8;
}
// This message overlays the pw.snapshot.Snapshot proto. It's valid to encode
// this message to the same sink that a Snapshot proto is being written to.
message SnapshotBasicInfo {
Metadata metadata = 16;
map<string, string> tags = 17;
}