From e98474e67870b39da31419abf4e40dacbdee58a4 Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Thu, 26 Jan 2012 12:55:03 +0100 Subject: [PATCH] [Aggregator] Send the capture time to Positioner The Aggregator now transmits the capture timestamp of each packet to the positioning server. For now this timestamp is not stored, only displayed (in verbose mode) when a request is received. --- libowlps/owlps.h | 1 + owlps-aggregator/owlps-aggregator.h | 2 ++ owlps-aggregator/owlps-aggregatord.c | 3 +++ owlps-positioner/src/inputudpsocket.cc | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/libowlps/owlps.h b/libowlps/owlps.h index 92ed52a..e34de50 100644 --- a/libowlps/owlps.h +++ b/libowlps/owlps.h @@ -108,6 +108,7 @@ typedef struct _owl_request_info { uint16_t packet_id ; // Number of the current packet uint8_t ap_mac_addr_bytes[ETHER_ADDR_LEN] ; // MAC of the listener + owl_timestamp capture_time ; // Timestamp of arrival on the listener uint8_t ss_dbm ; // Signal strength measured by the listener (dBm) } owl_request_info ; diff --git a/owlps-aggregator/owlps-aggregator.h b/owlps-aggregator/owlps-aggregator.h index 95f2fff..e9935d5 100644 --- a/owlps-aggregator/owlps-aggregator.h +++ b/owlps-aggregator/owlps-aggregator.h @@ -39,6 +39,8 @@ typedef struct _request_info_list uint16_t packet_id ; // MAC address of the transmitter AP (in bytes): uint8_t ap_mac_addr_bytes[ETHER_ADDR_LEN] ; + // Timestamp of arrival on the listener: + owl_timestamp capture_time ; // Signal strength received by the AP from the mobile: uint8_t ss_dbm ; struct _request_info_list *next ; diff --git a/owlps-aggregator/owlps-aggregatord.c b/owlps-aggregator/owlps-aggregatord.c index fad10c0..0c5cfd9 100644 --- a/owlps-aggregator/owlps-aggregatord.c +++ b/owlps-aggregator/owlps-aggregatord.c @@ -705,6 +705,8 @@ void* monitor_requests(void *NULL_value) memcpy(info.ap_mac_addr_bytes, request_info_ptr->ap_mac_addr_bytes, ETHER_ADDR_LEN) ; + info.capture_time = request_info_ptr->capture_time ; + owl_hton_timestamp(&info.capture_time) ; info.ss_dbm = request_info_ptr->ss_dbm ; sendto(sockfd, &info, sizeof(info), 0, (struct sockaddr *)&serv, serv_len) ; @@ -788,6 +790,7 @@ void got_request(owl_captured_request request) tmp_info->packet_id = request.packet_id ; memcpy(tmp_info->ap_mac_addr_bytes, request.ap_mac_addr_bytes, ETHER_ADDR_LEN) ; + tmp_info->capture_time = request.capture_time ; tmp_info->ss_dbm = request.ss_dbm ; tmp_info->next = NULL ; diff --git a/owlps-positioner/src/inputudpsocket.cc b/owlps-positioner/src/inputudpsocket.cc index 9cb64c5..1000cd5 100644 --- a/owlps-positioner/src/inputudpsocket.cc +++ b/owlps-positioner/src/inputudpsocket.cc @@ -190,6 +190,9 @@ bool InputUDPSocket::fill_current_request() owl_mac_bytes_to_string(request_info.ap_mac_addr_bytes)) ; PosUtil::to_upper(mac_ap) ; + owl_ntoh_timestamp(&request_info.capture_time) ; + Timestamp capture_time(request_info.capture_time) ; + // Substracting 256 is not mandatory here since it is done // automatically when casting from unsigned to signed, but // I write it anyway for the sake of clarity. @@ -200,6 +203,7 @@ bool InputUDPSocket::fill_current_request() << "\t* Packet received from the aggregator:" << "\n\t\tPacket number: " << packet_id << "\n\t\tAP MAC: " << mac_ap + << "\n\t\tCapture timestamp: " << capture_time << "\n\t\tSignal: " << ss << " dBm" << '\n' ;