スキル一覧に戻る
JAremko

protobuf

by JAremko

0🍴 1📅 2026年1月20日
GitHubで見るManusで実行

SKILL.md


name: protobuf description: Helps with protobuf messages, updating proto submodules, and understanding the JonGUIState structure. Use when working with proto files, message fields, or state data. allowed-tools: Read, Bash, Glob, Grep

Protobuf Integration

Assists with protobuf messages and submodule management.

Submodule Structure

Proto definitions are git submodules (auto-updated by protogen CI):

proto/c/   -> jettison_proto_c (C nanopb bindings)
proto/ts/  -> jettison_proto_typescript (TypeScript ts-proto)

Source files: src/proto/ (synced from proto/c/)

Updating Protos

# From host
./tools/devcontainer-build.sh proto

# Inside container
make proto

This updates submodules to latest and syncs to src/proto/.

Key Message: JonGUIState

The main protobuf message containing all OSD state:

actual_space_time (Primary Orientation)

message ActualSpaceTime {
  float azimuth;     // Navball yaw
  float elevation;   // Navball pitch
  float bank;        // Navball roll
  double latitude;   // Observer location
  double longitude;
  double altitude;
  int64 timestamp;   // For celestial calculations
}

compass (Alternative Orientation)

message Compass {
  float azimuth;    // 0-360
  float elevation;  // -90 to 90
  float bank;       // -180 to 180
}

rotary (Speed Indicators)

message Rotary {
  float azimuth_speed;    // Normalized -1.0 to 1.0
  float elevation_speed;  // Normalized -1.0 to 1.0
  bool is_moving;         // Show indicators only when true
}

time (Timestamp Display)

message Time {
  int64 timestamp;  // Unix epoch for HH:MM:SS UTC
}

rec_osd (Crosshair Offsets)

message RecOsd {
  int32 day_crosshair_offset_x;
  int32 day_crosshair_offset_y;
  int32 heat_crosshair_offset_x;
  int32 heat_crosshair_offset_y;
}

Frame Timing

int64 system_monotonic_time_us;   // State update time
int64 frame_monotonic_day_us;     // Day camera frame time
int64 frame_monotonic_heat_us;    // Thermal camera frame time

State Access

State is accessed via src/osd_state.h which hides protobuf details:

float osd_state_get_azimuth(const osd_state_t *state);
float osd_state_get_elevation(const osd_state_t *state);
bool osd_state_is_moving(const osd_state_t *state);
// etc.

Proto Files in src/proto/

  • jon_shared_data.pb.h - Main JonGUIState
  • jon_shared_data_actual_space_time.pb.h - Orientation
  • jon_shared_data_rotary.pb.h - Speed data
  • jon_shared_data_rec_osd.pb.h - Crosshair offsets
  • pb.h, pb_decode.c/h, pb_encode.h - nanopb runtime

スコア

総合スコア

60/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です