Documentation ¶
Overview ¶
Package wavparse provides Uniden Bearcat Scanner WAV file parsing. Portions from https://github.com/go-audio/wav
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrHeaderParsing = fmt.Errorf("file is invalid or empty when trying to parse riff headers")
ErrHeaderParsing is returned when RIFF headers can't be decoded due to a malformed file.
View Source
var ErrNilChunk = errors.New("can't decode a nil chunk")
ErrNilChunk is returned when a RIFF chunk is nil.
View Source
var ErrNotUNIDChunk = errors.New("was given something other than a unid riff chunk")
ErrNotUNIDChunk is returned when the chunk given to the UNID decode function is not actually a UNID chunk.
Functions ¶
This section is empty.
Types ¶
type ChannelInfo ¶
type ChannelInfo struct { Name string `csv:"Channel_Name" json:",omitempty" validate:"omitempty,printascii"` Avoid bool `csv:"Channel_Avoid"` TGIDFrequency string `csv:"Channel_TGIDFrequency" json:",omitempty" validate:"omitempty,printascii"` Mode string `csv:"Channel_Mode" json:",omitempty" validate:"omitempty,printascii"` ToneCode string `csv:"Channel_ToneCode" json:",omitempty" validate:"omitempty,printascii"` ServiceType ServiceType `csv:"Channel_ServiceType"` Attenuator string `csv:"Channel_Attenuator"` // Conventional systems only DelayValue string `csv:"Channel_DelayValue" json:",omitempty" validate:"omitempty,printascii"` VolumeOffset string `csv:"Channel_VolumeOffset" json:",omitempty" validate:"omitempty,printascii"` AlertToneType string `csv:"Channel_AlertToneType" json:",omitempty" validate:"omitempty,printascii"` AlertToneVolume string `csv:"Channel_AlertToneVolume" json:",omitempty" validate:"omitempty,printascii"` AlertLightColor string `csv:"Channel_AlertLightColor" json:",omitempty" validate:"omitempty,printascii"` AlertLightType string `csv:"Channel_AlertLightType" json:",omitempty" validate:"omitempty,printascii"` NumberTag string `csv:"Channel_NumberTag" json:",omitempty" validate:"omitempty,printascii"` Priority string `csv:"Channel_Priority" json:",omitempty" validate:"omitempty,printascii"` }
func (*ChannelInfo) UnmarshalBinary ¶
func (c *ChannelInfo) UnmarshalBinary(data []byte) error
type DepartmentInfo ¶
type DepartmentInfo struct { Name string `csv:"Department_Name" json:",omitempty" validate:"omitempty,printascii"` Avoid bool `csv:"Department_Avoid"` Latitude float64 `csv:"Department_Latitude" validate:"latitude"` Longitude float64 `csv:"Department_Longitude" validate:"longitude"` Range float64 `csv:"Department_Range"` Shape string `csv:"Department_Shape" json:",omitempty" validate:"omitempty,printascii"` NumberTag string `csv:"Department_NumberTag" json:",omitempty" validate:"omitempty,printascii"` }
func (*DepartmentInfo) UnmarshalBinary ¶
func (d *DepartmentInfo) UnmarshalBinary(data []byte) error
type FavoriteInfo ¶
type FavoriteInfo struct { Name string `csv:"Favorite_Name" json:",omitempty" validate:"omitempty,printascii"` File string `csv:"Favorite_File" json:",omitempty" validate:"omitempty,printascii"` LocationControl bool `csv:"Favorite_LocationControl"` Monitor bool `csv:"Favorite_Monitor"` QuickKey string `csv:"Favorite_QuickKey" json:",omitempty" validate:"omitempty,printascii"` NumberTag string `csv:"Favorite_NumberTag" json:",omitempty" validate:"omitempty,printascii"` ConfigKey0 string `csv:"Favorite_ConfigKey0" json:",omitempty" validate:"omitempty,printascii"` ConfigKey1 string `csv:"Favorite_ConfigKey1" json:",omitempty" validate:"omitempty,printascii"` ConfigKey2 string `csv:"Favorite_ConfigKey2" json:",omitempty" validate:"omitempty,printascii"` ConfigKey3 string `csv:"Favorite_ConfigKey3" json:",omitempty" validate:"omitempty,printascii"` ConfigKey4 string `csv:"Favorite_ConfigKey4" json:",omitempty" validate:"omitempty,printascii"` ConfigKey5 string `csv:"Favorite_ConfigKey5" json:",omitempty" validate:"omitempty,printascii"` ConfigKey6 string `csv:"Favorite_ConfigKey6" json:",omitempty" validate:"omitempty,printascii"` ConfigKey7 string `csv:"Favorite_ConfigKey7" json:",omitempty" validate:"omitempty,printascii"` ConfigKey8 string `csv:"Favorite_ConfigKey8" json:",omitempty" validate:"omitempty,printascii"` ConfigKey9 string `csv:"Favorite_ConfigKey9" json:",omitempty" validate:"omitempty,printascii"` }
func (*FavoriteInfo) UnmarshalBinary ¶
func (f *FavoriteInfo) UnmarshalBinary(data []byte) error
type ListChunk ¶
type ListChunk struct { System string `csv:"Public_System" json:",omitempty" validate:"omitempty,printascii"` // IART Department string `csv:"Public_Department" json:",omitempty" validate:"omitempty,printascii"` // IGNR Channel string `csv:"Public_Channel" json:",omitempty" validate:"omitempty,printascii"` // INAM TGIDFreq string `csv:"Public_TGIDFreq" json:",omitempty" validate:"omitempty,printascii"` // ICMT Product string `csv:"Public_Product" json:",omitempty" validate:"omitempty,printascii"` // IPRD Unknown string `csv:"Public_Unknown" json:",omitempty" validate:"omitempty,printascii"` // IKEY Timestamp *time.Time `csv:"Public_Timestamp" json:",omitempty" validate:"omitempty,printascii"` // ICRD Tone string `csv:"Public_Tone" json:",omitempty" validate:"omitempty,printascii"` // ISRC UnitID string `csv:"Public_UnitID" json:",omitempty" validate:"omitempty,printascii"` // ITCH FavoriteListName string `csv:"Public_FavoriteListName" json:",omitempty" validate:"omitempty,printascii"` // ISBJ Reserved string `csv:"Public_Reserved" json:",omitempty" validate:"omitempty,printascii"` // ICOP }
type Metadata ¶
type Metadata struct { TGID string `csv:"Metadata_TGID" json:",omitempty" validate:"omitempty,printascii"` Frequency float64 `csv:"Metadata_Frequency"` WACN string `csv:"Metadata_WACN" json:",omitempty" validate:"omitempty,hexadecimal"` NAC string `csv:"Metadata_NAC" json:",omitempty" validate:"omitempty,hexadecimal"` UnitID string `csv:"Metadata_UnitID" json:",omitempty" validate:"omitempty,hexadecimal"` RawTGID string `csv:"Metadata_RawTGID" json:",omitempty" validate:"omitempty,printascii"` RawFrequency string `csv:"Metadata_RawFrequency" json:",omitempty" validate:"omitempty,printascii"` RawWACN string `csv:"Metadata_RawWACN" json:",omitempty" validate:"omitempty,printascii"` RawNAC string `csv:"Metadata_RawNAC" json:",omitempty" validate:"omitempty,printascii"` RawUnitID string `csv:"Metadata_RawUnitID" json:",omitempty" validate:"omitempty,printascii"` FrequencyFmt string `csv:"Metadata_FrequencyFmt" json:",omitempty" validate:"omitempty,printascii"` WACNFmt string `csv:"Metadata_WACNFmt" json:",omitempty" validate:"omitempty,printascii"` UnknownFmt string `csv:"Metadata_UnknownFmt" json:",omitempty" validate:"omitempty,printascii"` NACFmt string `csv:"Metadata_NACFmt" json:",omitempty" validate:"omitempty,printascii"` }
func (*Metadata) UnmarshalBinary ¶
type RawUnidenChunk ¶
type RawUnidenChunk struct { // Start byte 600 Favorite [65]byte // 0-65 / 600-665 System [65]byte // 65-130 / 665-730 Department [65]byte // 130-195 / 730-795 Channel [65]byte // 195-260 / 795-860 Site [65]byte // 260-325 / 860-925 Empty [283]byte // 325-608 / 925-1208 Metadata [216]byte // 608-824 / 1208-1424 Remainder [1224]byte // 824-2048 / 1424-2648 }
type Recording ¶
type Recording struct { File string `json:",omitempty" validate:"omitempty,printascii"` Duration StopwatchDuration `json:",omitempty"` Public *ListChunk `csv:"-" json:",omitempty"` Private *UnidenChunk `csv:"-" json:",omitempty"` }
func DecodeRecording ¶
DecodeRecording will decode the metadata in the WAV file at the given path.
type ServiceType ¶
type ServiceType int
func (ServiceType) String ¶
func (s ServiceType) String() string
type SiteInfo ¶
type SiteInfo struct { Name string `csv:"Site_Name" json:",omitempty" validate:"omitempty,printascii"` Avoid bool `csv:"Site_Avoid"` Latitude float64 `csv:"Site_Latitude" validate:"latitude"` Longitude float64 `csv:"Site_Longitude" validate:"longitude"` Range float64 `csv:"Site_Range"` Modulation string `csv:"Site_Modulation" json:",omitempty" validate:"omitempty,printascii"` MotorolaBandPlan string `csv:"Site_MotorolaBandPlan" json:",omitempty" validate:"omitempty,printascii"` EDACS string `csv:"Site_EDACS" json:",omitempty" validate:"omitempty,printascii"` Shape string `csv:"Site_Shape" json:",omitempty" validate:"omitempty,printascii"` Attenuator bool `csv:"Site_Attenuator"` }
func (*SiteInfo) UnmarshalBinary ¶
type StopwatchDuration ¶
func (*StopwatchDuration) MarshalCSV ¶
func (clock *StopwatchDuration) MarshalCSV() (string, error)
Convert the internal duration as CSV string.
func (*StopwatchDuration) MarshalJSON ¶
func (clock *StopwatchDuration) MarshalJSON() ([]byte, error)
func (*StopwatchDuration) UnmarshalCSV ¶
func (clock *StopwatchDuration) UnmarshalCSV(csv string) error
Convert the CSV string as internal duration.
type SystemInfo ¶
type SystemInfo struct { Name string `csv:"System_Name" json:",omitempty" validate:"omitempty,printascii"` Avoid bool `csv:"System_Avoid"` Blank string `csv:"System_Blank" json:",omitempty" validate:"omitempty,printascii"` Type string `csv:"System_Type" json:",omitempty" validate:"omitempty,printascii"` IDSearch string `csv:"System_IDSearch"` EmergencyAlertType string `csv:"System_EmergencyAlertType" json:",omitempty" validate:"omitempty,printascii"` AlertVolume string `csv:"System_AlertVolume" json:",omitempty" validate:"omitempty,printascii"` MotorolaStatusBit string `csv:"System_MotorolaStatusBit" json:",omitempty" validate:"omitempty,printascii"` P25NAC string `csv:"System_P25NAC" json:",omitempty" validate:"omitempty,printascii"` QuickKey string `csv:"System_QuickKey" json:",omitempty" validate:"omitempty,printascii"` NumberTag string `csv:"System_NumberTag" json:",omitempty" validate:"omitempty,printascii"` HoldTime string `csv:"System_HoldTime" json:",omitempty" validate:"omitempty,printascii"` AnalogAGC string `csv:"System_AnalogAGC" json:",omitempty" validate:"omitempty,printascii"` DigitalAGC string `csv:"System_DigitalAGC" json:",omitempty" validate:"omitempty,printascii"` EndCode string `csv:"System_EndCode" json:",omitempty" validate:"omitempty,printascii"` PriorityID string `csv:"System_PriorityID" json:",omitempty" validate:"omitempty,printascii"` EmergencyAlertLightColor string `csv:"System_EmergencyAlertLightColor" json:",omitempty" validate:"omitempty,printascii"` EmergencyAlertCondition string `csv:"System_EmergencyAlertCondition" json:",omitempty" validate:"omitempty,printascii"` }
func (*SystemInfo) UnmarshalBinary ¶
func (s *SystemInfo) UnmarshalBinary(data []byte) error
type UnidenChunk ¶
type UnidenChunk struct { Favorite FavoriteInfo `csv:"-"` System SystemInfo `csv:"-"` Department DepartmentInfo `csv:"-"` Channel ChannelInfo `csv:"-"` Site SiteInfo `csv:"-"` Metadata Metadata `csv:"-"` }
Click to show internal directories.
Click to hide internal directories.