Source Code

(define-constant contract-owner tx-sender)
(define-constant err-owner-only (err u100))
(define-constant err-not-found (err u101))

(define-map sbas-stations
  (string-ascii 32)
  {
    station-name: (string-ascii 128),
    latitude: int,
    longitude: int,
    coverage-region: (string-ascii 64),
    operational: bool
  })

(define-map sbas-corrections
  uint
  {
    station-id: (string-ascii 32),
    satellite-id: (string-ascii 32),
    correction-value: int,
    ionospheric-delay: uint,
    timestamp: uint,
    validity-period: uint
  })

(define-map sbas-receivers
  principal
  {
    receiver-id: (string-ascii 32),
    corrections-applied: uint,
    accuracy-improvement: uint,
    last-update: uint
  })

(define-data-var next-correction-id uint u0)

(define-read-only (get-station (station-id (string-ascii 32)))
  (ok (map-get? sbas-stations station-id)))

(define-public (register-sbas-station (station-id (string-ascii 32)) (name (string-ascii 128)) (lat int) (lon int) (region (string-ascii 64)))
  (begin
    (asserts! (is-eq tx-sender contract-owner) err-owner-only)
    (ok (map-set sbas-stations station-id
      {station-name: name, latitude: lat, longitude: lon, coverage-region: region, operational: true}))))

(define-public (broadcast-correction (station (string-ascii 32)) (satellite (string-ascii 32)) (correction int) (iono uint) (validity uint))
  (let ((correction-id (var-get next-correction-id)))
    (map-set sbas-corrections correction-id
      {station-id: station, satellite-id: satellite, correction-value: correction,
       ionospheric-delay: iono, timestamp: stacks-block-height, validity-period: validity})
    (var-set next-correction-id (+ correction-id u1))
    (ok correction-id)))

(define-public (register-sbas-receiver (receiver-id (string-ascii 32)))
  (begin
    (ok (map-set sbas-receivers tx-sender
      {receiver-id: receiver-id, corrections-applied: u0, accuracy-improvement: u0, last-update: stacks-block-height}))))

Functions (4)

FunctionAccessArgs
get-stationread-onlystation-id: (string-ascii 32
register-sbas-stationpublicstation-id: (string-ascii 32
broadcast-correctionpublicstation: (string-ascii 32
register-sbas-receiverpublicreceiver-id: (string-ascii 32