static void print_assoclist(const struct iwinfo_ops *iw, const char *ifname) { int i, len; char buf[IWINFO_BUFSIZE]; struct iwinfo_assoclist_entry *e; if (iw->assoclist(ifname, buf, &len)) { printf("No information available\n"); return; } else if (len <= 0) { printf("No station connected\n"); return; } for (i = 0; i < len; i += sizeof(struct iwinfo_assoclist_entry)) { e = (struct iwinfo_assoclist_entry *) &buf[i]; printf("%s %s / %s (SNR %d)\n", format_bssid(e->mac), format_signal(e->signal), format_noise(e->noise), (e->signal - e->noise)); } }
static char * print_signal(const struct iwinfo_ops *iw, const char *ifname) { int sig; if (iw->signal(ifname, &sig)) sig = 0; return format_signal(sig); }
static void print_assoclist(const struct iwinfo_ops *iw, const char *ifname) { int i, len; char buf[IWINFO_BUFSIZE]; struct iwinfo_assoclist_entry *e; if (iw->assoclist(ifname, buf, &len)) { printf("No information available\n"); return; } else if (len <= 0) { printf("No station connected\n"); return; } for (i = 0; i < len; i += sizeof(struct iwinfo_assoclist_entry)) { e = (struct iwinfo_assoclist_entry *) &buf[i]; printf("%s %s / %s (SNR %d) %d ms ago\n", format_bssid(e->mac), format_signal(e->signal), format_noise(e->noise), (e->signal - e->noise), e->inactive); printf(" RX: %-38s %8d Pkts.\n", format_assocrate(&e->rx_rate), e->rx_packets ); printf(" TX: %-38s %8d Pkts.\n\n", format_assocrate(&e->tx_rate), e->tx_packets ); } }
static void print_scanlist(const struct iwinfo_ops *iw, const char *ifname) { int i, x, len; char buf[IWINFO_BUFSIZE]; struct iwinfo_scanlist_entry *e; if (iw->scanlist(ifname, buf, &len)) { printf("Scanning not possible\n\n"); return; } else if (len <= 0) { printf("No scan results\n\n"); return; } for (i = 0, x = 1; i < len; i += sizeof(struct iwinfo_scanlist_entry), x++) { e = (struct iwinfo_scanlist_entry *) &buf[i]; printf("Cell %02d - Address: %s\n", x, format_bssid(e->mac)); printf(" ESSID: %s\n", format_ssid(e->ssid)); printf(" Mode: %s Channel: %s\n", e->mode ? (char *)e->mode : "unknown", format_channel(e->channel)); printf(" Signal: %s Quality: %s/%s\n", format_signal(e->signal - 0x100), format_quality(e->quality), format_quality_max(e->quality_max)); printf(" Encryption: %s\n\n", format_encryption(&e->crypto)); } }
int main(int /*argc*/, char** /*argv*/) { // Slide property size_t n1 = 9; size_t N = 18; try { // note: by default, imread always returns 3-ch images unless the cv::IMREAD_GRAYSCALE flag is set (here we hardcode it based on prior knowledge) const std::vector<ImagePathFlag> vsTestImages = { {"data/test1.png",cv::IMREAD_GRAYSCALE}, {"data/test2.png",cv::IMREAD_GRAYSCALE}, {"data/test3.png",cv::IMREAD_GRAYSCALE}, {"data/test4.png",cv::IMREAD_COLOR}, {"data/test5.png",cv::IMREAD_COLOR}, {"data/test6.png",cv::IMREAD_COLOR}, {"data/test7.png",cv::IMREAD_COLOR}, {"data/test8.jpg",cv::IMREAD_COLOR}, {"data/test9.bmp",cv::IMREAD_COLOR}, {"data/test10.bmp",cv::IMREAD_COLOR}, }; for(const ImagePathFlag& oImagePathFlag : vsTestImages) { cv::Mat oInputImg = cv::imread(oImagePathFlag.first,oImagePathFlag.second); if(oInputImg.empty()) CV_Error_(-1,("Could not load image at '%s', check local paths",oImagePathFlag.first.c_str())); std::vector<uint8_t> formatSignal = format_signal(oInputImg); std::vector<LZ77Code> encodeSignal = lz77_encode(formatSignal, N, n1); std::vector<uint8_t> decode = lz77_decode(encodeSignal, N, n1); std::cout << "\n***** New Data *******"; std::cout << "\nTaille plain (byte): " << (formatSignal.size()); std::cout << "\nTaille encode (byte): " << (encodeSignal.size()); double taux = 1.0 - (double)encodeSignal.size() / (double)formatSignal.size(); std::cout << "\nTaux compression: " << std::to_string(taux); if (decode.size() > formatSignal.size()) { decode.pop_back(); } //cv::Mat oOutputImg = reformat_image(decode, oInputImg.size()); /* bool areImageEquals = std::equal(oInputImg.begin<uchar>(), oInputImg.end<uchar>(), oOutputImg.begin<uchar>()); if (areImageEquals) { std::cout << "Yay!\n"; } else { std::cout << "Ohhhh :(\n"; }*/ // ... @@@@ TODO (make sure decoding also provides the original image!) } ghettoTestEncode(); } catch(const cv::Exception& e) { std::cerr << "Caught cv::Exceptions: " << e.what() << std::endl; } catch(const std::runtime_error& e) { std::cerr << "Caught std::runtime_error: " << e.what() << std::endl; } catch(const std::exception e) { std::cerr << "Caught unhandled exception." << e.what() << std::endl; } return 0; }