send_point(double lat, double lon, double ele)
{
char header[4] = {52, 0, 0, 0};
char data1[8];
char data2[8];
char data3[8];

memcpy(&data1, &lat, sizeof(double));
memcpy(&data2, &lon, sizeof(double));
memcpy(&data3, &ele, sizeof(double));

char *latlon = array_concat(data1, 8, data2, 8, sizeof(char));
char *latlonele = array_concat(latlon, 16, data3, 8, sizeof(char));
char *message = array_concat(header, 4, latlonele, 24, sizeof(char));

bytes_sent = sendto(sock, message, 28, 0, (struct sockaddr*) &sa, sizeof(struct sockaddr_in));
if (bytes_sent < 0) {
printf("Error sending packet: %s\n", strerror(errno));
}
else
{
printf("sendto OK %d\n", sizeof(double));
}
/*
for (int i = 0; i < 28; i++)
{
	if(i == 3 || i == 11 || i == 19 || i == 27)
	{printf("%d\n", message[i]);}
	else
	{printf("%d, ", message[i]);}
}
*/
}
Example #2
0
/* Make a new environment by taking the union of two environments. */
static void *unify_environments(void *lhs, void *rhs)
{
    register unsigned int ix;

    array result = array_concat(array_copy(lhs), array_copy(rhs));

    lydia_qsort(result->arr, result->sz, sizeof(result->arr[0]), cmp_nodes);

/* Remove duplicate nodes. */
    for (ix = result->sz - 1; ix < result->sz; ix--) {
        if (ix > 0) {
            atms_node na = result->arr[ix];
            atms_node nb = result->arr[ix - 1];
            if (nb->index == na->index) {
                array_delete(result, ix);
            }
        }
    }

    return result;
}