Esempio n. 1
0
/* Returns 0 on success, and -ve on error.
 */
static int valid_gps(struct gps_location *loc)
{
	/* TODO: Important.
	 * Can't do direct floating comparison as that causes a compiler error.
	 * From Piazza, it was mentioned that we should return an error
	 * only if the GPS coordinates are all zeros, so we just check for
	 * that
	 * https://piazza.com/class#fall2012/comsw4118/1065
	 */
	const double zero_d = 0;
	const float zero_f = 0;
	unsigned long long int err_lat = double_to_long(zero_d);
	unsigned long long int err_lng = double_to_long(zero_d);
	unsigned int err_acc = float_to_int(zero_f);

	unsigned long long int loc_lat;
	unsigned long long int loc_lng;
	unsigned int loc_acc;

	if (loc == NULL)
		return -EINVAL;

	loc_lat = double_to_long(loc->latitude);
	loc_lng = double_to_long(loc->longitude);
	loc_acc = float_to_int(loc->accuracy);

	if (loc_lat == err_lat && loc_lng == err_lng && loc_acc == err_acc)
		return -EINVAL;
	else
		return 0;
}
Esempio n. 2
0
long __fixdfdi(double a)
{
	double_t da;
	
	da.val = a;
	return double_to_long(da.data);
}