Esempio n. 1
1
void log_to_file(const IQuotesProvider* pProvider,
	MCONTACT hContact,
	const tstring& rsLogFileName,
	const tstring& rsFormat)
{
	std::string sPath = quotes_t2a(rsLogFileName.c_str());

	std::string::size_type n = sPath.find_last_of("\\/");
	if (std::string::npos != n)
		sPath.erase(n);

	DWORD dwAttributes = ::GetFileAttributesA(sPath.c_str());
	if ((0xffffffff == dwAttributes) || (0 == (dwAttributes&FILE_ATTRIBUTE_DIRECTORY)))
		CreateDirectoryTree(sPath.c_str());

	tofstream file(rsLogFileName.c_str(), std::ios::app | std::ios::out);
	file.imbue(GetSystemLocale());
	if (file.good()) {
		tstring s = format_rate(pProvider, hContact, rsFormat);
		file << s;
	}
}
Esempio n. 2
0
static char * format_assocrate(struct iwinfo_rate_entry *r)
{
	static char buf[40];
	char *p = buf;
	int l = sizeof(buf);

	if (r->rate <= 0)
	{
		snprintf(buf, sizeof(buf), "unknown");
	}
	else
	{
		p += snprintf(p, l, "%s", format_rate(r->rate));
		l = sizeof(buf) - (p - buf);

		if (r->mcs >= 0)
		{
			p += snprintf(p, l, ", MCS %d, %dMHz", r->mcs, 20 + r->is_40mhz*20);
			l = sizeof(buf) - (p - buf);

			if (r->is_short_gi)
				p += snprintf(p, l, ", short GI");
		}
	}

	return buf;
}
Esempio n. 3
0
static char * format_assocrate(struct iwinfo_rate_entry *r)
{
	static char buf[80];
	char *p = buf;
	int l = sizeof(buf);

	if (r->rate <= 0)
	{
		snprintf(buf, sizeof(buf), "unknown");
	}
	else
	{
		p += snprintf(p, l, "%s", format_rate(r->rate));
		l = sizeof(buf) - (p - buf);

		if (r->is_ht)
		{
			p += snprintf(p, l, ", MCS %d, %dMHz", r->mcs, r->mhz);
			l = sizeof(buf) - (p - buf);
		}
		else if (r->is_vht)
		{
			p += snprintf(p, l, ", VHT-MCS %d, %dMHz", r->mcs, r->mhz);
			l = sizeof(buf) - (p - buf);

			if (r->nss)
			{
				p += snprintf(p, l, ", VHT-NSS %d", r->nss);
				l = sizeof(buf) - (p - buf);
			}
		}
	}

	return buf;
}
Esempio n. 4
0
static char * print_rate(const struct iwinfo_ops *iw, const char *ifname)
{
	int rate;
	if (iw->bitrate(ifname, &rate))
		rate = -1;

	return format_rate(rate);
}
Esempio n. 5
0
static char * format_bps(struct iwinfo_rate_entry *r,struct iwinfo_rate_entry *t) {
    static char buf[64];
    char *p = buf;
    int l = sizeof (buf);

    if (r->rate > 0) {
        p += snprintf(p, l, "%s", format_rate(r->rate));
        l = sizeof (buf) - (p - buf);
    } else {
        p += snprintf(p, l, "%s", "NA");
        l = sizeof (buf) - (p - buf);
    }
    p += snprintf(p, l, "%s", "/");
    l = sizeof (buf) - (p - buf);
    if (t->rate > 0) {
        p += snprintf(p, l, "%s", format_rate(t->rate));
        l = sizeof (buf) - (p - buf);
    } else {
        p += snprintf(p, l, "%s", "NA");
        l = sizeof (buf) - (p - buf);
    }

    return buf;
}
void gfx_draw_display_record() {
  char valueBuffer[20];

  // Records
  gfx_draw_string("Records: ", &FONT_XSMALL, 0, 0, GFX_ALIGN_LEFT);
  itoa(recorder_count(), valueBuffer, 10);
  gfx_draw_string(valueBuffer, &FONT_XSMALL, 5, 12, GFX_ALIGN_LEFT);

  // Rate
  gfx_draw_string("Rate: ", &FONT_XSMALL, 0, 24, GFX_ALIGN_LEFT);
  format_rate(recorder_is_recording() ? recorder_rate() : SET_RATES[CLAMP(setRateIndex, 0, MAX_SET_RATE_INDEX)], valueBuffer);
  gfx_draw_string(valueBuffer, &FONT_XSMALL, 5, 36, GFX_ALIGN_LEFT);

  gfx_draw_menu(recorder_is_recording() ? "STOP" : "START", NULL, NULL, "EXIT");
}
Esempio n. 7
0
void log_to_history(const IQuotesProvider* pProvider,
	MCONTACT hContact,
	time_t nTime,
	const tstring& rsFormat)
{
	tstring s = format_rate(pProvider, hContact, rsFormat);
	T2Utf psz(s.c_str());

	DBEVENTINFO dbei = { sizeof(dbei) };
	dbei.szModule = QUOTES_PROTOCOL_NAME;
	dbei.timestamp = static_cast<DWORD>(nTime);
	dbei.flags = DBEF_READ | DBEF_UTF;
	dbei.eventType = EVENTTYPE_MESSAGE;
	dbei.cbBlob = (int)::mir_strlen(psz) + 1;
	dbei.pBlob = (PBYTE)(char*)psz;
	db_event_add(hContact, &dbei);
}
Esempio n. 8
0
void
refresh_progress_meter(void)
{
	char buf[MAX_WINSIZE + 1];
	time_t now;
	off_t transferred;
	double elapsed;
	int percent;
	off_t bytes_left;
	int cur_speed;
	int hours, minutes, seconds;
	int i, len;
	int file_len;
	off_t delta_pos;

	transferred = *counter - cur_pos;
	cur_pos = *counter;
	now = time(NULL);
	bytes_left = end_pos - cur_pos;

	delta_pos = cur_pos - last_pos;
	if (delta_pos > max_delta_pos) 
		max_delta_pos = delta_pos;

	if (bytes_left > 0)
		elapsed = now - last_update;
	else {
		elapsed = now - start;
		/* Calculate true total speed when done */
		transferred = end_pos;
		bytes_per_second = 0;
	}

	/* calculate speed */
	if (elapsed != 0)
		cur_speed = (transferred / elapsed);
	else
		cur_speed = transferred;

#define AGE_FACTOR 0.9
	if (bytes_per_second != 0) {
		bytes_per_second = (bytes_per_second * AGE_FACTOR) +
		    (cur_speed * (1.0 - AGE_FACTOR));
	} else
		bytes_per_second = cur_speed;

	/* filename */
	buf[0] = '\0';
	file_len = win_size - 45;
	if (file_len > 0) {
		len = snprintf(buf, file_len + 1, "\r%s", file);
		if (len < 0)
			len = 0;
		if (len >= file_len + 1)
			len = file_len;
		for (i = len; i < file_len; i++)
			buf[i] = ' ';
		buf[file_len] = '\0';
	}

	/* percent of transfer done */
	if (end_pos != 0)
		percent = ((float)cur_pos / end_pos) * 100;
	else
		percent = 100;

	snprintf(buf + strlen(buf), win_size - strlen(buf-8),
	    " %3d%% ", percent);

	/* amount transferred */
	format_size(buf + strlen(buf), win_size - strlen(buf),
	    cur_pos);
	strlcat(buf, " ", win_size);

	/* bandwidth usage */
	format_rate(buf + strlen(buf), win_size - strlen(buf),
	    (off_t)bytes_per_second);
	strlcat(buf, "/s ", win_size);

	/* instantaneous rate */
	format_rate(buf + strlen(buf), win_size - strlen(buf),
	    delta_pos);
	strlcat(buf, "/s ", win_size);

	/* ETA */
	if (!transferred)
		stalled += elapsed;
	else
		stalled = 0;

	if (stalled >= STALL_TIME)
		strlcat(buf, "- stalled -", win_size);
	else if (bytes_per_second == 0 && bytes_left)
		strlcat(buf, "  --:-- ETA", win_size);
	else {
		if (bytes_left > 0)
			seconds = bytes_left / bytes_per_second;
		else
			seconds = elapsed;

		hours = seconds / 3600;
		seconds -= hours * 3600;
		minutes = seconds / 60;
		seconds -= minutes * 60;

		if (hours != 0)
			snprintf(buf + strlen(buf), win_size - strlen(buf),
			    "%d:%02d:%02d", hours, minutes, seconds);
		else
			snprintf(buf + strlen(buf), win_size - strlen(buf),
			    "  %02d:%02d", minutes, seconds);

		if (bytes_left > 0)
			strlcat(buf, " ETA", win_size);
		else
			strlcat(buf, "    ", win_size);
	}

	write(STDOUT_FILENO, buf, win_size - 1);
	last_update = now;
	last_pos = cur_pos;
}
Esempio n. 9
0
void CQuotesProviderBase::WriteContactRate(MCONTACT hContact, double dRate, const tstring& rsSymbol/* = ""*/)
{
	time_t nTime = ::time(NULL);

	if (false == rsSymbol.empty())
		db_set_ts(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_SYMBOL, rsSymbol.c_str());

	double dPrev = 0.0;
	bool bValidPrev = Quotes_DBReadDouble(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_CURR_VALUE, dPrev);
	if (true == bValidPrev)
		Quotes_DBWriteDouble(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_PREV_VALUE, dPrev);

	Quotes_DBWriteDouble(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_CURR_VALUE, dRate);
	db_set_dw(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_FETCH_TIME, nTime);

	tstring sSymbol = rsSymbol;

	tostringstream oNick;
	oNick.imbue(GetSystemLocale());
	if (false == m_sContactListFormat.empty()) {
		tstring s = format_rate(this, hContact, m_sContactListFormat);
		oNick << s;
	}
	else {
		if (true == sSymbol.empty())
			sSymbol = Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_SYMBOL);

		oNick << std::setfill(_T(' ')) << std::setw(10) << std::left << sSymbol << std::setw(6) << std::right << dRate;
	}
	CTendency tendency;

	if (true == tendency.Parse(this, m_sTendencyFormat, hContact))
		do_set_contact_extra_icon(hContact, tendency);

	db_set_ts(hContact, LIST_MODULE_NAME, CONTACT_LIST_NAME, oNick.str().c_str());

	tstring sStatusMsg = format_rate(this, hContact, m_sStatusMsgFormat);
	if (false == sStatusMsg.empty())
		db_set_ts(hContact, LIST_MODULE_NAME, STATUS_MSG_NAME, sStatusMsg.c_str());
	else
		db_unset(hContact, LIST_MODULE_NAME, STATUS_MSG_NAME);

	bool bUseContactSpecific = (db_get_b(hContact, QUOTES_PROTOCOL_NAME, DB_STR_CONTACT_SPEC_SETTINGS, 0) > 0);

	CAdvProviderSettings global_settings(this);

	WORD dwMode = (bUseContactSpecific)
		? db_get_w(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_LOG, static_cast<WORD>(lmDisabled))
		: global_settings.GetLogMode();
	if (dwMode&lmExternalFile) {
		bool bAdd = true;
		bool bOnlyIfChanged = (bUseContactSpecific)
			? (db_get_w(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_LOG_FILE_CONDITION, 1) > 0)
			: global_settings.GetLogOnlyChangedFlag();
		if (true == bOnlyIfChanged) {
			bAdd = ((false == bValidPrev) || (false == IsWithinAccuracy(dRate, dPrev)));
		}
		if (true == bAdd) {
			tstring sLogFileName = (bUseContactSpecific)
				? Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_LOG_FILE, global_settings.GetLogFileName().c_str())
				: global_settings.GetLogFileName();

			if (true == sSymbol.empty()) {
				sSymbol = Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_SYMBOL);
			}

			sLogFileName = GenerateLogFileName(sLogFileName, sSymbol);

			tstring sFormat = global_settings.GetLogFormat();
			if (bUseContactSpecific) {
				CQuotesProviderVisitorDbSettings visitor;
				Accept(visitor);
				sFormat = Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_FORMAT_LOG_FILE, visitor.m_pszDefLogFileFormat);
			}

			log_to_file(this, hContact, sLogFileName, sFormat);
		}
	}
	if (dwMode&lmInternalHistory) {
		bool bAdd = true;
		bool bOnlyIfChanged = (bUseContactSpecific)
			? (db_get_w(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_HISTORY_CONDITION, 1) > 0)
			: global_settings.GetHistoryOnlyChangedFlag();

		if (true == bOnlyIfChanged) {
			bAdd = ((false == bValidPrev) || (false == IsWithinAccuracy(dRate, dPrev)));
		}
		if (true == bAdd) {
			tstring sFormat = (bUseContactSpecific)
				? Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_FORMAT_HISTORY, global_settings.GetHistoryFormat().c_str())
				: global_settings.GetHistoryFormat();

			log_to_history(this, hContact, nTime, sFormat);
		}
	}

	if (dwMode&lmPopup) {
		bool bOnlyIfChanged = (bUseContactSpecific)
			? (1 == db_get_b(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_POPUP_CONDITION, 1) > 0)
			: global_settings.GetShowPopupIfValueChangedFlag();
		if ((false == bOnlyIfChanged)
			|| ((true == bOnlyIfChanged) && (true == bValidPrev) && (false == IsWithinAccuracy(dRate, dPrev)))) {
			tstring sFormat = (bUseContactSpecific)
				? Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_FORMAT_POPUP, global_settings.GetPopupFormat().c_str())
				: global_settings.GetPopupFormat();

			CPopupSettings ps = *(global_settings.GetPopupSettingsPtr());
			ps.InitForContact(hContact);
			show_popup(this, hContact, tendency, sFormat, ps);
		}
	}

	SetContactStatus(hContact, ID_STATUS_ONLINE);
}
Esempio n. 10
0
bool show_popup(const IQuotesProvider* pProvider,
	MCONTACT hContact,
	const CTendency& tendency,
	const tstring& rsFormat,
	const CPopupSettings& ps)
{
	if (!ServiceExists(MS_POPUP_ADDPOPUPT))
		return false;

	POPUPDATAT ppd;
	memset(&ppd, 0, sizeof(ppd));
	ppd.lchContact = hContact;

	if (tendency.IsValid()) {
		CTendency::EResult nComparison = tendency.Compare();
		if (CTendency::NotChanged == nComparison)
			ppd.lchIcon = Quotes_LoadIconEx(IDI_ICON_NOTCHANGED);
		else if (CTendency::Up == nComparison)
			ppd.lchIcon = Quotes_LoadIconEx(IDI_ICON_UP);
		else if (CTendency::Down == nComparison)
			ppd.lchIcon = Quotes_LoadIconEx(IDI_ICON_DOWN);
	}

	CQuotesProviderVisitorFormater visitor(hContact, _T('s'), 0);
	pProvider->Accept(visitor);
	const tstring& sTitle = visitor.GetResult();
	mir_tstrncpy(ppd.lptzContactName, sTitle.c_str(), MAX_CONTACTNAME);
	{
		ptrT ss(variables_parsedup((TCHAR*)rsFormat.c_str(), 0, hContact));
		tstring sText = format_rate(pProvider, hContact, tstring(ss));
		mir_tstrncpy(ppd.lptzText, sText.c_str(), MAX_SECONDLINE);
	}

	if (CPopupSettings::colourDefault == ps.GetColourMode()) {
		ppd.colorText = CPopupSettings::GetDefColourText();
		ppd.colorBack = CPopupSettings::GetDefColourBk();
	}
	else {
		ppd.colorText = ps.GetColourText();
		ppd.colorBack = ps.GetColourBk();
	}

	switch (ps.GetDelayMode()) {
	default:
		assert(!"Unknown popup delay mode");
	case CPopupSettings::delayFromPopup:
		ppd.iSeconds = 0;
		break;
	case CPopupSettings::delayPermanent:
		ppd.iSeconds = -1;
		break;
	case CPopupSettings::delayCustom:
		ppd.iSeconds = ps.GetDelayTimeout();
		break;
	}

	LPARAM lp = 0;
	if (false == ps.GetHistoryFlag())
		lp |= 0x08;

	return (0 == CallService(MS_POPUP_ADDPOPUPT, reinterpret_cast<WPARAM>(&ppd), lp));
}
Esempio n. 11
0
static void print_one_if(FILE *fp, struct ifstat_ent *n)
{
	int i;

	if(!conf.show_errors) {

		if(conf.noformat)
			fprintf(fp, "%s ", n->name);
		else
			fprintf(fp, "%-10s ", n->name);
		nformat_bits(fp, n->rate[2]);
		nformat_rate(fp, n->rate[0]);
		nformat_bits(fp, n->rate[3]);
		nformat_rate(fp, n->rate[1]);
		
		fprintf(fp, "%s", "\n");
		
		return;
	}  


	fprintf(fp, "%-15s ", n->name);
	for (i=0; i<4; i++)
		format_rate(fp, n, i);
	fprintf(fp, "\n");

	fprintf(fp, "%-15s ", "");
	format_rate(fp, n, 4); /* rx_err */
	format_rate(fp, n, 6); /* rx_dropped */
	format_rate(fp, n, 11);/* rx_over_err */
	format_rate(fp, n, 10); /* rx_len_err */
	fprintf(fp, "\n");

	fprintf(fp, "%-15s ", "");
	format_rate(fp, n, 12); /* rx_crc_err */
	format_rate(fp, n, 13); /* rx_frame_err */
	format_rate(fp, n, 14); /* rx_fifo_err */
	format_rate(fp, n, 15); /* rx_missed_err */
	fprintf(fp, "\n");
	
	fprintf(fp, "%-15s ", "");
	format_rate(fp, n, 5); /* tx_err */
	format_rate(fp, n, 7); /* tx_dropped */
	format_rate(fp, n, 9); /* collisons */
	format_rate(fp, n, 17); 
	fprintf(fp, "\n");
	
	fprintf(fp, "%-15s ", "");
	format_rate(fp, n, 16);
	format_rate(fp, n, 18);
	format_rate(fp, n, 19);
	format_rate(fp, n, 20);
	fprintf(fp, "\n");
}
Esempio n. 12
0
void print_one_if(FILE *fp, struct ifstat_ent *n)
{
	int i;

	if(!show_errors) {

		fprintf(fp, "%-10s ", n->name);
		nformat_bits(fp, n->rate[2]);
		nformat_rate(fp, n->rate[0]);
		nformat_bits(fp, n->rate[3]);
		nformat_rate(fp, n->rate[1]);
		
		fprintf(fp, "%s", "\n");
		
		return;
	}  


	fprintf(fp, "%-15s ", n->name);
	for (i=0; i<4; i++)
		format_rate(fp, n, i);
	fprintf(fp, "\n");

	fprintf(fp, "%-15s ", "");
	format_rate(fp, n, 4);
	format_rate(fp, n, 6);
	format_rate(fp, n, 11);
	format_rate(fp, n, 10);
	fprintf(fp, "\n");

	fprintf(fp, "%-15s ", "");
	format_rate(fp, n, 12);
	format_rate(fp, n, 13);
	format_rate(fp, n, 14);
	format_rate(fp, n, 15);
	fprintf(fp, "\n");
	
	fprintf(fp, "%-15s ", "");
	format_rate(fp, n, 5);
	format_rate(fp, n, 7);
	format_rate(fp, n, 9);
	format_rate(fp, n, 17);
	fprintf(fp, "\n");
	
	fprintf(fp, "%-15s ", "");
	format_rate(fp, n, 16);
	format_rate(fp, n, 18);
	format_rate(fp, n, 19);
	format_rate(fp, n, 20);
	fprintf(fp, "\n");
}
Esempio n. 13
0
static void print_one_if(FILE *fp, const struct ifstat_ent *n,
			 const unsigned long long *vals)
{
	int i;

	fprintf(fp, "%-15s ", n->name);
	for (i = 0; i < 4; i++)
		format_rate(fp, vals, n->rate, i);
	fprintf(fp, "\n");

	if (!show_errors) {
		fprintf(fp, "%-15s ", "");
		format_pair(fp, vals, 4, 6);
		format_pair(fp, vals, 5, 7);
		format_rate(fp, vals, n->rate, 11);
		format_rate(fp, vals, n->rate, 9);
		fprintf(fp, "\n");
	} else {
		fprintf(fp, "%-15s ", "");
		format_rate(fp, vals, n->rate, 4);
		format_rate(fp, vals, n->rate, 6);
		format_rate(fp, vals, n->rate, 11);
		format_rate(fp, vals, n->rate, 10);
		fprintf(fp, "\n");

		fprintf(fp, "%-15s ", "");
		format_rate(fp, vals, n->rate, 12);
		format_rate(fp, vals, n->rate, 13);
		format_rate(fp, vals, n->rate, 14);
		format_rate(fp, vals, n->rate, 15);
		fprintf(fp, "\n");

		fprintf(fp, "%-15s ", "");
		format_rate(fp, vals, n->rate, 5);
		format_rate(fp, vals, n->rate, 7);
		format_rate(fp, vals, n->rate, 9);
		format_rate(fp, vals, n->rate, 17);
		fprintf(fp, "\n");

		fprintf(fp, "%-15s ", "");
		format_rate(fp, vals, n->rate, 16);
		format_rate(fp, vals, n->rate, 18);
		format_rate(fp, vals, n->rate, 19);
		format_rate(fp, vals, n->rate, 20);
		fprintf(fp, "\n");
	}
}