⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gnapplet.c

📁 NOKIA手机开发包
💻 C
📖 第 1 页 / 共 2 页
字号:
	pkt_put_uint16(&pkt, data->phonebook_entry->memory_type);	pkt_put_uint32(&pkt, data->phonebook_entry->location);	SEND_MESSAGE_BLOCK(GNAPPLET_MSG_PHONEBOOK);}static gn_error gnapplet_write_phonebook(gn_data *data, struct gn_statemachine *state){	gnapplet_driver_instance *drvinst = DRVINSTANCE(state);	int i;	REQUEST_DEF;	if (!data->phonebook_entry) return GN_ERR_INTERNALERROR;	if (!data->phonebook_entry->name[0])		return gnapplet_delete_phonebook(data, state);	pkt_put_uint16(&pkt, GNAPPLET_MSG_PHONEBOOK_WRITE_REQ);	pkt_put_uint16(&pkt, data->phonebook_entry->memory_type);	pkt_put_uint32(&pkt, data->phonebook_entry->location);	pkt_put_uint16(&pkt, data->phonebook_entry->subentries_count + 2);	pkt_put_uint16(&pkt, GN_PHONEBOOK_ENTRY_Name);	pkt_put_uint16(&pkt, 0);	pkt_put_string(&pkt, data->phonebook_entry->name);	pkt_put_uint16(&pkt, GN_PHONEBOOK_ENTRY_Number);	pkt_put_uint16(&pkt, GN_PHONEBOOK_NUMBER_General);	pkt_put_string(&pkt, data->phonebook_entry->number);	for (i = 0; i < data->phonebook_entry->subentries_count; i++) {		pkt_put_uint16(&pkt, data->phonebook_entry->subentries[i].entry_type);		pkt_put_uint16(&pkt, data->phonebook_entry->subentries[i].number_type);		pkt_put_string(&pkt, data->phonebook_entry->subentries[i].data.number);	}	SEND_MESSAGE_BLOCK(GNAPPLET_MSG_PHONEBOOK);}static gn_error gnapplet_delete_phonebook(gn_data *data, struct gn_statemachine *state){	gnapplet_driver_instance *drvinst = DRVINSTANCE(state);	REQUEST_DEF;	if (!data->phonebook_entry) return GN_ERR_INTERNALERROR;	pkt_put_uint16(&pkt, GNAPPLET_MSG_PHONEBOOK_DELETE_REQ);	pkt_put_uint16(&pkt, data->phonebook_entry->memory_type);	pkt_put_uint32(&pkt, data->phonebook_entry->location);	SEND_MESSAGE_BLOCK(GNAPPLET_MSG_PHONEBOOK);}static gn_error gnapplet_memory_status(gn_data *data, struct gn_statemachine *state){	gnapplet_driver_instance *drvinst = DRVINSTANCE(state);	REQUEST_DEF;	if (!data->memory_status) return GN_ERR_INTERNALERROR;	pkt_put_uint16(&pkt, GNAPPLET_MSG_PHONEBOOK_STATUS_REQ);	pkt_put_uint16(&pkt, data->memory_status->memory_type);	SEND_MESSAGE_BLOCK(GNAPPLET_MSG_PHONEBOOK);}static gn_error gnapplet_incoming_phonebook(int messagetype, unsigned char *message, int length, gn_data *data, struct gn_statemachine *state){	int i, n, type, subtype;	gn_phonebook_entry *entry;	gn_phonebook_subentry *se;	REPLY_DEF;	switch (code) {	case GNAPPLET_MSG_PHONEBOOK_READ_RESP:		if (!(entry = data->phonebook_entry)) return GN_ERR_INTERNALERROR;		entry->empty = false;		entry->caller_group = 5;		entry->name[0] = '\0';		entry->number[0] = '\0';		entry->subentries_count = 0;		memset(&entry->date, 0, sizeof(entry->date));		if (error != GN_ERR_NONE) return error;		n = pkt_get_uint16(&pkt);		assert(n < GN_PHONEBOOK_SUBENTRIES_MAX_NUMBER);		for (i = 0; i < n; i++) {			se = entry->subentries + entry->subentries_count;			type = pkt_get_uint16(&pkt);			subtype = pkt_get_uint16(&pkt);			switch (type) {			case GN_PHONEBOOK_ENTRY_Name:				pkt_get_string(entry->name, sizeof(entry->name), &pkt);				break;			case GN_PHONEBOOK_ENTRY_Number:				se->entry_type = type;				se->number_type = subtype;				se->id = 0;				pkt_get_string(se->data.number, sizeof(se->data.number), &pkt);				entry->subentries_count++;				if (!entry->number[0]) {					snprintf(entry->number, sizeof(entry->number), "%s", se->data.number);				}				break;			case GN_PHONEBOOK_ENTRY_Date:				se->entry_type = type;				se->number_type = subtype;				se->id = 0;				pkt_get_timestamp(&se->data.date, &pkt);				entry->subentries_count++;				entry->date = se->data.date;				break;			default:				se->entry_type = type;				se->number_type = subtype;				se->id = 0;				pkt_get_string(se->data.number, sizeof(se->data.number), &pkt);				entry->subentries_count++;				break;			}		}		break;	case GNAPPLET_MSG_PHONEBOOK_WRITE_RESP:		if (!(entry = data->phonebook_entry)) return GN_ERR_INTERNALERROR;		if (error != GN_ERR_NONE) return error;		entry->memory_type = pkt_get_uint16(&pkt);		entry->location = pkt_get_uint32(&pkt);		break;	case GNAPPLET_MSG_PHONEBOOK_DELETE_RESP:		if (!(entry = data->phonebook_entry)) return GN_ERR_INTERNALERROR;		if (error != GN_ERR_NONE) return error;		entry->memory_type = pkt_get_uint16(&pkt);		entry->location = pkt_get_uint32(&pkt);		break;	case GNAPPLET_MSG_PHONEBOOK_STATUS_RESP:		if (!data->memory_status) return GN_ERR_INTERNALERROR;		if (error != GN_ERR_NONE) return error;		data->memory_status->memory_type = pkt_get_uint16(&pkt);		data->memory_status->used = pkt_get_uint32(&pkt);		data->memory_status->free = pkt_get_uint32(&pkt);		break;	default:		return GN_ERR_UNHANDLEDFRAME;	}	return GN_ERR_NONE;}static gn_error gnapplet_get_network_info(gn_data *data, struct gn_statemachine *state){	gnapplet_driver_instance *drvinst = DRVINSTANCE(state);	REQUEST_DEF;	if (!data->network_info) return GN_ERR_INTERNALERROR;	pkt_put_uint16(&pkt, GNAPPLET_MSG_NETINFO_GETCURRENT_REQ);	SEND_MESSAGE_BLOCK(GNAPPLET_MSG_NETINFO);}static gn_error gnapplet_get_rf_level(gn_data *data, struct gn_statemachine *state){	gnapplet_driver_instance *drvinst = DRVINSTANCE(state);	REQUEST_DEF;	if (!data->rf_unit || !data->rf_level) return GN_ERR_INTERNALERROR;	pkt_put_uint16(&pkt, GNAPPLET_MSG_NETINFO_GETRFLEVEL_REQ);	SEND_MESSAGE_BLOCK(GNAPPLET_MSG_NETINFO);}static gn_error gnapplet_incoming_netinfo(int messagetype, unsigned char *message, int length, gn_data *data, struct gn_statemachine *state){	gn_network_info *netinfo;	uint16_t cellid, lac;	uint32_t strength;	REPLY_DEF;	switch (code) {	case GNAPPLET_MSG_NETINFO_GETCURRENT_RESP:		if (!(netinfo = data->network_info)) return GN_ERR_INTERNALERROR;		memset(netinfo, 0, sizeof(gn_network_info));		if (error != GN_ERR_NONE) return error;		cellid = pkt_get_uint16(&pkt);		netinfo->cell_id[0] = cellid / 256;		netinfo->cell_id[1] = cellid % 256;		lac = pkt_get_uint16(&pkt);		netinfo->LAC[0] = lac / 256;		netinfo->LAC[1] = lac % 256;		pkt_get_uint8(&pkt); /* registration status */		pkt_get_string(netinfo->network_code, sizeof(netinfo->network_code), &pkt);		break;	case GNAPPLET_MSG_NETINFO_GETRFLEVEL_RESP:		if (!data->rf_unit || !data->rf_level) return GN_ERR_INTERNALERROR;		if (error != GN_ERR_NONE) return error;		*data->rf_unit = GN_RF_Percentage;		*data->rf_level = pkt_get_uint8(&pkt);		break;	default:		return GN_ERR_UNHANDLEDFRAME;	}	return GN_ERR_NONE;}static gn_error gnapplet_get_power_info(gn_data *data, struct gn_statemachine *state){	gnapplet_driver_instance *drvinst = DRVINSTANCE(state);	REQUEST_DEF;	if (!data->battery_unit && !data->battery_level && !data->power_source) return GN_ERR_INTERNALERROR;	pkt_put_uint16(&pkt, GNAPPLET_MSG_POWER_INFO_REQ);	SEND_MESSAGE_BLOCK(GNAPPLET_MSG_POWER);}static gn_error gnapplet_incoming_power(int messagetype, unsigned char *message, int length, gn_data *data, struct gn_statemachine *state){	uint8_t percent, source;	REPLY_DEF;	switch (code) {	case GNAPPLET_MSG_POWER_INFO_RESP:		percent = pkt_get_uint8(&pkt);		source = pkt_get_uint8(&pkt);		if (error != GN_ERR_NONE) return error;		if (data->battery_unit) *data->battery_unit = GN_RF_Percentage;		if (data->battery_level) *data->battery_level = percent;		if (data->power_source) *data->power_source = source;		break;	default:		return GN_ERR_UNHANDLEDFRAME;	}	return GN_ERR_NONE;}static gn_error gnapplet_incoming_debug(int messagetype, unsigned char *message, int length, gn_data *data, struct gn_statemachine *state){	char msg[1024];	REPLY_DEF;	switch (code) {	case GNAPPLET_MSG_DEBUG_NOTIFICATION:		if (error != GN_ERR_NONE) return error;		pkt_get_string(msg, sizeof(msg), &pkt);		dprintf("PHONE: %s\n", msg);		break;	default:		return GN_ERR_UNHANDLEDFRAME;	}	return GN_ERR_UNSOLICITED;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -