mirror of
				https://github.com/brianshea2/meshmap.net.git
				synced 2025-03-05 21:00:01 -08:00 
			
		
		
		
	treat NaN floats as zero
This commit is contained in:
		
							parent
							
								
									7a8a2ce030
								
							
						
					
					
						commit
						0393e6663a
					
				|  | @ -12,6 +12,14 @@ const ( | ||||||
| 	NeighborLimit = 100 | 	NeighborLimit = 100 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | func cleanFloat(f float32) float32 { | ||||||
|  | 	if f != f { | ||||||
|  | 		// IEEE 754 says that only NaNs satisfy f != f
 | ||||||
|  | 		return 0 | ||||||
|  | 	} | ||||||
|  | 	return f | ||||||
|  | } | ||||||
|  | 
 | ||||||
| type NeighborInfo struct { | type NeighborInfo struct { | ||||||
| 	Snr     float32 `json:"snr,omitempty"` | 	Snr     float32 `json:"snr,omitempty"` | ||||||
| 	Updated int64   `json:"updated"` | 	Updated int64   `json:"updated"` | ||||||
|  | @ -148,17 +156,17 @@ func (node *Node) Prune(seenByTtl, neighborTtl, metricsTtl, mapReportTtl int64) | ||||||
| 
 | 
 | ||||||
| func (node *Node) UpdateDeviceMetrics(batteryLevel uint32, voltage, chUtil, airUtilTx float32, uptime uint32) { | func (node *Node) UpdateDeviceMetrics(batteryLevel uint32, voltage, chUtil, airUtilTx float32, uptime uint32) { | ||||||
| 	node.BatteryLevel = batteryLevel | 	node.BatteryLevel = batteryLevel | ||||||
| 	node.Voltage = voltage | 	node.Voltage = cleanFloat(voltage) | ||||||
| 	node.ChUtil = chUtil | 	node.ChUtil = cleanFloat(chUtil) | ||||||
| 	node.AirUtilTx = airUtilTx | 	node.AirUtilTx = cleanFloat(airUtilTx) | ||||||
| 	node.Uptime = uptime | 	node.Uptime = uptime | ||||||
| 	node.LastDeviceMetrics = time.Now().Unix() | 	node.LastDeviceMetrics = time.Now().Unix() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (node *Node) UpdateEnvironmentMetrics(temperature, relativeHumidity, barometricPressure float32) { | func (node *Node) UpdateEnvironmentMetrics(temperature, relativeHumidity, barometricPressure float32) { | ||||||
| 	node.Temperature = temperature | 	node.Temperature = cleanFloat(temperature) | ||||||
| 	node.RelativeHumidity = relativeHumidity | 	node.RelativeHumidity = cleanFloat(relativeHumidity) | ||||||
| 	node.BarometricPressure = barometricPressure | 	node.BarometricPressure = cleanFloat(barometricPressure) | ||||||
| 	node.LastEnvironmentMetrics = time.Now().Unix() | 	node.LastEnvironmentMetrics = time.Now().Unix() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -176,7 +184,7 @@ func (node *Node) UpdateNeighborInfo(neighborNum uint32, snr float32) { | ||||||
| 		node.Neighbors = make(map[uint32]*NeighborInfo) | 		node.Neighbors = make(map[uint32]*NeighborInfo) | ||||||
| 	} | 	} | ||||||
| 	node.Neighbors[neighborNum] = &NeighborInfo{ | 	node.Neighbors[neighborNum] = &NeighborInfo{ | ||||||
| 		Snr:     snr, | 		Snr:     cleanFloat(snr), | ||||||
| 		Updated: time.Now().Unix(), | 		Updated: time.Now().Unix(), | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue