Пример #1
0
Файл: dbg.c Проект: yskcg/actube
void cw_dbg_dmp_(int level, const char *file, int line,
		     const uint8_t * data, int len, const char *format, ...)
{
	if (!cw_dbg_is_level(level))
		return;


	char  *dmp = cw_dbg_mkdmp(data,len);
	cw_dbg(level,"%s%s",format,dmp);
	free(dmp);


}
Пример #2
0
Файл: dbg.c Проект: yskcg/actube
void cw_dbg_elem_colored(int level, struct conn *conn, int msg, int msgelem,
			 const uint8_t * msgbuf, int len)
{
	if (!cw_dbg_is_level(level))
		return;

	const char *elemname;
	char vendorname[256];
	char vendor_details[265];
	*vendor_details = 0;

	if (msgelem == CW_ELEM_VENDOR_SPECIFIC_PAYLOAD) {
		uint32_t vendor_id = ntohl(*((uint32_t *) msgbuf));
		int type = ntohs(*((uint16_t *) (msgbuf + 4)));
		cw_format_vendor(vendor_details, vendor_id, type, msgbuf);
		sprintf(vendorname, "%s/%s/%s",
			cw_strelemp(conn->actions, msgelem),
			(char *) cw_strvendor(vendor_id), vendor_details);
		elemname = vendorname;

	} else {
		elemname = cw_strelemp(conn->actions, msgelem);
	}


	if (!cw_dbg_is_level(DBG_ELEM_DMP)){
		cw_dbg(DBG_ELEM, "%d (%s), len=%d",
		       msgelem, elemname, len);
	}
	else{
		char *dmp = cw_dbg_mkdmp(msgbuf,len);

		cw_dbg(DBG_ELEM, "%d (%s), len=%d%s%s",
			msgelem, 
			elemname, 
			len, 
			get_dbg_color_ontext(DBG_ELEM_DMP),
			dmp);

		free(dmp);
	}
}
Пример #3
0
static int cw_read_wtp_descriptor_versions(mbag_t mbag, uint8_t * data,
					   int len, int silent)
{
	int i = 0;
	while (i<len) {

		if (i + 8 > len) {
			if (!silent)
				cw_dbg(DBG_ELEM_ERR,
				       "WTP descriptor subelement to long, length=%d>%d",
				       i + 8, len);
			return 0;
		}

		uint32_t vendor_id = cw_get_dword(data + i);
		uint32_t val = cw_get_dword(data + i + 4);

		int subtype = (val >> 16) & 0xffff;
		int sublen = val & 0xffff;
		i += 8;

		if (sublen + i > len) {
			if (!silent)
				cw_dbg(DBG_ELEM_ERR,
				       "WTP Descriptor sub-element too long, length = %d",
				       sublen);
			return 0;
		}

		if (!silent) {
			char *dmp;
			char *dmpmem = NULL;
			if (cw_dbg_is_level(DBG_SUBELEM_DMP)) {
				dmpmem = cw_dbg_mkdmp(data + i, sublen);
				dmp = dmpmem;
			} else
				dmp = "";
			cw_dbg(DBG_SUBELEM, "WTP Descriptor subtype=%d,len=%d%s", subtype,
			       sublen, dmp);

			if (dmpmem)
				free(dmpmem);
		}

		switch (subtype) {
			case CW_SUBELEM_WTP_HARDWARE_VERSION:
/*
				mbag_set_dword(mbag,
						       CW_ITEM_WTP_HARDWARE_VENDOR,
						       vendor_id);
				mbag_set_bstrn(mbag,
						       CW_ITEM_WTP_HARDWARE_VERSION,
						       data + i, sublen);
*/

				mbag_set_vendorstr(mbag,
							   CW_ITEM_WTP_HARDWARE_VERSION,
							   vendor_id, data + i, sublen);

				break;
			case CW_SUBELEM_WTP_SOFTWARE_VERSION:

				mbag_set_vendorstr(mbag,
							   CW_ITEM_WTP_SOFTWARE_VERSION,
							   vendor_id, data + i, sublen);
/*
				mbag_set_dword(mbag,
						       CW_ITEM_WTP_SOFTWARE_VENDOR,
						       vendor_id);
				mbag_set_bstrn(mbag,
						       CW_ITEM_WTP_SOFTWARE_VERSION,
						       data + i, sublen);

*/
				break;
			case CW_SUBELEM_WTP_BOOTLOADER_VERSION:

				mbag_set_vendorstr(mbag,
							   CW_ITEM_WTP_BOOTLOADER_VERSION,
							   vendor_id, data + i, sublen);

/*
				mbag_set_dword(mbag,
						       CW_ITEM_WTP_BOOTLOADER_VENDOR,
						       vendor_id);
				mbag_set_bstrn(mbag,
						       CW_ITEM_WTP_BOOTLOADER_VERSION,
						       data + i, sublen);
*/
				break;
			default:
				if (!silent)
					cw_dbg(DBG_ELEM_ERR,
					       "Unknown WTP descriptor subelement, type = %d",
					       subtype);
				break;
		}
		i += sublen;

	} //while (i < len);

	return 1;

}