Skip to content

feat: ScanList entity + DM32 Scan.csv import/export #125

Description

@pskillen

Problem

DM32 CPS exports a separate Scan.csv (scan lists) with channel Scan List FK columns. The internal codeplug model has no ScanList entity today — zones serve as the scan unit on OpenGD77 only.

#67 (DM32 import/export) deliberately defers scan lists so the first DM32 slice can ship channels, zones, contacts, talk groups, and RX group lists.

Intended outcome

Add a vendor-neutral ScanList entity and wire it through import/export for DM32 (and future formats with separate scan-list files).

Internal model (proposed)

interface ScanList {
  id: string;
  name: string;
  memberChannelIds: string[];
  priorityChannel1Id: string | null;
  priorityChannel2Id: string | null;
  designedTxChannelId: string | null;  // resume channel on scan stop
  hangTimeMs: number | null;
  prioritySweepTimeMs: number | null;
  talkback: boolean;
  digitalScanMode: 'talkgroup' | 'time-slot' | 'carrier';
  analogScanMode: string;   // TBA
  scanTxMode: 'current-channel' | 'last-activated-channel' | 'designated-channel' | ;
  meta?: EntityMeta;
}

// Channel addition
scanListId: string | null;

DM32 wire

File Role
Scan.csv Scan list definitions (11 columns, 16-member cap)
Channels.csv Scan List column FK to scan list name

Reference: dmr-programming dm32-codeplug-csv skill.

Deliverables

  • Data model + schema migration + merge/import resolution (mirror Zone member pattern)
  • ImportEntityKind: 'scanLists' + adapter parseScanLists?
  • DM32 import/export for Scan.csv + channel Scan List column
  • Tier-3 reference: docs/reference/dm32/scan-lists.md
  • Round-trip: Scan.csv + channel Scan List column in dm32RoundTrip.system.test.ts
  • CRUD UI for scan lists (optional follow-up if import/export lands first)

Dependencies

  • Blocks full verbatim round-trip of DM32 Scan.csv on #67
  • Related: #67

Out of scope

  • OpenGD77 scan semantics (zone = scan on 1701)
  • Scan list policy / layout automation in dmr-programming

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestradio-format-supportsupport for 3rd party radio formats - import/export, etc

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions