Difference between revisions of "Workdocumentation 2018-08-18"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
go:[[File:sf-history2018-05-30_1650JS.png|400px]]java:[[File:sf-history2018-05-30_1650.png|400px]] | go:[[File:sf-history2018-05-30_1650JS.png|400px]]java:[[File:sf-history2018-05-30_1650.png|400px]] | ||
+ | <source lang='go'> | ||
+ | // rvp6LittleEndian converts the raw two byte tuple of little endian encoded composite products | ||
+ | // to radar video processor values (rvp-6). NaN may be returned when the no-data flag is set. | ||
+ | func (c *Composite) rvp6LittleEndian(tuple [2]byte) float32 { | ||
+ | var value int = 0x0F & int(tuple[1]) | ||
+ | value = (value << 8) + int(tuple[0]) | ||
+ | |||
+ | if tuple[1]&(1<<5) != 0 { // error code: no-data | ||
+ | return NaN | ||
+ | } | ||
+ | |||
+ | if tuple[1]&(1<<6) != 0 { // flag: negative value | ||
+ | value *= -1 | ||
+ | } | ||
+ | |||
+ | conv := c.rvp6Raw(value) // set decimal point | ||
+ | |||
+ | // little endian encoded formats are also used for mm/h | ||
+ | if c.DataUnit != Unit_dBZ { | ||
+ | return conv | ||
+ | } | ||
+ | |||
+ | // Even though this format supports negative values and custom | ||
+ | // precision they do not make use of this and we still have to subtract | ||
+ | // the bias and scale it (RADVOR FX, dBZ) | ||
+ | return toDBZ(conv) | ||
+ | } | ||
+ | </source> |
Revision as of 17:33, 18 August 2018
// rvp6LittleEndian converts the raw two byte tuple of little endian encoded composite products
// to radar video processor values (rvp-6). NaN may be returned when the no-data flag is set.
func (c *Composite) rvp6LittleEndian(tuple [2]byte) float32 {
var value int = 0x0F & int(tuple[1])
value = (value << 8) + int(tuple[0])
if tuple[1]&(1<<5) != 0 { // error code: no-data
return NaN
}
if tuple[1]&(1<<6) != 0 { // flag: negative value
value *= -1
}
conv := c.rvp6Raw(value) // set decimal point
// little endian encoded formats are also used for mm/h
if c.DataUnit != Unit_dBZ {
return conv
}
// Even though this format supports negative values and custom
// precision they do not make use of this and we still have to subtract
// the bias and scale it (RADVOR FX, dBZ)
return toDBZ(conv)
}