Perfect Singleton in C++11

in Just One Line

Short version: Perfect C++11 Singleton Template Long version: Singleton is one of the widely adopted design patterns to encapsulate a service class or any class whose functionalities tightly bind to one particular instance. It varies a lot in different programming languages to implement a singleton class. Most of them are tedious, and done in copy-and-paste way. C++, yes, the old one, is even more tedious to do so. Fortunately, C++11 makes great efforts to transform the old C++ into a much modern one, or modern C++. [Read More]

Facts about CSI Phase Measured by Atheros 9300 NIC

Facts, The Verified Facts...

In this short page, several verified facts about CSI phase information are listed. More is pending, and discussions are welcome. 1. 0-th subcarrier of the 1st antenna, the most dominating. 0-th Subcarrier CSI phase measurement contains several noises/errors: CFO (Carrier Frequency Offset), SFO (Sampling Frequency Offset), PDD (Packet Detection Delay), and random initial phase, etc. Their impacts to OFDM CSI is different. SFO and PDD cause phase rotation (or slope component across subcarriers); CFO and random initial phase together cause random-like overall phase shift (or intercept component). [Read More]

Advanced ChronosServer (2): Arbitrary Carrier Frequency Tuning

Enabling UWB Sensing on Commodity Wi-Fi Devices

In this tutorial, we explore a much more valuable feature of ChronosServer: arbitrary carrier frequency tuning, or enabling Ultra Wide Bandwidth (UWB) sensing on commodity Wi-Fi devices. Two ways are provided to access this feature: Carrier Frequency Direct Tuning, and Carrier Frequency Scanning. In the following text, I use CF for the abbreviation of Carrier Frequency. Carrier Frequency Direct Tuning Tuning NIC phy0 to an arbitrary CF demands only one argument: –freq. [Read More]

Advanced ChronosServer (1): Injection with ACK

ms Grade BI-DIRECTIONAL CSI Measurement

The previous tutorial introduces ChronosServer and exemplify the simple injector and logger modes. In this tutorial, we move forward to an advanced feature of ChronosServer: Injection with ACK, or chronos-initiator and chronos-responder modes. For a simple description, these two modes working together enable BI-DIRECTIONAL CSI measurement with ms grade round-trip delay (RTD). This tutorial is an extended topic on ChronosServer. You should refer the previous tutorial for basic usage of ChronosServer. [Read More]

ChronosServer: Get Started

Basic CSI Measurement Guide

This tutorial will guide you how to perform CSI measurement using the powerful ChronosServer application. Major Steps Platform Installation Install CSI-Parsing Toolbox for MATLAB Prepare Atheros NICs for CSI Logging Prepare ChronosServer Argument Text File Perform CSI Measurement Parse .csi Files using MATLAB Recover Normal Wi-Fi Mode Step 1: Platform Installation Follow the installation tutorial https://gitlab.com/wifisensing/platform-setup/ Step 2: Install CSI-Parsing Toolbox for MATLAB Assume Step 1 is successful and platform things are installed at “~/” (home) directory. [Read More]

TechNote: Subcarrier Occupation in 802.11n HT20, HT40 And HT40+/- Channel Mode

Use HT20 Or HT40 Mode!

Section 20.3.7 in 802.11n Standard states clearly about the subcarrier occupation in HT20/HT40/HT40+/HT40- channel modes: … In the 20 MHz HT format, the signal is transmitted on subcarriers –28 to –1 and 1 to 28. In the case of the 40 MHz HT format, a 40 MHz channel is used. The channel is divided into 128 subcarriers. The signal is transmitted on subcarriers –58 to –2 and 2 to 58. [Read More]