iotwireless

package
v1.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 24, 2026 License: MIT Imports: 27 Imported by: 0

README

IoT Wireless

Parity grade: A · SDK aws-sdk-go-v2/service/iotwireless@v1.59.4 · last audited 2026-08-23 (d1235ad5)

Coverage

Metric Value
PARITY entries audited 15 (15 ok)
Feature families 21 (21 ok)
Known gaps 1
Deferred items 0
Resource leaks clean
Known gaps
  • STALE, CORRECTED 2026-08-23 (found already fixed in code, not reflected in this file -- same pattern as gopherstack-jqh2 below): this entry claimed ListWirelessDevices doesn't implement the DestinationName/DeviceProfileId/ServiceProfileId/FuotaTaskId/MulticastGroupId/WirelessDeviceType query-parameter filters. All six are fully implemented: handler_wireless_devices.go's listWirelessDevices reads all six query params into a ListWirelessDevicesFilter (wireless_devices.go), whose matches() method checks every one of them (DeviceProfileId across both LoRaWAN and Sidewalk via hasDeviceProfileID; FuotaTaskId/MulticastGroupId via the b.fuotaTaskDevices/b.multicastGroupDevices membership maps this note itself predicted could back them). Covered end-to-end, including AND-combination semantics, by TestHandler_ListWirelessDevices_Filters (handler_wireless_devices_filter_test.go, 12 subtests, all passing) -- verified again this pass via a real HTTP round-trip. git blame dates the filter code to commit d39bf33e4 (2026-08-11), two days before this file's last_audit_date at the time (2026-08-13); the audit that produced this claim either predates that commit's landing in its working tree or simply never re-checked after. No code change needed -- this file was wrong, not the backend. # gopherstack-jqh2: the AssociateWirelessDeviceWithFuotaTask/AssociateMulticastGroupWithFuotaTask # singular-vs-plural routing gap formerly listed here was found already fixed in code # (routing.go's pathSubWirelessDevice/pathSubMulticastGroup, landed d39bf33e4) but never # reflected in this file. Corrected in ops/families above; TestExtractOperation_SDKRouteTable # (handler_paths_sdk_diff_test.go) now guards all 112 real ops against regressing.

More

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrDeviceNotFound is returned when a wireless device does not exist.
	ErrDeviceNotFound = errors.New("ResourceNotFoundException: Wireless device not found")
	// ErrGatewayNotFound is returned when a wireless gateway does not exist.
	ErrGatewayNotFound = errors.New("ResourceNotFoundException: Wireless gateway not found")
	// ErrServiceProfileNotFound is returned when a service profile does not exist.
	ErrServiceProfileNotFound = errors.New("ResourceNotFoundException: Service profile not found")
	// ErrDestinationNotFound is returned when a destination does not exist.
	ErrDestinationNotFound = errors.New("ResourceNotFoundException: Destination not found")
	// ErrDeviceProfileNotFound is returned when a device profile does not exist.
	ErrDeviceProfileNotFound = errors.New("ResourceNotFoundException: Device profile not found")
	// ErrFuotaTaskNotFound is returned when a FUOTA task does not exist.
	ErrFuotaTaskNotFound = errors.New("ResourceNotFoundException: FUOTA task not found")
	// ErrMulticastGroupNotFound is returned when a multicast group does not exist.
	ErrMulticastGroupNotFound = errors.New("ResourceNotFoundException: Multicast group not found")
	// ErrNetworkAnalyzerConfigNotFound is returned when a network analyzer configuration does not exist.
	ErrNetworkAnalyzerConfigNotFound = errors.New("ResourceNotFoundException: Network analyzer configuration not found")
	// ErrValidation is returned when a request contains invalid parameters.
	ErrValidation = errors.New("ValidationException: invalid request parameters")
)

Sentinel errors for IoT Wireless backend operations.

View Source
var (
	// ErrPartnerAccountNotFound is returned when a partner account does not exist.
	ErrPartnerAccountNotFound = errors.New("ResourceNotFoundException: Partner account not found")
	// ErrImportTaskNotFound is returned when a wireless device import task does not exist.
	ErrImportTaskNotFound = errors.New("ResourceNotFoundException: Wireless device import task not found")
	// ErrGatewayTaskNotFound is returned when a wireless gateway task does not exist.
	ErrGatewayTaskNotFound = errors.New(
		"ResourceNotFoundException: Wireless gateway task not found",
	)
	// ErrGatewayTaskDefNotFound is returned when a wireless gateway task definition does not exist.
	ErrGatewayTaskDefNotFound = errors.New(
		"ResourceNotFoundException: Wireless gateway task definition not found",
	)
	// ErrMulticastGroupSessionNotFound is returned when a multicast group has no active session.
	ErrMulticastGroupSessionNotFound = errors.New(
		"ResourceNotFoundException: Multicast group session not found",
	)
)

Sentinel errors for new backend operations.

View Source
var ErrNilAppContext = errors.New("iotwireless: nil AppContext")

ErrNilAppContext is returned by Init when a nil AppContext is provided.

Functions

This section is empty.

Types

type AbpV1_0X added in v1.3.1

type AbpV1_0X struct {
	SessionKeys *SessionKeysAbpV1_0X `json:"SessionKeys,omitempty"`
	DevAddr     *string              `json:"DevAddr,omitempty"`
	FCntStart   *int32               `json:"FCntStart,omitempty"`
}

AbpV1_0X mirrors types.AbpV1_0X (types.go:11).

type AbpV1_1 added in v1.3.1

type AbpV1_1 struct {
	SessionKeys *SessionKeysAbpV1_1 `json:"SessionKeys,omitempty"`
	DevAddr     *string             `json:"DevAddr,omitempty"`
	FCntStart   *int32              `json:"FCntStart,omitempty"`
}

AbpV1_1 mirrors types.AbpV1_1 (types.go:26).

type ApplicationConfig added in v1.3.1

type ApplicationConfig struct {
	DestinationName *string `json:"DestinationName,omitempty"`
	FPort           *int32  `json:"FPort,omitempty"`
	Type            string  `json:"Type,omitempty"`
}

ApplicationConfig mirrors types.ApplicationConfig (types.go:67).

type Beaconing added in v1.3.1

type Beaconing struct {
	DataRate    *int32  `json:"DataRate,omitempty"`
	Frequencies []int32 `json:"Frequencies,omitempty"`
}

Beaconing mirrors types.Beaconing (types.go:84).

type CertificateList added in v1.3.1

type CertificateList struct {
	Value      *string `json:"Value,omitempty"`
	SigningAlg string  `json:"SigningAlg,omitempty"`
}

CertificateList mirrors types.CertificateList (types.go:197).

type DakCertificateMetadata added in v1.3.1

type DakCertificateMetadata struct {
	CertificateID       *string `json:"CertificateId,omitempty"`
	ApID                *string `json:"ApId,omitempty"`
	DeviceTypeID        *string `json:"DeviceTypeId,omitempty"`
	MaxAllowedSignature *int32  `json:"MaxAllowedSignature,omitempty"`
	FactorySupport      *bool   `json:"FactorySupport,omitempty"`
}

DakCertificateMetadata mirrors types.DakCertificateMetadata (types.go:238).

type DefaultSessionParametersMulticast added in v1.3.1

type DefaultSessionParametersMulticast struct {
	DlDr   *int32 `json:"DlDr,omitempty"`
	DlFreq *int32 `json:"DlFreq,omitempty"`
}

DefaultSessionParametersMulticast mirrors types.DefaultSessionParametersMulticast (types.go:263).

type Destination

type Destination struct {
	CreatedAt      time.Time         `json:"createdAt"`
	Tags           map[string]string `json:"tags,omitempty"`
	Name           string            `json:"name"`
	ARN            string            `json:"arn"`
	Expression     string            `json:"expression,omitempty"`
	ExpressionType string            `json:"expressionType,omitempty"`
	RoleArn        string            `json:"roleArn,omitempty"`
	Description    string            `json:"description,omitempty"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

Destination routes messages from a device to AWS services.

type DeviceProfile

type DeviceProfile struct {
	CreatedAt time.Time         `json:"createdAt"`
	Tags      map[string]string `json:"tags,omitempty"`
	// LoRaWAN uses the types.LoRaWANDeviceProfile shape shared verbatim by
	// Create and Get. Sidewalk is stored as the richer SidewalkGetDeviceProfile
	// (get) shape; CreateDeviceProfile's SidewalkCreateDeviceProfile request
	// (no fields of its own) is converted via sidewalkGetDeviceProfileFromCreate.
	LoRaWAN  *LoRaWANDeviceProfile     `json:"loRaWAN,omitempty"`
	Sidewalk *SidewalkGetDeviceProfile `json:"sidewalk,omitempty"`
	Name     string                    `json:"name"`
	ID       string                    `json:"id"`
	ARN      string                    `json:"arn"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

DeviceProfile contains LoRaWAN device profile settings.

type EventConfigDoc

type EventConfigDoc struct {
	ConnectionStatus        map[string]any `json:"ConnectionStatus,omitempty"`
	DeviceRegistrationState map[string]any `json:"DeviceRegistrationState,omitempty"`
	Join                    map[string]any `json:"Join,omitempty"`
	MessageDeliveryStatus   map[string]any `json:"MessageDeliveryStatus,omitempty"`
	Proximity               map[string]any `json:"Proximity,omitempty"`
}

EventConfigDoc is an event-notification configuration document keyed by AWS's five event-type fields. Each value is stored and echoed back exactly as submitted by the client (real mutate/read state, not fabricated).

type ExportedServiceProfile

type ExportedServiceProfile = ServiceProfile

ExportedServiceProfile is a compatibility alias used by the dashboard package.

type ExportedWirelessDevice

type ExportedWirelessDevice = WirelessDevice

ExportedWirelessDevice is a compatibility alias used by the dashboard package.

type FPorts added in v1.3.1

type FPorts struct {
	Positioning  *Positioning        `json:"Positioning,omitempty"`
	ClockSync    *int32              `json:"ClockSync,omitempty"`
	Fuota        *int32              `json:"Fuota,omitempty"`
	Multicast    *int32              `json:"Multicast,omitempty"`
	Applications []ApplicationConfig `json:"Applications,omitempty"`
}

FPorts mirrors types.FPorts (types.go:411).

type FuotaTask

type FuotaTask struct {
	CreatedAt time.Time         `json:"createdAt"`
	Tags      map[string]string `json:"tags,omitempty"`
	// LoRaWAN holds the create/update-shape LoRaWANFuotaTask; GetFuotaTask
	// converts it to LoRaWANFuotaTaskGetInfo via loRaWANFuotaTaskGetInfoFrom
	// (lorawan_types.go).
	LoRaWAN *LoRaWANFuotaTask `json:"loRaWAN,omitempty"`
	// StartTime is set by StartFuotaTask from StartFuotaTaskInput.LoRaWAN.StartTime
	// (types.LoRaWANStartFuotaTask, types.go:1202); nil until then.
	StartTime           *time.Time `json:"startTime,omitempty"`
	Name                string     `json:"name"`
	ID                  string     `json:"id"`
	ARN                 string     `json:"arn"`
	Description         string     `json:"description,omitempty"`
	FirmwareUpdateImage string     `json:"firmwareUpdateImage,omitempty"`
	FirmwareUpdateRole  string     `json:"firmwareUpdateRole,omitempty"`
	// Descriptor is the base64-encoded firmware metadata blob.
	Descriptor string `json:"descriptor,omitempty"`
	// Status tracks the FUOTA task lifecycle (Pending, FuotaSession_Waiting,
	// In_FuotaSession, FuotaDone, Delete_Waiting), matching
	// types.FuotaTaskStatus. Set to "Pending" at creation and advanced by
	// StartFuotaTask; previously this was fabricated by overwriting
	// FirmwareUpdateRole, corrupting that field -- see StartFuotaTask.
	Status string `json:"status,omitempty"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID          string `json:"-"`
	Region             string `json:"-"`
	FragmentIntervalMS int32  `json:"fragmentIntervalMs,omitempty"`
	FragmentSizeBytes  int32  `json:"fragmentSizeBytes,omitempty"`
	RedundancyPercent  int32  `json:"redundancyPercent,omitempty"`
}

FuotaTask represents a Firmware Update Over the Air (FUOTA) task.

type GatewayTask

type GatewayTask struct {
	CreatedAt         time.Time
	WirelessGatewayID string
	TaskDefID         string
	Status            string
}

GatewayTask represents a wireless gateway task.

type GatewayTaskDefinition

type GatewayTaskDefinition struct {
	Update          *UpdateWirelessGatewayTaskCreate
	ID              string
	ARN             string
	Name            string
	AutoCreateTasks bool
}

GatewayTaskDefinition represents a wireless gateway task definition.

type Handler

type Handler struct {
	Backend       StorageBackend
	AccountID     string
	DefaultRegion string
}

Handler is the HTTP handler for the IoT Wireless REST API.

func NewHandler

func NewHandler(backend StorageBackend) *Handler

NewHandler creates a new IoT Wireless handler.

func (*Handler) ChaosOperations

func (h *Handler) ChaosOperations() []string

ChaosOperations returns all operations that can be fault-injected.

func (*Handler) ChaosRegions

func (h *Handler) ChaosRegions() []string

ChaosRegions returns all regions this IoT Wireless instance handles.

func (*Handler) ChaosServiceName

func (h *Handler) ChaosServiceName() string

ChaosServiceName returns the lowercase AWS service name for fault rule matching.

func (*Handler) ExtractOperation

func (h *Handler) ExtractOperation(c *echo.Context) string

ExtractOperation extracts the IoT Wireless operation name from the request.

func (*Handler) ExtractResource

func (h *Handler) ExtractResource(c *echo.Context) string

ExtractResource extracts the resource ID from the URL path. Tag operations are the one exception: their resource ARN travels as the "resourceArn" query parameter rather than a path segment (see parseIoTWirelessPath's "tags" case), so it's read from the query here for CloudTrail capture.

func (*Handler) GetSupportedOperations

func (h *Handler) GetSupportedOperations() []string

GetSupportedOperations returns the list of supported IoT Wireless operations.

func (*Handler) Handler

func (h *Handler) Handler() echo.HandlerFunc

Handler returns the Echo handler function for IoT Wireless requests.

func (*Handler) MatchPriority

func (h *Handler) MatchPriority() int

MatchPriority returns the routing priority.

func (*Handler) Name

func (h *Handler) Name() string

Name returns the service name.

func (*Handler) Reset

func (h *Handler) Reset()

Reset clears the handler's backend state, returning it to a pristine condition.

func (*Handler) Restore

func (h *Handler) Restore(ctx context.Context, data []byte) error

Restore implements persistence.Persistable by delegating to the backend when it implements Snapshottable. Non-snapshottable backends are skipped.

func (*Handler) RouteMatcher

func (h *Handler) RouteMatcher() service.Matcher

RouteMatcher returns a function that matches IoT Wireless REST API requests. All paths are disambiguated via the SigV4 credential-scope service name to prevent mis-routing with other REST-JSON services that share similar paths.

func (*Handler) Snapshot

func (h *Handler) Snapshot(ctx context.Context) []byte

Snapshot implements persistence.Persistable by delegating to the backend when it implements Snapshottable. Returns nil for non-snapshottable backends.

type InMemoryBackend

type InMemoryBackend struct {
	// contains filtered or unexported fields
}

InMemoryBackend is the in-memory backend for IoT Wireless.

func NewInMemoryBackend

func NewInMemoryBackend() *InMemoryBackend

NewInMemoryBackend creates a new in-memory IoT Wireless backend.

func (*InMemoryBackend) AddDestinationInternal

func (b *InMemoryBackend) AddDestinationInternal(accountID, region string, dest *Destination)

AddDestinationInternal inserts a Destination directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AddDeviceProfileInternal

func (b *InMemoryBackend) AddDeviceProfileInternal(accountID, region string, dp *DeviceProfile)

AddDeviceProfileInternal inserts a DeviceProfile directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AddFuotaTaskInternal

func (b *InMemoryBackend) AddFuotaTaskInternal(accountID, region string, ft *FuotaTask)

AddFuotaTaskInternal inserts a FuotaTask directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AddServiceProfileInternal

func (b *InMemoryBackend) AddServiceProfileInternal(accountID, region string, sp *ServiceProfile)

AddServiceProfileInternal inserts a ServiceProfile directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AddWirelessDeviceInternal

func (b *InMemoryBackend) AddWirelessDeviceInternal(accountID, region string, d *WirelessDevice)

AddWirelessDeviceInternal inserts a WirelessDevice directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AddWirelessGatewayInternal

func (b *InMemoryBackend) AddWirelessGatewayInternal(accountID, region string, gw *WirelessGateway)

AddWirelessGatewayInternal inserts a WirelessGateway directly into the backend, bypassing ID generation. Intended for test setup only.

func (*InMemoryBackend) AssociateAwsAccountWithPartnerAccount

func (b *InMemoryBackend) AssociateAwsAccountWithPartnerAccount(
	accountID, region, partnerAccountID string,
	tags map[string]string,
) (string, error)

AssociateAwsAccountWithPartnerAccount stores a partner account association and returns its ARN.

func (*InMemoryBackend) AssociateMulticastGroupWithFuotaTask

func (b *InMemoryBackend) AssociateMulticastGroupWithFuotaTask(fuotaTaskID, multicastGroupID string) error

AssociateMulticastGroupWithFuotaTask records the association of a multicast group with a FUOTA task. A FUOTA task can have several associated multicast groups (ListMulticastGroupsByFuotaTask returns a list), so this adds to a per-task set rather than overwriting a single slot.

func (*InMemoryBackend) AssociateWirelessDeviceWithFuotaTask

func (b *InMemoryBackend) AssociateWirelessDeviceWithFuotaTask(fuotaTaskID, wirelessDeviceID string) error

AssociateWirelessDeviceWithFuotaTask records the association of a wireless device with a FUOTA task. A FUOTA task can have several associated devices (ListWirelessDevices' FuotaTaskId filter implies more than one), so this adds to a per-task set rather than overwriting a single slot.

func (*InMemoryBackend) AssociateWirelessDeviceWithMulticastGroup

func (b *InMemoryBackend) AssociateWirelessDeviceWithMulticastGroup(multicastGroupID, wirelessDeviceID string) error

AssociateWirelessDeviceWithMulticastGroup records the association of a wireless device with a multicast group. A multicast group can have many associated devices, so this adds to a per-group set rather than overwriting a single slot.

func (*InMemoryBackend) AssociateWirelessDeviceWithThing

func (b *InMemoryBackend) AssociateWirelessDeviceWithThing(
	accountID, region, wirelessDeviceID, thingArn string,
) error

AssociateWirelessDeviceWithThing associates a wireless device with an IoT Thing. Returns ErrDeviceNotFound when the device does not exist.

func (*InMemoryBackend) AssociateWirelessGatewayWithCertificate

func (b *InMemoryBackend) AssociateWirelessGatewayWithCertificate(
	accountID, region, gatewayID, iotCertificateID string,
) (string, error)

AssociateWirelessGatewayWithCertificate associates a wireless gateway with an IoT certificate and returns the certificate ARN. Returns ErrGatewayNotFound when the gateway does not exist.

func (*InMemoryBackend) AssociateWirelessGatewayWithThing

func (b *InMemoryBackend) AssociateWirelessGatewayWithThing(
	accountID, region, gatewayID, thingArn string,
) error

AssociateWirelessGatewayWithThing associates a wireless gateway with an IoT Thing. Returns ErrGatewayNotFound when the gateway does not exist.

func (*InMemoryBackend) CancelMulticastGroupSession

func (b *InMemoryBackend) CancelMulticastGroupSession(multicastGroupID string) error

CancelMulticastGroupSession marks the multicast group session as cancelled. If no session is active, the call is a no-op (idempotent).

func (*InMemoryBackend) CreateDestination

func (b *InMemoryBackend) CreateDestination(
	accountID, region, name, expression, expressionType, roleArn, description string,
	tags map[string]string,
) (*Destination, error)

CreateDestination creates a new destination.

func (*InMemoryBackend) CreateDeviceProfile

func (b *InMemoryBackend) CreateDeviceProfile(
	accountID, region, name string,
	loRaWAN *LoRaWANDeviceProfile,
	sidewalk *SidewalkCreateDeviceProfile,
	tags map[string]string,
) (*DeviceProfile, error)

CreateDeviceProfile creates a new device profile. sidewalk being non-nil (even if empty -- SidewalkCreateDeviceProfile has no fields of its own) distinguishes a request that asked for a Sidewalk profile from one that didn't -- see sidewalkGetDeviceProfileFromCreate.

func (*InMemoryBackend) CreateFuotaTask

func (b *InMemoryBackend) CreateFuotaTask(
	accountID, region, name, description, firmwareUpdateImage, firmwareUpdateRole, descriptor string,
	fragmentIntervalMS, fragmentSizeBytes, redundancyPercent int32,
	loRaWAN *LoRaWANFuotaTask,
	tags map[string]string,
) (*FuotaTask, error)

CreateFuotaTask creates a new FUOTA task.

func (*InMemoryBackend) CreateMulticastGroup

func (b *InMemoryBackend) CreateMulticastGroup(
	accountID, region, name, description string,
	loRaWAN *LoRaWANMulticast,
	tags map[string]string,
) (*MulticastGroup, error)

CreateMulticastGroup creates a new multicast group.

func (*InMemoryBackend) CreateNetworkAnalyzerConfig

func (b *InMemoryBackend) CreateNetworkAnalyzerConfig(
	accountID, region, name, description string,
	wirelessDevices, wirelessGateways, multicastGroups []string,
	traceContent *TraceContent,
	tags map[string]string,
) (*NetworkAnalyzerConfig, error)

CreateNetworkAnalyzerConfig creates a new network analyzer configuration.

func (*InMemoryBackend) CreateServiceProfile

func (b *InMemoryBackend) CreateServiceProfile(
	accountID, region, name string,
	loRaWAN *LoRaWANServiceProfile,
	tags map[string]string,
) (*ServiceProfile, error)

CreateServiceProfile creates a new service profile.

func (*InMemoryBackend) CreateWirelessDevice

func (b *InMemoryBackend) CreateWirelessDevice(
	accountID, region, name, devType, destinationName, description, positioning string,
	loRaWAN *LoRaWANDevice, sidewalk *SidewalkCreateWirelessDevice,
	tags map[string]string,
) (*WirelessDevice, error)

CreateWirelessDevice creates a new wireless device.

func (*InMemoryBackend) CreateWirelessGateway

func (b *InMemoryBackend) CreateWirelessGateway(
	accountID, region, name, description string,
	loRaWAN *LoRaWANGateway,
	tags map[string]string,
) (*WirelessGateway, error)

CreateWirelessGateway creates a new wireless gateway.

func (*InMemoryBackend) CreateWirelessGatewayTask

func (b *InMemoryBackend) CreateWirelessGatewayTask(
	gatewayID, taskDefID string,
) (*GatewayTask, error)

CreateWirelessGatewayTask creates a task for a wireless gateway.

func (*InMemoryBackend) CreateWirelessGatewayTaskDefinition

func (b *InMemoryBackend) CreateWirelessGatewayTaskDefinition(
	accountID, region, name string,
	autoCreateTasks bool,
	update *UpdateWirelessGatewayTaskCreate,
) (*GatewayTaskDefinition, error)

CreateWirelessGatewayTaskDefinition creates a new gateway task definition.

func (*InMemoryBackend) DeleteDestination

func (b *InMemoryBackend) DeleteDestination(accountID, region, name string) error

DeleteDestination deletes a destination by name.

func (*InMemoryBackend) DeleteDeviceProfile

func (b *InMemoryBackend) DeleteDeviceProfile(accountID, region, id string) error

DeleteDeviceProfile deletes a device profile by ID.

func (*InMemoryBackend) DeleteFuotaTask

func (b *InMemoryBackend) DeleteFuotaTask(accountID, region, id string) error

DeleteFuotaTask deletes a FUOTA task by ID.

func (*InMemoryBackend) DeleteMulticastGroup

func (b *InMemoryBackend) DeleteMulticastGroup(accountID, region, id string) error

DeleteMulticastGroup deletes a multicast group by ID, cascading the cleanup to its wireless-device association set so no ghost entry survives the group's deletion.

func (*InMemoryBackend) DeleteNetworkAnalyzerConfig

func (b *InMemoryBackend) DeleteNetworkAnalyzerConfig(accountID, region, name string) error

DeleteNetworkAnalyzerConfig deletes a network analyzer configuration by name.

func (*InMemoryBackend) DeleteQueuedMessages

func (b *InMemoryBackend) DeleteQueuedMessages(wirelessDeviceID string) error

DeleteQueuedMessages clears the message queue for a wireless device.

func (*InMemoryBackend) DeleteServiceProfile

func (b *InMemoryBackend) DeleteServiceProfile(accountID, region, id string) error

DeleteServiceProfile deletes a service profile.

func (*InMemoryBackend) DeleteWirelessDevice

func (b *InMemoryBackend) DeleteWirelessDevice(accountID, region, id string) error

DeleteWirelessDevice deletes a wireless device.

func (*InMemoryBackend) DeleteWirelessDeviceImportTask

func (b *InMemoryBackend) DeleteWirelessDeviceImportTask(id string) error

DeleteWirelessDeviceImportTask removes a wireless device import task.

func (*InMemoryBackend) DeleteWirelessGateway

func (b *InMemoryBackend) DeleteWirelessGateway(accountID, region, id string) error

DeleteWirelessGateway deletes a wireless gateway.

func (*InMemoryBackend) DeleteWirelessGatewayTask

func (b *InMemoryBackend) DeleteWirelessGatewayTask(gatewayID string) error

DeleteWirelessGatewayTask removes the task for a wireless gateway.

func (*InMemoryBackend) DeleteWirelessGatewayTaskDefinition

func (b *InMemoryBackend) DeleteWirelessGatewayTaskDefinition(id string) error

DeleteWirelessGatewayTaskDefinition removes a gateway task definition.

func (*InMemoryBackend) DisassociateAwsAccountFromPartnerAccount

func (b *InMemoryBackend) DisassociateAwsAccountFromPartnerAccount(partnerAccountID string) error

DisassociateAwsAccountFromPartnerAccount removes a partner account association.

func (*InMemoryBackend) DisassociateMulticastGroupFromFuotaTask

func (b *InMemoryBackend) DisassociateMulticastGroupFromFuotaTask(fuotaTaskID, multicastGroupID string) error

DisassociateMulticastGroupFromFuotaTask removes a single multicast group from a FUOTA task's association set. multicastGroupID is the {MulticastGroupId} path segment of DELETE /fuota-tasks/{Id}/multicast-groups/{MulticastGroupId}; an empty value falls back to clearing every group associated with the task, preserving the prior behavior.

func (*InMemoryBackend) DisassociateWirelessDeviceFromFuotaTask

func (b *InMemoryBackend) DisassociateWirelessDeviceFromFuotaTask(fuotaTaskID, wirelessDeviceID string) error

DisassociateWirelessDeviceFromFuotaTask removes a single device from a FUOTA task's association set. wirelessDeviceID is the {WirelessDeviceId} path segment of DELETE /fuota-tasks/{Id}/wireless-devices/{WirelessDeviceId}; an empty value falls back to clearing every device associated with the task, preserving the prior behavior.

func (*InMemoryBackend) DisassociateWirelessDeviceFromMulticastGroup

func (b *InMemoryBackend) DisassociateWirelessDeviceFromMulticastGroup(
	multicastGroupID, wirelessDeviceID string,
) error

DisassociateWirelessDeviceFromMulticastGroup removes a single device from a multicast group's association set. wirelessDeviceID is the {WirelessDeviceId} path segment of DELETE /multicast-groups/{Id}/wireless-devices/{WirelessDeviceId}; an empty value (e.g. from a caller that can't recover it) falls back to clearing every device associated with the group, preserving the prior behavior.

func (*InMemoryBackend) DisassociateWirelessDeviceFromThing

func (b *InMemoryBackend) DisassociateWirelessDeviceFromThing(
	accountID, region, wirelessDeviceID string,
) error

DisassociateWirelessDeviceFromThing clears the thing association for a wireless device.

func (*InMemoryBackend) DisassociateWirelessGatewayFromCertificate

func (b *InMemoryBackend) DisassociateWirelessGatewayFromCertificate(
	accountID, region, gatewayID string,
) error

DisassociateWirelessGatewayFromCertificate clears the certificate association for a gateway.

func (*InMemoryBackend) DisassociateWirelessGatewayFromThing

func (b *InMemoryBackend) DisassociateWirelessGatewayFromThing(
	accountID, region, gatewayID string,
) error

DisassociateWirelessGatewayFromThing clears the thing association for a gateway.

func (*InMemoryBackend) EnqueueMessage

func (b *InMemoryBackend) EnqueueMessage(wirelessDeviceID string, msg QueuedMessage)

EnqueueMessage appends a downlink message to a wireless device's message queue, so that a subsequent ListQueuedMessages reflects messages sent via SendDataToWirelessDevice.

func (*InMemoryBackend) GetDestination

func (b *InMemoryBackend) GetDestination(accountID, region, name string) (*Destination, error)

GetDestination returns a destination by name.

func (*InMemoryBackend) GetDeviceProfile

func (b *InMemoryBackend) GetDeviceProfile(accountID, region, id string) (*DeviceProfile, error)

GetDeviceProfile returns a device profile by ID.

func (*InMemoryBackend) GetEventConfigurationByResourceTypes

func (b *InMemoryBackend) GetEventConfigurationByResourceTypes() *EventConfigDoc

GetEventConfigurationByResourceTypes returns the account-wide default event configuration. Returns an empty (zero-value) document if never configured.

func (*InMemoryBackend) GetFuotaTask

func (b *InMemoryBackend) GetFuotaTask(accountID, region, id string) (*FuotaTask, error)

GetFuotaTask returns a FUOTA task by ID.

func (*InMemoryBackend) GetLogLevelsByResourceTypes

func (b *InMemoryBackend) GetLogLevelsByResourceTypes() LogLevelsConfig

GetLogLevelsByResourceTypes returns the account-wide default log-level configuration. Defaults to DefaultLogLevel "INFO" with empty option lists when never explicitly configured.

func (*InMemoryBackend) GetMetricConfigurationStatus

func (b *InMemoryBackend) GetMetricConfigurationStatus() string

GetMetricConfigurationStatus returns the account's summary metric aggregation status. Defaults to "Enabled" (AWS's documented default) when never explicitly configured.

func (*InMemoryBackend) GetMulticastGroup

func (b *InMemoryBackend) GetMulticastGroup(accountID, region, id string) (*MulticastGroup, error)

GetMulticastGroup returns a multicast group by ID.

func (*InMemoryBackend) GetMulticastGroupSession

func (b *InMemoryBackend) GetMulticastGroupSession(multicastGroupID string) (time.Time, error)

GetMulticastGroupSession returns the start time of a multicast group's active session. Returns ErrMulticastGroupSessionNotFound if no session has been started (or it has since been cancelled), matching real AWS's ResourceNotFoundException for a group with no active session.

func (*InMemoryBackend) GetNetworkAnalyzerConfig

func (b *InMemoryBackend) GetNetworkAnalyzerConfig(accountID, region, name string) (*NetworkAnalyzerConfig, error)

GetNetworkAnalyzerConfig returns a network analyzer configuration by name.

func (*InMemoryBackend) GetPartnerAccount

func (b *InMemoryBackend) GetPartnerAccount(partnerAccountID string) (string, error)

GetPartnerAccount returns the ARN for a partner account.

func (*InMemoryBackend) GetPosition

func (b *InMemoryBackend) GetPosition(resourceID string) map[string]any

GetPosition returns the position data for a resource.

func (*InMemoryBackend) GetPositionConfiguration

func (b *InMemoryBackend) GetPositionConfiguration(resourceID string) (*PositionConfigEntry, bool)

GetPositionConfiguration returns the stored position configuration for a resource, if any.

func (*InMemoryBackend) GetResourceEventConfiguration

func (b *InMemoryBackend) GetResourceEventConfiguration(identifier string) (*ResourceEventConfigEntry, bool)

GetResourceEventConfiguration returns the stored event configuration for a specific resource identifier, if any.

func (*InMemoryBackend) GetResourceLogLevel

func (b *InMemoryBackend) GetResourceLogLevel(resourceID string) string

GetResourceLogLevel returns the log level for a specific resource.

func (*InMemoryBackend) GetServiceProfile

func (b *InMemoryBackend) GetServiceProfile(accountID, region, id string) (*ServiceProfile, error)

GetServiceProfile returns a service profile by ID.

func (*InMemoryBackend) GetWirelessDevice

func (b *InMemoryBackend) GetWirelessDevice(accountID, region, id string) (*WirelessDevice, error)

GetWirelessDevice returns a wireless device by ID.

func (*InMemoryBackend) GetWirelessDeviceImportTask

func (b *InMemoryBackend) GetWirelessDeviceImportTask(id string) (*WirelessDeviceImportTask, error)

GetWirelessDeviceImportTask returns a wireless device import task by ID.

func (*InMemoryBackend) GetWirelessDeviceThingArn

func (b *InMemoryBackend) GetWirelessDeviceThingArn(wirelessDeviceID string) string

GetWirelessDeviceThingArn returns the ARN of the IoT Thing associated with a wireless device, or "" if AssociateWirelessDeviceWithThing was never called (or the association was since cleared).

func (*InMemoryBackend) GetWirelessGateway

func (b *InMemoryBackend) GetWirelessGateway(accountID, region, id string) (*WirelessGateway, error)

GetWirelessGateway returns a wireless gateway by ID.

func (*InMemoryBackend) GetWirelessGatewayCertificate

func (b *InMemoryBackend) GetWirelessGatewayCertificate(
	accountID, region, gatewayID string,
) (string, error)

GetWirelessGatewayCertificate returns the certificate ID associated with a gateway.

func (*InMemoryBackend) GetWirelessGatewayTask

func (b *InMemoryBackend) GetWirelessGatewayTask(gatewayID string) (*GatewayTask, error)

GetWirelessGatewayTask returns the task for a wireless gateway.

func (*InMemoryBackend) GetWirelessGatewayTaskDefinition

func (b *InMemoryBackend) GetWirelessGatewayTaskDefinition(
	id string,
) (*GatewayTaskDefinition, error)

GetWirelessGatewayTaskDefinition returns a gateway task definition by ID.

func (*InMemoryBackend) GetWirelessGatewayThingArn

func (b *InMemoryBackend) GetWirelessGatewayThingArn(gatewayID string) string

GetWirelessGatewayThingArn returns the ARN of the IoT Thing associated with a wireless gateway, or "" if AssociateWirelessGatewayWithThing was never called (or the association was since cleared).

func (*InMemoryBackend) ListDestinations

func (b *InMemoryBackend) ListDestinations(accountID, region string) []*Destination

ListDestinations returns all destinations for the given account and region. ListDestinations returns all destinations for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListDeviceProfiles

func (b *InMemoryBackend) ListDeviceProfiles(accountID, region string) []*DeviceProfile

ListDeviceProfiles returns all device profiles for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListEventConfigurations

func (b *InMemoryBackend) ListEventConfigurations(resourceType string) []*ResourceEventConfigEntry

ListEventConfigurations returns all stored per-resource event configurations, optionally filtered by resource type (matched as a prefix against the stored IdentifierType, e.g. "WirelessDevice" matches "WirelessDeviceId").

func (*InMemoryBackend) ListFuotaTaskDeviceIDs added in v1.2.0

func (b *InMemoryBackend) ListFuotaTaskDeviceIDs(fuotaTaskID string) []string

ListFuotaTaskDeviceIDs returns the IDs of wireless devices currently associated with a FUOTA task, sorted for deterministic output.

func (*InMemoryBackend) ListFuotaTasks

func (b *InMemoryBackend) ListFuotaTasks(accountID, region string) []*FuotaTask

ListFuotaTasks returns all FUOTA tasks for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListMulticastGroupDeviceIDs added in v1.2.0

func (b *InMemoryBackend) ListMulticastGroupDeviceIDs(multicastGroupID string) []string

ListMulticastGroupDeviceIDs returns the IDs of wireless devices currently associated with a multicast group, sorted for deterministic output.

func (*InMemoryBackend) ListMulticastGroups

func (b *InMemoryBackend) ListMulticastGroups(accountID, region string) []*MulticastGroup

ListMulticastGroups returns all multicast groups for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListMulticastGroupsByFuotaTask

func (b *InMemoryBackend) ListMulticastGroupsByFuotaTask(
	accountID, region, fuotaTaskID string,
) []*MulticastGroup

ListMulticastGroupsByFuotaTask returns every multicast group associated with a FUOTA task.

func (*InMemoryBackend) ListNetworkAnalyzerConfigs

func (b *InMemoryBackend) ListNetworkAnalyzerConfigs(accountID, region string) []*NetworkAnalyzerConfig

ListNetworkAnalyzerConfigs returns all network analyzer configurations for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListPartnerAccounts

func (b *InMemoryBackend) ListPartnerAccounts() map[string]string

ListPartnerAccounts returns all partner account ARNs.

func (*InMemoryBackend) ListPositionConfigurations

func (b *InMemoryBackend) ListPositionConfigurations(resourceType string) []*PositionConfigEntry

ListPositionConfigurations returns all stored position configurations, optionally filtered by resource type.

func (*InMemoryBackend) ListQueuedMessages

func (b *InMemoryBackend) ListQueuedMessages(wirelessDeviceID string) []QueuedMessage

ListQueuedMessages returns queued messages for a wireless device.

func (*InMemoryBackend) ListServiceProfiles

func (b *InMemoryBackend) ListServiceProfiles(accountID, region string) []*ServiceProfile

ListServiceProfiles returns all service profiles for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) ListTagsForResource

func (b *InMemoryBackend) ListTagsForResource(arn string) (map[string]string, error)

ListTagsForResource returns all tags for a resource identified by ARN.

func (*InMemoryBackend) ListWirelessDeviceImportTasks

func (b *InMemoryBackend) ListWirelessDeviceImportTasks() []*WirelessDeviceImportTask

ListWirelessDeviceImportTasks returns all wireless device import tasks.

func (*InMemoryBackend) ListWirelessDevices

func (b *InMemoryBackend) ListWirelessDevices(
	accountID, region string, filter ListWirelessDevicesFilter,
) []*WirelessDevice

ListWirelessDevices returns wireless devices for the given account and region matching filter, sorted by name for deterministic output.

func (*InMemoryBackend) ListWirelessGatewayTaskDefinitions

func (b *InMemoryBackend) ListWirelessGatewayTaskDefinitions() []*GatewayTaskDefinition

ListWirelessGatewayTaskDefinitions returns all gateway task definitions.

func (*InMemoryBackend) ListWirelessGateways

func (b *InMemoryBackend) ListWirelessGateways(accountID, region string) []*WirelessGateway

ListWirelessGateways returns all wireless gateways for the given account and region, sorted by name for deterministic output.

func (*InMemoryBackend) PutPositionConfiguration

func (b *InMemoryBackend) PutPositionConfiguration(
	resourceID, resourceType, destination string, solvers map[string]any,
) error

PutPositionConfiguration stores the position solver configuration for a resource.

func (*InMemoryBackend) PutResourceLogLevel

func (b *InMemoryBackend) PutResourceLogLevel(resourceID, logLevel string) error

PutResourceLogLevel sets the log level for a specific resource.

func (*InMemoryBackend) Reset

func (b *InMemoryBackend) Reset()

Reset clears all in-memory state, returning the backend to a pristine condition.

func (*InMemoryBackend) ResetAllResourceLogLevels

func (b *InMemoryBackend) ResetAllResourceLogLevels() error

ResetAllResourceLogLevels clears all resource-level log level overrides.

func (*InMemoryBackend) ResetResourceLogLevel

func (b *InMemoryBackend) ResetResourceLogLevel(resourceID string) error

ResetResourceLogLevel clears the log level override for a specific resource.

func (*InMemoryBackend) Restore

func (b *InMemoryBackend) Restore(ctx context.Context, data []byte) error

Restore loads backend state from a JSON snapshot. It implements persistence.Persistable.

func (*InMemoryBackend) Snapshot

func (b *InMemoryBackend) Snapshot(ctx context.Context) []byte

Snapshot serialises the backend state to JSON. It implements persistence.Persistable.

func (*InMemoryBackend) StartBulkAssociateWirelessDeviceWithMulticastGroup added in v1.2.0

func (b *InMemoryBackend) StartBulkAssociateWirelessDeviceWithMulticastGroup(
	accountID, region, multicastGroupID string,
) error

StartBulkAssociateWirelessDeviceWithMulticastGroup associates every wireless device in the account/region with the multicast group. Real AWS filters candidates by the request's QueryString search expression against device attributes; this backend has no query-expression evaluator, so it emulates the "all qualifying devices" semantics by associating the full device corpus, matching this package's existing convention for List* ops that accept-but-can't-honor a narrowing filter (see PARITY.md gaps).

func (*InMemoryBackend) StartBulkDisassociateWirelessDeviceFromMulticastGroup added in v1.2.0

func (b *InMemoryBackend) StartBulkDisassociateWirelessDeviceFromMulticastGroup(multicastGroupID string) error

StartBulkDisassociateWirelessDeviceFromMulticastGroup disassociates every wireless device in the account/region from the multicast group -- the bulk-disassociate counterpart of StartBulkAssociateWirelessDeviceWithMulticastGroup.

func (*InMemoryBackend) StartFuotaTask

func (b *InMemoryBackend) StartFuotaTask(accountID, region, id string, startTime *time.Time) error

StartFuotaTask transitions the FUOTA task's Status to "FuotaSession_Waiting" (types.FuotaTaskStatusFuotaSessionWaiting), matching real AWS's lifecycle for a task moved out of "Pending" by StartFuotaTask. Previously this corrupted FirmwareUpdateRole by overwriting it with a fabricated status string instead of tracking status as its own field. startTime, when non-nil, is StartFuotaTaskInput.LoRaWAN.StartTime (types.LoRaWANStartFuotaTask, types.go:1202); a nil value leaves any previously recorded start time untouched rather than clearing it.

func (*InMemoryBackend) StartMulticastGroupSession

func (b *InMemoryBackend) StartMulticastGroupSession(multicastGroupID string) error

StartMulticastGroupSession marks a multicast group session as active, recording its start time so GetMulticastGroupSession can report it back.

func (*InMemoryBackend) StartSingleWirelessDeviceImportTask

func (b *InMemoryBackend) StartSingleWirelessDeviceImportTask(
	accountID, region, destinationName string,
) (*SingleWirelessDeviceImportTask, error)

StartSingleWirelessDeviceImportTask creates a single wireless device import task.

func (*InMemoryBackend) StartWirelessDeviceImportTask

func (b *InMemoryBackend) StartWirelessDeviceImportTask(
	accountID, region, destinationName string,
) (*WirelessDeviceImportTask, error)

StartWirelessDeviceImportTask creates a bulk wireless device import task.

func (*InMemoryBackend) TagResource

func (b *InMemoryBackend) TagResource(arn string, tags map[string]string) error

TagResource adds or updates tags on a resource identified by ARN.

func (*InMemoryBackend) UntagResource

func (b *InMemoryBackend) UntagResource(arn string, tagKeys []string) error

UntagResource removes tags from a resource identified by ARN. If all tags are removed the empty map entry is cleaned up to prevent memory leaks.

func (*InMemoryBackend) UpdateDestination

func (b *InMemoryBackend) UpdateDestination(
	accountID, region, name, expression, expressionType, roleArn, description string,
) error

UpdateDestination updates mutable fields on an existing destination.

func (*InMemoryBackend) UpdateEventConfigurationByResourceTypes

func (b *InMemoryBackend) UpdateEventConfigurationByResourceTypes(doc *EventConfigDoc)

UpdateEventConfigurationByResourceTypes replaces the account-wide default event configuration.

func (*InMemoryBackend) UpdateFuotaTask

func (b *InMemoryBackend) UpdateFuotaTask(
	accountID, region, id, name, description, descriptor, firmwareUpdateImage, firmwareUpdateRole string,
	fragmentIntervalMS, fragmentSizeBytes, redundancyPercent int32,
	loRaWAN *LoRaWANFuotaTask,
) error

UpdateFuotaTask updates mutable fields on an existing FUOTA task. UpdateFuotaTaskInput.LoRaWAN is the same LoRaWANFuotaTask shape as CreateFuotaTask's (api_op_UpdateFuotaTask.go:64), so a non-nil value replaces the stored LoRaWAN wholesale rather than merging field by field. descriptor, firmwareUpdateImage and firmwareUpdateRole only apply when non-empty, and fragmentIntervalMS/fragmentSizeBytes/redundancyPercent only apply when non-zero, matching the name != "" convention already used for Name -- see UpdateWirelessDevice/UpdateMulticastGroup for the same pattern.

func (*InMemoryBackend) UpdateLogLevelsByResourceTypes

func (b *InMemoryBackend) UpdateLogLevelsByResourceTypes(cfg LogLevelsConfig) error

UpdateLogLevelsByResourceTypes replaces the account-wide default log-level configuration.

func (*InMemoryBackend) UpdateMetricConfigurationStatus

func (b *InMemoryBackend) UpdateMetricConfigurationStatus(status string) error

UpdateMetricConfigurationStatus sets the account's summary metric aggregation status.

func (*InMemoryBackend) UpdateMulticastGroup

func (b *InMemoryBackend) UpdateMulticastGroup(
	accountID, region, id, name, description string,
	loRaWAN *LoRaWANMulticast,
) error

UpdateMulticastGroup updates mutable fields on an existing multicast group. UpdateMulticastGroupInput.LoRaWAN is the same LoRaWANMulticast shape as CreateMulticastGroup's (api_op_UpdateMulticastGroup.go:39), so a non-nil value replaces the stored LoRaWAN wholesale rather than merging field by field.

func (*InMemoryBackend) UpdateNetworkAnalyzerConfig

func (b *InMemoryBackend) UpdateNetworkAnalyzerConfig(
	accountID, region, name, description string,
	wirelessDevices, wirelessGateways []string,
	traceContent *TraceContent,
) error

UpdateNetworkAnalyzerConfig updates mutable fields on an existing network analyzer configuration. traceContent, if non-nil, replaces the stored TraceContent wholesale rather than merging field-by-field: unlike LoRaWANUpdateDevice, types.TraceContent's fields (LogLevel/ MulticastFrameInfo/WirelessDeviceFrameInfo) aren't optional pointers, so there is no way for a client to express "leave this one sub-field alone".

func (*InMemoryBackend) UpdatePosition

func (b *InMemoryBackend) UpdatePosition(resourceID string, position map[string]any) error

UpdatePosition updates the position data for a resource.

func (*InMemoryBackend) UpdateResourceEventConfiguration

func (b *InMemoryBackend) UpdateResourceEventConfiguration(
	identifier, identifierType, partnerType string, doc *EventConfigDoc,
)

UpdateResourceEventConfiguration stores the event configuration for a specific resource identifier.

func (*InMemoryBackend) UpdateWirelessDevice

func (b *InMemoryBackend) UpdateWirelessDevice(
	accountID, region, id, name, description, destinationName, positioning string,
	loRaWAN *LoRaWANUpdateDevice, sidewalk *SidewalkUpdateWirelessDevice,
) error

UpdateWirelessDevice updates mutable fields on an existing wireless device. loRaWAN/sidewalk are merged field-by-field into the stored configuration (rather than wholesale replaced), matching real AWS's UpdateWirelessDevice semantics of updating only the LoRaWANUpdateDevice/SidewalkUpdateWirelessDevice sub-fields the client actually supplied (e.g. LoRaWANUpdateDevice only carries DeviceProfileID/ServiceProfileID/ABP/FPorts -- not DevEui -- so a full replace would silently drop DevEui that CreateWirelessDevice originally stored).

func (*InMemoryBackend) UpdateWirelessDeviceImportTask

func (b *InMemoryBackend) UpdateWirelessDeviceImportTask(id, destinationName string) error

UpdateWirelessDeviceImportTask updates the destination name of a wireless device import task.

func (*InMemoryBackend) UpdateWirelessGateway

func (b *InMemoryBackend) UpdateWirelessGateway(
	accountID, region, id, name, description string,
	joinEuiFilters [][]string, netIDFilters []string, maxEirp *float32,
) error

UpdateWirelessGateway updates mutable fields on an existing wireless gateway. UpdateWirelessGatewayInput carries JoinEuiFilters/MaxEirp/ NetIDFilters as top-level fields (not nested under a LoRaWAN sub-object, unlike Create -- api_op_UpdateWirelessGateway.go:27), so they merge field-by-field into the stored LoRaWANGateway; a nil/empty value leaves the existing field untouched.

type ListWirelessDevicesFilter added in v1.3.1

type ListWirelessDevicesFilter struct {
	DestinationName    string
	DeviceProfileID    string
	ServiceProfileID   string
	FuotaTaskID        string
	MulticastGroupID   string
	WirelessDeviceType string
}

ListWirelessDevicesFilter narrows ListWirelessDevices' result set. Each non-empty field is a query-string filter on ListWirelessDevicesInput (destinationName/deviceProfileId/serviceProfileId/fuotaTaskId/ multicastGroupId/wirelessDeviceType -- api_op_ListWirelessDevices.go:29-56, serializers.go:6439). Multiple set filters combine with AND: this isn't documented in the SDK model (the client just forwards whatever query params are set), so this is a chosen semantic, matching how every other narrowing List filter in this codebase intersects rather than unions.

type LoRaWANDevice added in v1.3.1

type LoRaWANDevice struct {
	AbpV1_0X         *AbpV1_0X  `json:"AbpV1_0_x,omitempty"`
	AbpV1_1          *AbpV1_1   `json:"AbpV1_1,omitempty"`
	FPorts           *FPorts    `json:"FPorts,omitempty"`
	OtaaV1_0X        *OtaaV1_0X `json:"OtaaV1_0_x,omitempty"`
	OtaaV1_1         *OtaaV1_1  `json:"OtaaV1_1,omitempty"`
	DevEui           *string    `json:"DevEui,omitempty"`
	DeviceProfileID  *string    `json:"DeviceProfileId,omitempty"`
	ServiceProfileID *string    `json:"ServiceProfileId,omitempty"`
}

LoRaWANDevice mirrors types.LoRaWANDevice -- the CreateWirelessDevice request / GetWirelessDevice response shape (types.go:723).

type LoRaWANDeviceProfile added in v1.3.1

type LoRaWANDeviceProfile struct {
	PingSlotDr             *int32  `json:"PingSlotDr,omitempty"`
	PingSlotPeriod         *int32  `json:"PingSlotPeriod,omitempty"`
	RegParamsRevision      *string `json:"RegParamsRevision,omitempty"`
	PingSlotFreq           *int32  `json:"PingSlotFreq,omitempty"`
	ClassBTimeout          *int32  `json:"ClassBTimeout,omitempty"`
	ClassCTimeout          *int32  `json:"ClassCTimeout,omitempty"`
	MaxDutyCycle           *int32  `json:"MaxDutyCycle,omitempty"`
	MaxEirp                *int32  `json:"MaxEirp,omitempty"`
	MacVersion             *string `json:"MacVersion,omitempty"`
	SupportsJoin           *bool   `json:"SupportsJoin,omitempty"`
	RfRegion               *string `json:"RfRegion,omitempty"`
	RxDataRate2            *int32  `json:"RxDataRate2,omitempty"`
	RxDelay1               *int32  `json:"RxDelay1,omitempty"`
	RxDrOffset1            *int32  `json:"RxDrOffset1,omitempty"`
	RxFreq2                *int32  `json:"RxFreq2,omitempty"`
	FactoryPresetFreqsList []int32 `json:"FactoryPresetFreqsList,omitempty"`
	Supports32BitFCnt      bool    `json:"Supports32BitFCnt,omitempty"`
	SupportsClassB         bool    `json:"SupportsClassB,omitempty"`
	SupportsClassC         bool    `json:"SupportsClassC,omitempty"`
}

LoRaWANDeviceProfile mirrors types.LoRaWANDeviceProfile -- shared verbatim by CreateDeviceProfile's request and GetDeviceProfile's response (types.go:780), unlike ServiceProfile/FuotaTask/MulticastGroup which each have a narrower create shape and a wider get shape.

type LoRaWANFuotaTask added in v1.3.1

type LoRaWANFuotaTask struct {
	RfRegion string `json:"RfRegion,omitempty"`
}

LoRaWANFuotaTask mirrors types.LoRaWANFuotaTask -- shared by CreateFuotaTask's and UpdateFuotaTask's request (types.go:844).

type LoRaWANFuotaTaskGetInfo added in v1.3.1

type LoRaWANFuotaTaskGetInfo struct {
	RfRegion  *string `json:"RfRegion,omitempty"`
	StartTime *string `json:"StartTime,omitempty"`
}

LoRaWANFuotaTaskGetInfo mirrors types.LoRaWANFuotaTaskGetInfo -- the GetFuotaTask response shape (types.go:853). StartTime is an ISO8601 string on the wire (smithytime.FormatDateTime/ParseDateTime, deserializers.go:19509) set from StartFuotaTaskInput.LoRaWAN.StartTime, captured by StartFuotaTask into FuotaTask.StartTime.

type LoRaWANGateway added in v1.3.1

type LoRaWANGateway struct {
	Beaconing      *Beaconing `json:"Beaconing,omitempty"`
	GatewayEui     *string    `json:"GatewayEui,omitempty"`
	MaxEirp        *float32   `json:"MaxEirp,omitempty"`
	RfRegion       *string    `json:"RfRegion,omitempty"`
	JoinEuiFilters [][]string `json:"JoinEuiFilters,omitempty"`
	NetIDFilters   []string   `json:"NetIdFilters,omitempty"`
	SubBands       []int32    `json:"SubBands,omitempty"`
}

LoRaWANGateway mirrors types.LoRaWANGateway, shared by CreateWirelessGateway/GetWirelessGateway (types.go:865).

type LoRaWANGatewayVersion added in v1.3.1

type LoRaWANGatewayVersion struct {
	Model          *string `json:"Model,omitempty"`
	PackageVersion *string `json:"PackageVersion,omitempty"`
	Station        *string `json:"Station,omitempty"`
}

LoRaWANGatewayVersion mirrors types.LoRaWANGatewayVersion (types.go:918).

type LoRaWANGetServiceProfileInfo added in v1.3.1

type LoRaWANGetServiceProfileInfo struct {
	ChannelMask            *string `json:"ChannelMask,omitempty"`
	DevStatusReqFreq       *int32  `json:"DevStatusReqFreq,omitempty"`
	DlBucketSize           *int32  `json:"DlBucketSize,omitempty"`
	DlRate                 *int32  `json:"DlRate,omitempty"`
	DlRatePolicy           *string `json:"DlRatePolicy,omitempty"`
	MinGwDiversity         *int32  `json:"MinGwDiversity,omitempty"`
	NbTransMax             *int32  `json:"NbTransMax,omitempty"`
	NbTransMin             *int32  `json:"NbTransMin,omitempty"`
	TxPowerIndexMax        *int32  `json:"TxPowerIndexMax,omitempty"`
	TxPowerIndexMin        *int32  `json:"TxPowerIndexMin,omitempty"`
	UlBucketSize           *int32  `json:"UlBucketSize,omitempty"`
	UlRate                 *int32  `json:"UlRate,omitempty"`
	UlRatePolicy           *string `json:"UlRatePolicy,omitempty"`
	DrMax                  int32   `json:"DrMax,omitempty"`
	DrMin                  int32   `json:"DrMin,omitempty"`
	TargetPer              int32   `json:"TargetPer,omitempty"`
	AddGwMetadata          bool    `json:"AddGwMetadata,omitempty"`
	HrAllowed              bool    `json:"HrAllowed,omitempty"`
	NwkGeoLoc              bool    `json:"NwkGeoLoc,omitempty"`
	PrAllowed              bool    `json:"PrAllowed,omitempty"`
	RaAllowed              bool    `json:"RaAllowed,omitempty"`
	ReportDevStatusBattery bool    `json:"ReportDevStatusBattery,omitempty"`
	ReportDevStatusMargin  bool    `json:"ReportDevStatusMargin,omitempty"`
}

LoRaWANGetServiceProfileInfo mirrors types.LoRaWANGetServiceProfileInfo -- the GetServiceProfile response shape (types.go:933), wider than LoRaWANServiceProfile: ChannelMask, DevStatusReqFreq, DlBucketSize, DlRate, DlRatePolicy, HrAllowed, MinGwDiversity, NwkGeoLoc, TargetPer, UlBucketSize, UlRate and UlRatePolicy are AWS-computed and only ever appear on Get, never on Create.

type LoRaWANListDevice added in v1.3.1

type LoRaWANListDevice struct {
	DevEui *string `json:"DevEui,omitempty"`
}

LoRaWANListDevice mirrors types.LoRaWANListDevice -- the ListWirelessDevices entry shape (types.go:1034): DevEui only.

type LoRaWANMulticast added in v1.3.1

type LoRaWANMulticast struct {
	DefaultSessionParameters *DefaultSessionParametersMulticast `json:"DefaultSessionParameters,omitempty"`
	ParticipatingGateways    *ParticipatingGatewaysMulticast    `json:"ParticipatingGateways,omitempty"`
	DlClass                  string                             `json:"DlClass,omitempty"`
	RfRegion                 string                             `json:"RfRegion,omitempty"`
}

LoRaWANMulticast mirrors types.LoRaWANMulticast -- shared by CreateMulticastGroup's and UpdateMulticastGroup's request (types.go:1043).

type LoRaWANMulticastGet added in v1.3.1

type LoRaWANMulticastGet struct {
	DefaultSessionParameters *DefaultSessionParametersMulticast `json:"DefaultSessionParameters,omitempty"`
	ParticipatingGateways    *ParticipatingGatewaysMulticast    `json:"ParticipatingGateways,omitempty"`
	NumberOfDevicesInGroup   *int32                             `json:"NumberOfDevicesInGroup,omitempty"`
	NumberOfDevicesRequested *int32                             `json:"NumberOfDevicesRequested,omitempty"`
	DlClass                  string                             `json:"DlClass,omitempty"`
	RfRegion                 string                             `json:"RfRegion,omitempty"`
}

LoRaWANMulticastGet mirrors types.LoRaWANMulticastGet -- the GetMulticastGroup response shape (types.go:1064): same fields as LoRaWANMulticast plus NumberOfDevicesInGroup/NumberOfDevicesRequested.

type LoRaWANServiceProfile added in v1.3.1

type LoRaWANServiceProfile struct {
	DrMax           *int32 `json:"DrMax,omitempty"`
	DrMin           *int32 `json:"DrMin,omitempty"`
	NbTransMax      *int32 `json:"NbTransMax,omitempty"`
	NbTransMin      *int32 `json:"NbTransMin,omitempty"`
	TxPowerIndexMax *int32 `json:"TxPowerIndexMax,omitempty"`
	TxPowerIndexMin *int32 `json:"TxPowerIndexMin,omitempty"`
	AddGwMetadata   bool   `json:"AddGwMetadata,omitempty"`
	PrAllowed       bool   `json:"PrAllowed,omitempty"`
	RaAllowed       bool   `json:"RaAllowed,omitempty"`
}

LoRaWANServiceProfile mirrors types.LoRaWANServiceProfile -- the CreateServiceProfile request shape (types.go:1161).

type LoRaWANStartFuotaTask added in v1.3.1

type LoRaWANStartFuotaTask struct {
	StartTime *string `json:"StartTime,omitempty"`
}

LoRaWANStartFuotaTask mirrors types.LoRaWANStartFuotaTask -- the StartFuotaTask request shape (types.go:1202). It carries only StartTime; unlike LoRaWANFuotaTask's RfRegion, there is nothing else to set.

type LoRaWANUpdateDevice added in v1.3.1

type LoRaWANUpdateDevice struct {
	AbpV1_0X         *UpdateAbpV1_0X `json:"AbpV1_0_x,omitempty"`
	AbpV1_1          *UpdateAbpV1_1  `json:"AbpV1_1,omitempty"`
	FPorts           *UpdateFPorts   `json:"FPorts,omitempty"`
	DeviceProfileID  *string         `json:"DeviceProfileId,omitempty"`
	ServiceProfileID *string         `json:"ServiceProfileId,omitempty"`
}

LoRaWANUpdateDevice mirrors types.LoRaWANUpdateDevice -- the narrower UpdateWirelessDevice request shape (types.go:1211): only DeviceProfileID/ ServiceProfileID/Abp/FPorts are updatable, DevEui and Otaa are not.

type LoRaWANUpdateGatewayTaskCreate added in v1.3.1

type LoRaWANUpdateGatewayTaskCreate struct {
	CurrentVersion  *LoRaWANGatewayVersion `json:"CurrentVersion,omitempty"`
	UpdateVersion   *LoRaWANGatewayVersion `json:"UpdateVersion,omitempty"`
	UpdateSignature *string                `json:"UpdateSignature,omitempty"`
	SigKeyCrc       *int64                 `json:"SigKeyCrc,omitempty"`
}

LoRaWANUpdateGatewayTaskCreate mirrors types.LoRaWANUpdateGatewayTaskCreate (types.go:1232).

type LoRaWANUpdateGatewayTaskEntry added in v1.3.1

type LoRaWANUpdateGatewayTaskEntry struct {
	CurrentVersion *LoRaWANGatewayVersion `json:"CurrentVersion,omitempty"`
	UpdateVersion  *LoRaWANGatewayVersion `json:"UpdateVersion,omitempty"`
}

LoRaWANUpdateGatewayTaskEntry mirrors types.LoRaWANUpdateGatewayTaskEntry (types.go:1250) -- narrower than LoRaWANUpdateGatewayTaskCreate: real AWS's ListWirelessGatewayTaskDefinitions entry (types.UpdateWirelessGatewayTaskEntry.LoRaWAN, types.go:2206) carries only CurrentVersion/UpdateVersion, not SigKeyCrc/UpdateSignature.

type LogLevelsConfig added in v1.2.0

type LogLevelsConfig struct {
	DefaultLogLevel           string
	FuotaTaskLogOptions       []map[string]any
	WirelessDeviceLogOptions  []map[string]any
	WirelessGatewayLogOptions []map[string]any
}

LogLevelsConfig is the account-wide default log-level configuration set via UpdateLogLevelsByResourceTypes. FuotaTaskLogOptions/ WirelessDeviceLogOptions/WirelessGatewayLogOptions hold the request's nested log-option-list objects verbatim (see the WirelessDevice.LoRaWAN doc comment in models.go for why opaque storage is used for these client-submitted nested configs) -- previously these three fields were silently accepted by UpdateLogLevelsByResourceTypesInput and dropped, always echoing back empty arrays regardless of what was set.

type MulticastGroup

type MulticastGroup struct {
	CreatedAt time.Time         `json:"createdAt"`
	Tags      map[string]string `json:"tags,omitempty"`
	// LoRaWAN holds the create/update-shape LoRaWANMulticast; GetMulticastGroup
	// converts it to LoRaWANMulticastGet via loRaWANMulticastGetFrom
	// (lorawan_types.go), adding the real device-association count.
	LoRaWAN     *LoRaWANMulticast `json:"loRaWAN,omitempty"`
	Name        string            `json:"name"`
	ID          string            `json:"id"`
	ARN         string            `json:"arn"`
	Description string            `json:"description,omitempty"`
	Status      string            `json:"status"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

MulticastGroup represents an IoT Wireless multicast group.

type NetworkAnalyzerConfig

type NetworkAnalyzerConfig struct {
	Tags             map[string]string `json:"tags,omitempty"`
	Name             string            `json:"name"`
	ARN              string            `json:"arn"`
	Description      string            `json:"description,omitempty"`
	AccountID        string            `json:"-"`
	Region           string            `json:"-"`
	TraceContent     *TraceContent     `json:"traceContent,omitempty"`
	WirelessDevices  []string          `json:"wirelessDevices,omitempty"`
	WirelessGateways []string          `json:"wirelessGateways,omitempty"`
	MulticastGroups  []string          `json:"multicastGroups,omitempty"`
}

NetworkAnalyzerConfig represents an IoT Wireless network analyzer configuration.

type OtaaV1_0X added in v1.3.1

type OtaaV1_0X struct {
	AppEui    *string `json:"AppEui,omitempty"`
	AppKey    *string `json:"AppKey,omitempty"`
	GenAppKey *string `json:"GenAppKey,omitempty"`
	JoinEui   *string `json:"JoinEui,omitempty"`
}

OtaaV1_0X mirrors types.OtaaV1_0X (types.go:1453).

type OtaaV1_1 added in v1.3.1

type OtaaV1_1 struct {
	AppKey  *string `json:"AppKey,omitempty"`
	JoinEui *string `json:"JoinEui,omitempty"`
	NwkKey  *string `json:"NwkKey,omitempty"`
}

OtaaV1_1 mirrors types.OtaaV1_1 (types.go:1473).

type ParticipatingGatewaysMulticast added in v1.3.1

type ParticipatingGatewaysMulticast struct {
	TransmissionInterval *int32   `json:"TransmissionInterval,omitempty"`
	GatewayList          []string `json:"GatewayList,omitempty"`
}

ParticipatingGatewaysMulticast mirrors types.ParticipatingGatewaysMulticast (types.go:1515).

type PositionConfigEntry

type PositionConfigEntry struct {
	Solvers            map[string]any `json:"solvers,omitempty"`
	ResourceIdentifier string         `json:"resourceIdentifier"`
	ResourceType       string         `json:"resourceType"`
	Destination        string         `json:"destination,omitempty"`
}

PositionConfigEntry represents a stored position configuration for a wireless device or gateway resource, as set via PutPositionConfiguration.

type Positioning added in v1.3.1

type Positioning struct {
	ClockSync *int32 `json:"ClockSync,omitempty"`
	Gnss      *int32 `json:"Gnss,omitempty"`
	Stream    *int32 `json:"Stream,omitempty"`
}

Positioning mirrors types.Positioning (types.go:1551): FPort assignments for the GNSS/stream/ClockSync positioning functions.

type Provider

type Provider struct{}

Provider implements service.Provider for the IoT Wireless service.

func (*Provider) Init

Init initializes the IoT Wireless service backend and handler.

func (*Provider) Name

func (p *Provider) Name() string

Name returns the provider name.

type QueuedMessage

type QueuedMessage struct {
	ReceivedAt    time.Time
	MessageID     string
	PayloadBase64 string
	TransmitMode  int32
}

QueuedMessage represents a downlink message queued for a wireless device.

type Resettable

type Resettable interface {
	Reset()
}

Resettable is an optional interface that a StorageBackend may implement to support clearing all state (e.g. for test teardown).

type ResourceEventConfigEntry

type ResourceEventConfigEntry struct {
	Config         EventConfigDoc `json:"config"`
	Identifier     string         `json:"identifier"`
	IdentifierType string         `json:"identifierType"`
	PartnerType    string         `json:"partnerType,omitempty"`
}

ResourceEventConfigEntry represents a stored per-resource event configuration, as set via UpdateResourceEventConfiguration.

type ServiceProfile

type ServiceProfile struct {
	CreatedAt time.Time         `json:"createdAt"`
	Tags      map[string]string `json:"tags,omitempty"`
	// LoRaWAN holds the create-shape LoRaWANServiceProfile; GetServiceProfile
	// converts it to the wider LoRaWANGetServiceProfileInfo via
	// loRaWANGetServiceProfileInfoFrom (lorawan_types.go).
	LoRaWAN *LoRaWANServiceProfile `json:"loRaWAN,omitempty"`
	Name    string                 `json:"name"`
	ID      string                 `json:"id"`
	ARN     string                 `json:"arn"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

ServiceProfile contains settings for a LoRaWAN service profile.

type SessionKeysAbpV1_0X added in v1.3.1

type SessionKeysAbpV1_0X struct {
	AppSKey *string `json:"AppSKey,omitempty"`
	NwkSKey *string `json:"NwkSKey,omitempty"`
}

SessionKeysAbpV1_0X mirrors types.SessionKeysAbpV1_0X (types.go:1658).

type SessionKeysAbpV1_1 added in v1.3.1

type SessionKeysAbpV1_1 struct {
	AppSKey     *string `json:"AppSKey,omitempty"`
	FNwkSIntKey *string `json:"FNwkSIntKey,omitempty"`
	NwkSEncKey  *string `json:"NwkSEncKey,omitempty"`
	SNwkSIntKey *string `json:"SNwkSIntKey,omitempty"`
}

SessionKeysAbpV1_1 mirrors types.SessionKeysAbpV1_1 (types.go:1670).

type SidewalkCreateDeviceProfile added in v1.3.1

type SidewalkCreateDeviceProfile struct{}

SidewalkCreateDeviceProfile mirrors types.SidewalkCreateDeviceProfile -- the CreateDeviceProfile request shape (types.go:1715). It carries no fields at all: unlike SidewalkCreateWirelessDevice, a Sidewalk device profile has no client-configurable settings, so this struct's only purpose is to distinguish "Sidewalk key present" from "absent" on decode.

type SidewalkCreateWirelessDevice added in v1.3.1

type SidewalkCreateWirelessDevice struct {
	Positioning             *SidewalkPositioning `json:"Positioning,omitempty"`
	DeviceProfileID         *string              `json:"DeviceProfileId,omitempty"`
	SidewalkManufacturingSn *string              `json:"SidewalkManufacturingSn,omitempty"`
}

SidewalkCreateWirelessDevice mirrors types.SidewalkCreateWirelessDevice -- the CreateWirelessDevice request shape (types.go:1720).

type SidewalkDevice added in v1.3.1

type SidewalkDevice struct {
	Positioning             *SidewalkPositioning `json:"Positioning,omitempty"`
	AmazonID                *string              `json:"AmazonId,omitempty"`
	CertificateID           *string              `json:"CertificateId,omitempty"`
	DeviceProfileID         *string              `json:"DeviceProfileId,omitempty"`
	SidewalkID              *string              `json:"SidewalkId,omitempty"`
	SidewalkManufacturingSn *string              `json:"SidewalkManufacturingSn,omitempty"`
	Status                  string               `json:"Status,omitempty"`
	DeviceCertificates      []CertificateList    `json:"DeviceCertificates,omitempty"`
	PrivateKeys             []CertificateList    `json:"PrivateKeys,omitempty"`
}

SidewalkDevice mirrors types.SidewalkDevice -- the GetWirelessDevice response shape (types.go:1735), a superset of SidewalkCreateWirelessDevice carrying AWS-assigned identity fields this backend never fabricates.

type SidewalkGetDeviceProfile added in v1.3.1

type SidewalkGetDeviceProfile struct {
	ApplicationServerPublicKey *string                  `json:"ApplicationServerPublicKey,omitempty"`
	QualificationStatus        *bool                    `json:"QualificationStatus,omitempty"`
	DakCertificateMetadata     []DakCertificateMetadata `json:"DakCertificateMetadata,omitempty"`
}

SidewalkGetDeviceProfile mirrors types.SidewalkGetDeviceProfile -- the GetDeviceProfile response shape (types.go:1796). Its fields are AWS-assigned at provisioning time; this backend never fabricates them, so they stay unset even when the profile is a Sidewalk profile.

type SidewalkListDevice added in v1.3.1

type SidewalkListDevice struct {
	Positioning             *SidewalkPositioning `json:"Positioning,omitempty"`
	AmazonID                *string              `json:"AmazonId,omitempty"`
	DeviceProfileID         *string              `json:"DeviceProfileId,omitempty"`
	SidewalkID              *string              `json:"SidewalkId,omitempty"`
	SidewalkManufacturingSn *string              `json:"SidewalkManufacturingSn,omitempty"`
	Status                  string               `json:"Status,omitempty"`
	DeviceCertificates      []CertificateList    `json:"DeviceCertificates,omitempty"`
}

SidewalkListDevice mirrors types.SidewalkListDevice -- the ListWirelessDevices entry shape (types.go:1828).

type SidewalkPositioning added in v1.3.1

type SidewalkPositioning struct {
	DestinationName *string `json:"DestinationName,omitempty"`
}

SidewalkPositioning mirrors types.SidewalkPositioning (types.go:1865).

type SidewalkUpdateWirelessDevice added in v1.3.1

type SidewalkUpdateWirelessDevice struct {
	Positioning *SidewalkPositioning `json:"Positioning,omitempty"`
}

SidewalkUpdateWirelessDevice mirrors types.SidewalkUpdateWirelessDevice -- the UpdateWirelessDevice request shape (types.go:1948): only Positioning is updatable.

type SingleWirelessDeviceImportTask

type SingleWirelessDeviceImportTask struct {
	CreatedAt        time.Time `json:"createdAt"`
	ARN              string    `json:"arn"`
	WirelessDeviceID string    `json:"wirelessDeviceId"`
	DestinationName  string    `json:"destinationName"`
	Status           string    `json:"status"`
}

SingleWirelessDeviceImportTask represents an IoT Wireless single-device import task.

type Snapshottable

type Snapshottable interface {
	Snapshot(ctx context.Context) []byte
	Restore(ctx context.Context, data []byte) error
}

Snapshottable is an optional interface that a StorageBackend may implement to support state serialisation and restoration (e.g. for --persist mode). Backends that do not implement it are silently skipped during snapshot/restore.

type StorageBackend

type StorageBackend interface {
	Reset()

	CreateWirelessDevice(
		accountID, region, name, devType, destinationName, description, positioning string,
		loRaWAN *LoRaWANDevice, sidewalk *SidewalkCreateWirelessDevice,
		tags map[string]string,
	) (*WirelessDevice, error)
	GetWirelessDevice(accountID, region, id string) (*WirelessDevice, error)
	ListWirelessDevices(accountID, region string, filter ListWirelessDevicesFilter) []*WirelessDevice
	DeleteWirelessDevice(accountID, region, id string) error

	CreateWirelessGateway(
		accountID, region, name, description string,
		loRaWAN *LoRaWANGateway,
		tags map[string]string,
	) (*WirelessGateway, error)
	GetWirelessGateway(accountID, region, id string) (*WirelessGateway, error)
	ListWirelessGateways(accountID, region string) []*WirelessGateway
	DeleteWirelessGateway(accountID, region, id string) error

	CreateServiceProfile(
		accountID, region, name string,
		loRaWAN *LoRaWANServiceProfile,
		tags map[string]string,
	) (*ServiceProfile, error)
	GetServiceProfile(accountID, region, id string) (*ServiceProfile, error)
	ListServiceProfiles(accountID, region string) []*ServiceProfile
	DeleteServiceProfile(accountID, region, id string) error

	CreateDestination(
		accountID, region, name, expression, expressionType, roleArn, description string,
		tags map[string]string,
	) (*Destination, error)
	GetDestination(accountID, region, name string) (*Destination, error)
	ListDestinations(accountID, region string) []*Destination
	DeleteDestination(accountID, region, name string) error

	CreateDeviceProfile(
		accountID, region, name string,
		loRaWAN *LoRaWANDeviceProfile,
		sidewalk *SidewalkCreateDeviceProfile,
		tags map[string]string,
	) (*DeviceProfile, error)
	GetDeviceProfile(accountID, region, id string) (*DeviceProfile, error)
	ListDeviceProfiles(accountID, region string) []*DeviceProfile
	DeleteDeviceProfile(accountID, region, id string) error

	CreateFuotaTask(
		accountID, region, name, description, firmwareUpdateImage, firmwareUpdateRole, descriptor string,
		fragmentIntervalMS, fragmentSizeBytes, redundancyPercent int32,
		loRaWAN *LoRaWANFuotaTask,
		tags map[string]string,
	) (*FuotaTask, error)
	GetFuotaTask(accountID, region, id string) (*FuotaTask, error)
	ListFuotaTasks(accountID, region string) []*FuotaTask
	DeleteFuotaTask(accountID, region, id string) error
	UpdateFuotaTask(
		accountID, region, id, name, description, descriptor, firmwareUpdateImage, firmwareUpdateRole string,
		fragmentIntervalMS, fragmentSizeBytes, redundancyPercent int32,
		loRaWAN *LoRaWANFuotaTask,
	) error

	UpdateWirelessGateway(
		accountID, region, id, name, description string,
		joinEuiFilters [][]string, netIDFilters []string, maxEirp *float32,
	) error

	UpdateDestination(accountID, region, name, expression, expressionType, roleArn, description string) error

	CreateMulticastGroup(
		accountID, region, name, description string,
		loRaWAN *LoRaWANMulticast,
		tags map[string]string,
	) (*MulticastGroup, error)
	GetMulticastGroup(accountID, region, id string) (*MulticastGroup, error)
	ListMulticastGroups(accountID, region string) []*MulticastGroup
	DeleteMulticastGroup(accountID, region, id string) error
	UpdateMulticastGroup(accountID, region, id, name, description string, loRaWAN *LoRaWANMulticast) error

	CreateNetworkAnalyzerConfig(
		accountID, region, name, description string,
		wirelessDevices, wirelessGateways, multicastGroups []string,
		traceContent *TraceContent,
		tags map[string]string,
	) (*NetworkAnalyzerConfig, error)
	GetNetworkAnalyzerConfig(accountID, region, name string) (*NetworkAnalyzerConfig, error)
	ListNetworkAnalyzerConfigs(accountID, region string) []*NetworkAnalyzerConfig
	DeleteNetworkAnalyzerConfig(accountID, region, name string) error
	UpdateNetworkAnalyzerConfig(
		accountID, region, name, description string,
		wirelessDevices, wirelessGateways []string,
		traceContent *TraceContent,
	) error

	AssociateAwsAccountWithPartnerAccount(
		accountID, region, partnerAccountID string,
		tags map[string]string,
	) (string, error)
	AssociateMulticastGroupWithFuotaTask(fuotaTaskID, multicastGroupID string) error
	AssociateWirelessDeviceWithFuotaTask(fuotaTaskID, wirelessDeviceID string) error
	AssociateWirelessDeviceWithMulticastGroup(multicastGroupID, wirelessDeviceID string) error
	AssociateWirelessDeviceWithThing(accountID, region, wirelessDeviceID, thingArn string) error
	AssociateWirelessGatewayWithCertificate(accountID, region, gatewayID, iotCertificateID string) (string, error)
	AssociateWirelessGatewayWithThing(accountID, region, gatewayID, thingArn string) error
	CancelMulticastGroupSession(multicastGroupID string) error
	ListMulticastGroupDeviceIDs(multicastGroupID string) []string
	ListFuotaTaskDeviceIDs(fuotaTaskID string) []string
	StartBulkAssociateWirelessDeviceWithMulticastGroup(accountID, region, multicastGroupID string) error
	StartBulkDisassociateWirelessDeviceFromMulticastGroup(multicastGroupID string) error

	// GetWirelessDeviceThingArn returns the ARN of the IoT Thing associated
	// with a wireless device via AssociateWirelessDeviceWithThing, or "" if
	// none is associated. Used by GetWirelessDevice to surface ThingArn/
	// ThingName, matching real AWS's response shape.
	GetWirelessDeviceThingArn(wirelessDeviceID string) string
	// GetWirelessGatewayThingArn returns the ARN of the IoT Thing associated
	// with a wireless gateway via AssociateWirelessGatewayWithThing, or "" if
	// none is associated. Used by GetWirelessGateway to surface ThingArn/
	// ThingName, matching real AWS's response shape.
	GetWirelessGatewayThingArn(gatewayID string) string

	// Extended operations implemented across the various <family>.go files.
	StartFuotaTask(accountID, region, id string, startTime *time.Time) error
	DisassociateWirelessDeviceFromFuotaTask(fuotaTaskID, wirelessDeviceID string) error
	ListMulticastGroupsByFuotaTask(accountID, region, fuotaTaskID string) []*MulticastGroup
	DisassociateMulticastGroupFromFuotaTask(fuotaTaskID, multicastGroupID string) error
	DisassociateWirelessDeviceFromMulticastGroup(multicastGroupID, wirelessDeviceID string) error
	StartMulticastGroupSession(multicastGroupID string) error
	GetMulticastGroupSession(multicastGroupID string) (time.Time, error)

	DisassociateWirelessGatewayFromCertificate(accountID, region, gatewayID string) error
	DisassociateWirelessGatewayFromThing(accountID, region, gatewayID string) error
	GetWirelessGatewayCertificate(accountID, region, gatewayID string) (string, error)

	UpdateWirelessDevice(
		accountID, region, id, name, description, destinationName, positioning string,
		loRaWAN *LoRaWANUpdateDevice, sidewalk *SidewalkUpdateWirelessDevice,
	) error
	DisassociateWirelessDeviceFromThing(accountID, region, wirelessDeviceID string) error

	GetPartnerAccount(partnerAccountID string) (string, error)
	ListPartnerAccounts() map[string]string
	DisassociateAwsAccountFromPartnerAccount(partnerAccountID string) error

	GetLogLevelsByResourceTypes() LogLevelsConfig
	UpdateLogLevelsByResourceTypes(cfg LogLevelsConfig) error
	ResetAllResourceLogLevels() error
	GetResourceLogLevel(resourceID string) string
	PutResourceLogLevel(resourceID, logLevel string) error
	ResetResourceLogLevel(resourceID string) error

	CreateWirelessGatewayTask(gatewayID, taskDefID string) (*GatewayTask, error)
	GetWirelessGatewayTask(gatewayID string) (*GatewayTask, error)
	DeleteWirelessGatewayTask(gatewayID string) error
	CreateWirelessGatewayTaskDefinition(
		accountID, region, name string,
		autoCreateTasks bool,
		update *UpdateWirelessGatewayTaskCreate,
	) (*GatewayTaskDefinition, error)
	GetWirelessGatewayTaskDefinition(id string) (*GatewayTaskDefinition, error)
	ListWirelessGatewayTaskDefinitions() []*GatewayTaskDefinition
	DeleteWirelessGatewayTaskDefinition(id string) error

	GetPosition(resourceID string) map[string]any
	UpdatePosition(resourceID string, position map[string]any) error

	PutPositionConfiguration(resourceID, resourceType, destination string, solvers map[string]any) error
	GetPositionConfiguration(resourceID string) (*PositionConfigEntry, bool)
	ListPositionConfigurations(resourceType string) []*PositionConfigEntry

	GetEventConfigurationByResourceTypes() *EventConfigDoc
	UpdateEventConfigurationByResourceTypes(doc *EventConfigDoc)
	ListEventConfigurations(resourceType string) []*ResourceEventConfigEntry
	GetResourceEventConfiguration(identifier string) (*ResourceEventConfigEntry, bool)
	UpdateResourceEventConfiguration(identifier, identifierType, partnerType string, doc *EventConfigDoc)

	GetMetricConfigurationStatus() string
	UpdateMetricConfigurationStatus(status string) error

	ListQueuedMessages(wirelessDeviceID string) []QueuedMessage
	DeleteQueuedMessages(wirelessDeviceID string) error
	EnqueueMessage(wirelessDeviceID string, msg QueuedMessage)

	StartWirelessDeviceImportTask(accountID, region, destinationName string) (*WirelessDeviceImportTask, error)
	StartSingleWirelessDeviceImportTask(
		accountID, region, destinationName string,
	) (*SingleWirelessDeviceImportTask, error)
	GetWirelessDeviceImportTask(id string) (*WirelessDeviceImportTask, error)
	DeleteWirelessDeviceImportTask(id string) error
	UpdateWirelessDeviceImportTask(id, destinationName string) error
	ListWirelessDeviceImportTasks() []*WirelessDeviceImportTask

	TagResource(arn string, tags map[string]string) error
	UntagResource(arn string, tagKeys []string) error
	ListTagsForResource(arn string) (map[string]string, error)
}

StorageBackend is the interface for the IoT Wireless backend.

type TraceContent added in v1.3.1

type TraceContent struct {
	LogLevel                string `json:"LogLevel,omitempty"`
	MulticastFrameInfo      string `json:"MulticastFrameInfo,omitempty"`
	WirelessDeviceFrameInfo string `json:"WirelessDeviceFrameInfo,omitempty"`
}

TraceContent mirrors types.TraceContent (types.go:2130), used by NetworkAnalyzerConfig's Create/Get/UpdateNetworkAnalyzerConfiguration.

type UpdateAbpV1_0X added in v1.3.1

type UpdateAbpV1_0X struct {
	FCntStart *int32 `json:"FCntStart,omitempty"`
}

UpdateAbpV1_0X mirrors types.UpdateAbpV1_0X (types.go:2151).

type UpdateAbpV1_1 added in v1.3.1

type UpdateAbpV1_1 struct {
	FCntStart *int32 `json:"FCntStart,omitempty"`
}

UpdateAbpV1_1 mirrors types.UpdateAbpV1_1 (types.go:2160).

type UpdateFPorts added in v1.3.1

type UpdateFPorts struct {
	Positioning  *Positioning        `json:"Positioning,omitempty"`
	Applications []ApplicationConfig `json:"Applications,omitempty"`
}

UpdateFPorts mirrors types.UpdateFPorts (types.go:2169).

type UpdateWirelessGatewayTaskCreate added in v1.3.1

type UpdateWirelessGatewayTaskCreate struct {
	LoRaWAN          *LoRaWANUpdateGatewayTaskCreate `json:"LoRaWAN,omitempty"`
	UpdateDataRole   *string                         `json:"UpdateDataRole,omitempty"`
	UpdateDataSource *string                         `json:"UpdateDataSource,omitempty"`
}

UpdateWirelessGatewayTaskCreate mirrors types.UpdateWirelessGatewayTaskCreate (types.go:2182) -- the "Update" sub-struct of CreateWirelessGatewayTaskDefinitionInput.Update / GetWirelessGatewayTaskDefinitionOutput.Update.

type WirelessDevice

type WirelessDevice struct {
	CreatedAt            time.Time         `json:"createdAt"`
	LastUplinkReceivedAt *time.Time        `json:"lastUplinkReceivedAt,omitempty"`
	Tags                 map[string]string `json:"tags,omitempty"`
	// LoRaWAN uses the types.LoRaWANDevice shape shared by
	// CreateWirelessDevice's request and GetWirelessDevice's response.
	// Sidewalk is stored as the richer types.SidewalkDevice (get) shape;
	// CreateWirelessDevice's narrower SidewalkCreateWirelessDevice request is
	// converted into it via sidewalkDeviceFromCreate (lorawan_types.go).
	LoRaWAN         *LoRaWANDevice  `json:"loRaWAN,omitempty"`
	Sidewalk        *SidewalkDevice `json:"sidewalk,omitempty"`
	Positioning     string          `json:"positioning,omitempty"`
	Name            string          `json:"name"`
	ID              string          `json:"id"`
	ARN             string          `json:"arn"`
	Description     string          `json:"description,omitempty"`
	Type            string          `json:"type"`
	DestinationName string          `json:"destinationName,omitempty"`
	// AccountID and Region are not part of the AWS wire shape for this
	// resource; they exist purely so store.Table's keyFn (store_setup.go) can
	// derive the account+region-scoped composite key this backend requires.
	// Tagged json:"-" so they never leak into an API response; Snapshot/
	// Restore round-trips them via the deviceSnapshot DTO instead (see
	// persistence.go).
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

WirelessDevice represents a LoRaWAN or Sidewalk wireless device.

type WirelessDeviceImportTask

type WirelessDeviceImportTask struct {
	CreatedAt                      time.Time `json:"createdAt"`
	ID                             string    `json:"id"`
	ARN                            string    `json:"arn"`
	DestinationName                string    `json:"destinationName"`
	Status                         string    `json:"status"`
	StatusReason                   string    `json:"statusReason,omitempty"`
	InitializedImportedDeviceCount int64     `json:"initializedImportedDeviceCount"`
	PendingImportedDeviceCount     int64     `json:"pendingImportedDeviceCount"`
	OnboardedImportedDeviceCount   int64     `json:"onboardedImportedDeviceCount"`
	FailedImportedDeviceCount      int64     `json:"failedImportedDeviceCount"`
}

WirelessDeviceImportTask represents an IoT Wireless device bulk-import task.

type WirelessGateway

type WirelessGateway struct {
	CreatedAt            time.Time         `json:"createdAt"`
	LastUplinkReceivedAt *time.Time        `json:"lastUplinkReceivedAt,omitempty"`
	Tags                 map[string]string `json:"tags,omitempty"`
	// LoRaWAN uses the types.LoRaWANGateway shape shared by
	// CreateWirelessGateway/GetWirelessGateway.
	LoRaWAN          *LoRaWANGateway `json:"loRaWAN,omitempty"`
	Name             string          `json:"name"`
	ID               string          `json:"id"`
	ARN              string          `json:"arn"`
	Description      string          `json:"description,omitempty"`
	ConnectionStatus string          `json:"connectionStatus,omitempty"`
	FirmwareVersion  string          `json:"firmwareVersion,omitempty"`
	FirmwareModel    string          `json:"firmwareModel,omitempty"`
	FirmwareStation  string          `json:"firmwareStation,omitempty"`
	// AccountID and Region exist purely for store.Table's keyFn; see the
	// identical comment on WirelessDevice above.
	AccountID string `json:"-"`
	Region    string `json:"-"`
}

WirelessGateway represents a LoRaWAN gateway.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL