// 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 tags = 17; }