Hi folks,
in one of our projects, we have the following .vapi (see attachement).
There's a callback that sends us messages via
void callback( int event, Message message )
We then have to cast to the actual type like that:
switch ( event )
{
case Msmcomm.ResponseType.GET_IMEI:
unowned Msmcomm.Reply.GetImei msg =
(Msmcomm.Reply.GetImei) message;
details = @"IMEI = $(msg.getImei())";
break;
case Msmcomm.ResponseType.GET_FIRMWARE_INFO:
// We want something like: var msg =
message.safeCast<Msmcomm.Reply.GetImei>( message );
unowned Msmcomm.Reply.GetFirmwareInfo msg =
(Msmcomm.Reply.GetFirmwareInfo) message;
details = @"FIRMWARE = $(msg.getInfo())";
break;
case Msmcomm.ResponseType.CM_CALL:
unowned Msmcomm.Reply.Call msg = (Msmcomm.Reply.Call)
message;
details = @"refId = $(msg.getRefId()) cmd =
$(msg.getCmd()) err = $(msg.getErrorCode())";
break;
...
If I compile this code, it errors out with:
/local/pkg/fso/msmcomm/msmvterm/src/terminal.c:870: undefined reference
to `MSMCOMM_REPLY_GET_FIRMWARE_INFO'
/local/pkg/fso/msmcomm/msmvterm/src/terminal.c:860: undefined reference
to `MSMCOMM_REPLY_GET_IMEI'
/local/pkg/fso/msmcomm/msmvterm/src/terminal.c:882: undefined reference
to `MSMCOMM_REPLY_CALL'
/local/pkg/fso/msmcomm/msmvterm/src/terminal.c:895: undefined reference
to `MSMCOMM_REPLY_CHARGER_STATUS'
src/commands.o: In function `commands_end_call':
/local/pkg/fso/msmcomm/msmvterm/src/commands.c:772: undefined reference
to `msmcomm_message_unref'
src/commands.o: In function `commands_answer_call':
/local/pkg/fso/msmcomm/msmvterm/src/commands.c:762: undefined reference
to `msmcomm_message_unref'
src/commands.o: In function `commands_get_charger_status':
/local/pkg/fso/msmcomm/msmvterm/src/commands.c:675: undefined reference
to `msmcomm_message_unref'
src/commands.o: In function `commands_test_alive':
/local/pkg/fso/msmcomm/msmvterm/src/commands.c:638: undefined reference
to `msmcomm_message_unref'
all which I don't quite understand. The offending code is the message
cast, i.e. the line:
msg = MSMCOMM_REPLY_GET_FIRMWARE_INFO (message);
I have two questions now:
1.) Where does Vala take that MSMCOMM_REPLY_GET_FIRMWARE_INFO and how
can I fix the problem? Since all the concrete messages inherit from the
base class I would expect this to be a no-op in C, as we're just
ensuring Vala that we know which message type it is.
2.) Is there a better way to handle C-APIs like that?
/**
* (C) 2009-2010 by Simon Busch <[email protected]>
* All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
**/
/*
* Questions for morphis
*
* 1.) These messages have different sizes, right? What about the free functions?
* 2.) Can we rename the 'event' to 'urc'? URC stands for unsolicited response code and is more in line
* with the telephony taxonomy. If we call it 'event', it's unclear whether it's a solicited response or not.
* 3.) Is msm communication sync. or async. on the individual command level?
* 4.) If 'async', do we have sequence numbers to match reponses to requests?
*/
[CCode (cheader_filename = "msmcomm.h")]
namespace Msmcomm
{
[CCode (cname = "int", has_type_id = false, cprefix = "MSMCOMM_MESSAGE_CMD_", cheader_filename = "msmcomm.h")]
public enum CommandType
{
CHANGE_OPERATION_MODE,
GET_IMEI,
GET_FIRMWARE_INFO,
TEST_ALIVE,
GET_PHONE_STATE_INFO,
VERIFY_PIN,
GET_VOICEMAIL_NR,
GET_LOCATION_PRIV_PREF,
ANSWER_CALL,
SET_AUDIO_PROFILE,
END_CALL,
GET_CHARGER_STATUS,
CHARGING,
DIAL_CALL
}
[CCode (cname = "int", has_type_id = false, cprefix = "MSMCOMM_RESPONSE_", cheader_filename = "msmcomm.h")]
public enum ResponseType
{
TEST_ALIVE,
GET_FIRMWARE_INFO,
GET_IMEI,
PDSM_PD_GET_POS,
PDSM_PD_END_SESSION,
PA_SET_PARAM,
LCS_AGENT_CLIENT_RSP,
XTRA_SET_DATA,
GET_SIM_CAPABILITIES,
GET_VOICEMAIL_NR,
SOUND,
CM_CALL,
CHARGER_STATUS,
CHARGING
}
[CCode (cname = "int", has_type_id = false, cprefix = "MSMCOMM_EVENT_", cheader_filename = "msmcomm.h")]
public enum EventType
{
RESET_RADIO_IND,
CHARGER_STATUS,
OPERATION_MODE,
CM_PH_INFO_AVAILABLE,
POWER_STATE,
NETWORK_STATE_INFO,
PDSM_PD_DONE,
PD_POSITION_DATA,
PD_PARAMETER_CHANGE,
PDSM_LCS,
PDSM_XTRA,
CALL_STATUS,
CALL_INCOMMING,
CALL_ORIGINATION,
CALL_CONNECT,
CALL_END,
SIM_INSERTED,
SIM_PIN1_VERIFIED,
SIM_PIN1_BLOCKED,
SIM_PIN1_UNBLOCKED,
SIM_PIN1_ENABLED,
SIM_PIN1_DISABLED,
SIM_PIN1_CHANGED,
SIM_PIN1_PERM_BLOCKED,
SIM_PIN2_VERIFIED,
SIM_PIN2_BLOCKED,
SIM_PIN2_UNBLOCKED,
SIM_PIN2_ENABLED,
SIM_PIN2_DISABLED,
SIM_PIN2_CHANGED,
SIM_PIN2_PERM_BLOCKED,
SIM_REFRESH_RESET,
SIM_REFRESH_INIT,
SIM_REFRESH_INIT_FCN,
SIM_REFRESH_FAILED,
SIM_FDN_ENABLE,
SIM_FDN_DISABLE,
SIM_ILLEGAL,
SIM_REMOVED,
SIM_NO_SIM_EVENT,
SIM_NO_SIM,
SIM_DRIVER_ERROR,
SIM_INTERNAL_RESET,
SIM_OK_FOR_TERMINAL_PROFILE_DL,
SIM_NOT_OK_FOR_TERMINAL_PROFILE_DL,
SIM_INIT_COMPLETED_NO_PROV,
SIM_MEMORY_WARNING,
SIM_SIM2_EVENT,
SIM_REAL_RESET_FAILURE,
SIM_CARD_ERROR,
SIM_NO_EVENT,
SIM_GET_PERSO_NW_FAILURE,
SIM_GET_PERSO_NW_BLOCKED,
SIM_REFRESH_APP_RESET,
SIM_REFRESH_3G_SESSION_RESET,
SIM_APP_SELECTED,
SIM_DEFAULT,
SUPS_PROCESS_USS,
SUPS_PROCESS_USS_CONF,
SUPS_USS_RES,
SUPS_RELEASE_USS_IND,
SUPS_USS_NOTIFY_IND,
SUPS_USS_NOTIFY_RES,
SUPS_RELEASE,
SUPS_ABORT,
SUPS_ERASE,
SUPS_REGISTER,
SUPS_REGISTER_CONF,
SUPS_GET_PASSWORD_IN,
SUPS_GET_PASSWORD_RES,
SUPS_INTERROGATE,
SUPS_INTERROGATE_CONF,
SUPS_ACTIVATE,
SUPS_ACTIVATE_CONF,
SUPS_DEACTIVATE,
SUPS_DEACTIVATE_CONF
}
public string eventTypeToString( int t )
{
switch ( t )
{
// ResponseType
case ResponseType.TEST_ALIVE:
return "RESPONSE_TEST_ALIVE";
case ResponseType.GET_FIRMWARE_INFO:
return "RESPONSE_GET_FIRMWARE_INFO";
case ResponseType.GET_IMEI:
return "RESPONSE_GET_IMEI";
case ResponseType.PDSM_PD_GET_POS:
return "RESPONSE_PDSM_PD_GET_POS";
case ResponseType.PDSM_PD_END_SESSION:
return "RESPONSE_PDSM_PD_END_SESSION";
case ResponseType.PA_SET_PARAM:
return "RESPONSE_PA_SET_PARAM";
case ResponseType.LCS_AGENT_CLIENT_RSP:
return "RESPONSE_LCS_AGENT_CLIENT_RSP";
case ResponseType.XTRA_SET_DATA:
return "RESPONSE_XTRA_SET_DATA";
case ResponseType.GET_SIM_CAPABILITIES:
return "RESPONSE_GET_SIM_CAPABILITIES";
case ResponseType.GET_VOICEMAIL_NR:
return "RESPONSE_GET_VOICEMAIL_NR";
case ResponseType.SOUND:
return "RESPONSE_SOUND";
case ResponseType.CM_CALL:
return "RESPONSE_CM_CALL";
case ResponseType.CHARGER_STATUS:
return "RESPONSE_CHARGER_STATUS";
case ResponseType.CHARGING:
return "RESPONSE_CHARGING";
// EventType
case EventType.RESET_RADIO_IND:
return "URC_RESET_RADIO_IND";
case EventType.CHARGER_STATUS:
return "URC_CHARGER_STATUS";
case EventType.OPERATION_MODE:
return "URC_OPERATION_MODE";
case EventType.CM_PH_INFO_AVAILABLE:
return "URC_CM_PH_INFO_AVAILABLE";
case EventType.POWER_STATE:
return "URC_POWER_STATE";
case EventType.NETWORK_STATE_INFO:
return "URC_NETWORK_STATE_INFO";
case EventType.PDSM_PD_DONE:
return "URC_PDSM_PD_DONE";
case EventType.PD_POSITION_DATA:
return "URC_PD_POSITION_DATA";
case EventType.PD_PARAMETER_CHANGE:
return "URC_PD_PARAMETER_CHANGE";
case EventType.PDSM_LCS:
return "URC_PDSM_LCS";
case EventType.PDSM_XTRA:
return "URC_PDSM_XTRA";
case EventType.CALL_STATUS:
return "URC_CALL_STATUS";
case EventType.CALL_INCOMMING:
return "URC_CALL_INCOMMING";
case EventType.CALL_ORIGINATION:
return "URC_CALL_ORIGINATION";
case EventType.CALL_CONNECT:
return "URC_CALL_CONNECT";
case EventType.CALL_END:
return "URC_CALL_END";
case EventType.SIM_INSERTED:
return "URC_SIM_INSERTED";
case EventType.SIM_PIN1_VERIFIED:
return "URC_SIM_PIN1_VERIFIED";
case EventType.SIM_PIN1_BLOCKED:
return "URC_SIM_PIN1_BLOCKED";
case EventType.SIM_PIN1_UNBLOCKED:
return "URC_SIM_PIN1_UNBLOCKED";
case EventType.SIM_PIN1_ENABLED:
return "URC_SIM_PIN1_ENABLED";
case EventType.SIM_PIN1_DISABLED:
return "URC_SIM_PIN1_DISABLED";
case EventType.SIM_PIN1_CHANGED:
return "URC_SIM_PIN1_CHANGED";
case EventType.SIM_PIN1_PERM_BLOCKED:
return "URC_SIM_PIN1_PERM_BLOCKED";
case EventType.SIM_PIN2_VERIFIED:
return "URC_SIM_PIN2_VERIFIED";
case EventType.SIM_PIN2_BLOCKED:
return "URC_SIM_PIN2_BLOCKED";
case EventType.SIM_PIN2_UNBLOCKED:
return "URC_SIM_PIN2_UNBLOCKED";
case EventType.SIM_PIN2_ENABLED:
return "URC_SIM_PIN2_ENABLED";
case EventType.SIM_PIN2_DISABLED:
return "URC_SIM_PIN2_DISABLED";
case EventType.SIM_PIN2_CHANGED:
return "URC_SIM_PIN2_CHANGED";
case EventType.SIM_PIN2_PERM_BLOCKED:
return "URC_SIM_PIN2_PERM_BLOCKED";
case EventType.SIM_REFRESH_RESET:
return "URC_SIM_REFRESH_RESET";
case EventType.SIM_REFRESH_INIT:
return "URC_SIM_REFRESH_INIT";
case EventType.SIM_REFRESH_INIT_FCN:
return "URC_SIM_REFRESH_INIT_FCN";
case EventType.SIM_REFRESH_FAILED:
return "URC_SIM_REFRESH_FAILED";
case EventType.SIM_FDN_ENABLE:
return "URC_SIM_FDN_ENABLE";
case EventType.SIM_FDN_DISABLE:
return "URC_SIM_FDN_DISABLE";
case EventType.SIM_ILLEGAL:
return "URC_SIM_ILLEGAL";
case EventType.SIM_REMOVED:
return "URC_SIM_REMOVED";
case EventType.SIM_NO_SIM_EVENT:
return "URC_SIM_NO_SIM_EVENT";
case EventType.SIM_NO_SIM:
return "URC_SIM_NO_SIM";
case EventType.SIM_DRIVER_ERROR:
return "URC_SIM_DRIVER_ERROR";
case EventType.SIM_INTERNAL_RESET:
return "URC_SIM_INTERNAL_RESET";
case EventType.SIM_OK_FOR_TERMINAL_PROFILE_DL:
return "URC_SIM_OK_FOR_TERMINAL_PROFILE_DL";
case EventType.SIM_NOT_OK_FOR_TERMINAL_PROFILE_DL:
return "URC_SIM_NOT_OK_FOR_TERMINAL_PROFILE_DL";
case EventType.SIM_INIT_COMPLETED_NO_PROV:
return "URC_SIM_INIT_COMPLETED_NO_PROV";
case EventType.SIM_MEMORY_WARNING:
return "URC_SIM_MEMORY_WARNING";
case EventType.SIM_SIM2_EVENT:
return "URC_SIM_SIM2_EVENT";
case EventType.SIM_REAL_RESET_FAILURE:
return "URC_SIM_REAL_RESET_FAILURE";
case EventType.SIM_CARD_ERROR:
return "URC_SIM_CARD_ERROR";
case EventType.SIM_NO_EVENT:
return "URC_SIM_NO_EVENT";
case EventType.SIM_GET_PERSO_NW_FAILURE:
return "URC_SIM_GET_PERSO_NW_FAILURE";
case EventType.SIM_GET_PERSO_NW_BLOCKED:
return "URC_SIM_GET_PERSO_NW_BLOCKED";
case EventType.SIM_REFRESH_APP_RESET:
return "URC_SIM_REFRESH_APP_RESET";
case EventType.SIM_REFRESH_3G_SESSION_RESET:
return "URC_SIM_REFRESH_3G_SESSION_RESET";
case EventType.SIM_APP_SELECTED:
return "URC_SIM_APP_SELECTED";
case EventType.SIM_DEFAULT:
return "URC_SIM_DEFAULT";
case EventType.SUPS_PROCESS_USS:
return "SUPS_PROCESS_USS";
case EventType.SUPS_PROCESS_USS_CONF:
return "SUPS_PROCESS_USS_CONF";
case EventType.SUPS_USS_RES:
return "SUPS_USS_RES";
case EventType.SUPS_RELEASE_USS_IND:
return "SUPS_RELEASE_USS_IND";
case EventType.SUPS_USS_NOTIFY_IND:
return "SUPS_USS_NOTIFY_IND";
case EventType.SUPS_USS_NOTIFY_RES:
return "SUPS_USS_NOTIFY_RES";
case EventType.SUPS_RELEASE:
return "SUPS_RELEASE";
case EventType.SUPS_ABORT:
return "SUPS_ABORT";
case EventType.SUPS_ERASE:
return "SUPS_ERASE";
case EventType.SUPS_REGISTER:
return "SUPS_REGISTER";
case EventType.SUPS_REGISTER_CONF:
return "SUPS_REGISTER_CONF";
case EventType.SUPS_GET_PASSWORD_IN:
return "SUPS_GET_PASSWORD_IN";
case EventType.SUPS_GET_PASSWORD_RES:
return "SUPS_GET_PASSWORD_RES";
case EventType.SUPS_INTERROGATE:
return "SUPS_INTERROGATE";
case EventType.SUPS_INTERROGATE_CONF:
return "SUPS_INTERROGATE_CONF";
case EventType.SUPS_ACTIVATE:
return "SUPS_ACTIVATE";
case EventType.SUPS_ACTIVATE_CONF:
return "SUPS_ACTIVATE_CONF";
case EventType.SUPS_DEACTIVATE:
return "SUPS_DEACTIVATE";
case EventType.SUPS_DEACTIVATE_CONF:
return "SUPS_DEACTIVATE_CONF";
default:
return "%d (unknown)".printf( t );
}
}
[CCode (cname = "int", has_type_id = false, cprefix = "MSMCOMM_OPERATION_MODE_", cheader_filename = "msmcomm.h")]
public enum OperationMode
{
RESET,
ONLINE,
OFFLINE
}
[CCode (cname = "int", has_type_id = false, cprefix = "MSMCOMM_CHARGING_VOLTAGE_", cheader_filename = "msmcomm.h")]
public enum UsbVoltageMode
{
MODE_250mA,
MODE_500mA,
MODE_1A
}
[CCode (cname = "int", has_type_id = false, cprefix = "MSMCOMM_CHARGING_MODE_", cheader_filename = "msmcomm.h")]
public enum ChargingMode
{
USB,
INDUCTIVE
}
[CCode (cname = "msmcomm_event_handler_cb", instance_pos = 0)]
public delegate void EventHandlerCb(int event, Message message);
[CCode (cname = "msmcomm_write_handler_cb", instance_pos = 0)]
public delegate void WriteHandlerCb(void *data, int len);
[CCode (cname = "msmcomm_read_handler_cb", instance_pos = 0)]
public delegate void ReadHandlerCb(void *data, int len);
[CCode (cname = "msmcomm_network_state_info_changed_field_type_cb", instance_pos = 0)]
public delegate void ChangedFieldTypeCb(void *data, int type);
[CCode (cname = "msmcomm_check_hci_version")]
public bool checkHciVersion(uint version);
[Compact]
[CCode (cname = "struct msmcomm_context", free_function = "msmcomm_shutdown")]
public class Context
{
[CCode (cname = "msmcomm_new")]
public Context();
[CCode (cname = "msmcomm_read_from_modem")]
public bool readFromModem();
[CCode (cname = "msmcomm_send_message")]
public void sendMessage(Message message);
[CCode (cname = "msmcomm_register_event_handler")]
public void registerEventHandler(EventHandlerCb eventHandlerCb);
[CCode (cname = "msmcomm_register_write_handler")]
public void registerWriteHandler(WriteHandlerCb writeHandlerCb);
[CCode (cname = "msmcomm_register_read_handler")]
public void registerReadHandler(ReadHandlerCb readHandlerCb);
}
[CCode (cname = "struct msmcomm_message", free_function = "msmcomm_free_message")]
public class Message
{
[CCode (cname = "msmcomm_create_message")]
public Message(int type);
[CCode (cname = "msmcomm_message_get_size")]
public int getSize();
[CCode (cname = "msmcomm_message_get_type")]
public int getType();
[CCode (cname = "msmcomm_message_get_ref_id")]
public uint8 getRefId();
[CCode (cname = "msmcomm_message_set_ref_id")]
public void setRefId(uint8 refId);
}
namespace Command
{
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class ChangeOperationMode : Message
{
[CCode (cname = "msmcomm_create_message")]
public ChangeOperationMode(CommandType t = CommandType.CHANGE_OPERATION_MODE);
[CCode (cname = "msmcomm_message_change_operation_mode_set_operation_mode")]
public void setOperationMode(OperationMode oprtMode);
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class Charging : Message
{
[CCode (cname = "msmcomm_create_message")]
public Charging(CommandType t = CommandType.CHARGING);
[CCode (cname = "msmcomm_message_charging_set_voltage")]
public void setVoltage(UsbVoltageMode voltage);
[CCode (cname = "msmcomm_message_charging_set_mode")]
public void setMode(ChargingMode mode);
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class GetImei : Message
{
[CCode (cname = "msmcomm_create_message")]
public GetImei(CommandType t = CommandType.GET_IMEI);
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class GetChargerStatus : Message
{
[CCode (cname = "msmcomm_create_message")]
public GetChargerStatus(CommandType t = CommandType.GET_CHARGER_STATUS);
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class GetFirmwareInfo : Message
{
[CCode (cname = "msmcomm_create_message")]
public GetFirmwareInfo(CommandType t = CommandType.GET_FIRMWARE_INFO);
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class GetPhoneStateInfo : Message
{
[CCode (cname = "msmcomm_create_message")]
public GetPhoneStateInfo(CommandType t = CommandType.GET_PHONE_STATE_INFO);
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class TestAlive : Message
{
[CCode (cname = "msmcomm_create_message")]
public TestAlive(CommandType t = CommandType.TEST_ALIVE);
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class VerifyPin : Message
{
[CCode (cname = "msmcomm_create_message")]
public VerifyPin(CommandType t = CommandType.VERIFY_PIN);
[CCode (cname = "msmcomm_message_verify_pin_set_pin")]
public void _setPin(string pin, uint length);
public void setPin(string pin)
{
GLib.assert( pin.length <= 8 );
_setPin( pin, (uint)pin.length );
}
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class EndCall : Message
{
[CCode (cname = "msmcomm_create_message")]
public EndCall(CommandType t = CommandType.END_CALL);
[CCode (cname = "msmcomm_message_end_call_set_call_number")]
public void setCallNumber(uint8 call_nr);
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class AnswerCall : Message
{
[CCode (cname = "msmcomm_create_message")]
public AnswerCall(CommandType t = CommandType.ANSWER_CALL);
[CCode (cname = "msmcomm_message_answer_call_set_call_number")]
public void setCallNumber(uint8 call_nr);
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class DialCall : Message
{
[CCode (cname = "msmcomm_create_message")]
public DialCall(CommandType t = CommandType.DIAL_CALL);
[CCode (cname = "msmcomm_message_dial_call_set_caller_id")]
private void _setCallerId(string callerId, uint length);
public void setCallerId(string caller_id)
{
_setCallerId(caller_id, (uint)caller_id.length);
}
}
}
[CCode (cprefix = "")]
namespace Reply
{
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class GetFirmwareInfo : Message
{
[CCode (cname = "msmcomm_resp_get_firmware_info_get_info")]
public void _getInfo(char[] info);
public string getInfo()
{
var info = new char[100];
_getInfo( info );
return ((string)info).dup();
}
[CCode (cname = "msmcomm_resp_get_firmware_info_get_hci_version")]
public uint8 getHciVersion();
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class GetImei : Message
{
[CCode (cname = "msmcomm_resp_get_imei_get_imei")]
private void _getImei(char[] imei);
public string getImei()
{
var imei = new char[17];
_getImei(imei);
// FIXME: Is this ok or do we have a leak now?
return ((string)imei).dup();
}
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class Charging : Message
{
[CCode (cname = "msmcomm_resp_charging_get_voltage")]
public uint getVoltage();
[CCode (cname = "msmcomm_resp_charging_get_mode")]
public uint getMode();
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class ChargerStatus : Message
{
[CCode (cname = "msmcomm_resp_charger_status_get_voltage")]
public uint getVoltage();
[CCode (cname = "msmcomm_resp_charger_status_get_mode")]
public uint getMode();
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class Call : Message
{
[CCode (cname = "msmcomm_resp_cm_call_get_ref_id")]
public uint getRefId();
[CCode (cname = "msmcomm_resp_cm_call_get_cmd")]
public uint16 getCmd();
[CCode (cname = "msmcomm_resp_cm_call_get_error_code")]
public uint16 getErrorCode();
}
}
namespace Unsolicited
{
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class PowerState : Message
{
[CCode (cname = "msmcomm_event_power_state_get_state")]
public uint8 getState();
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class ChargerStatus : Message
{
[CCode (cname = "msmcomm_event_charger_status_get_voltage")]
public uint getVoltage();
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public abstract class CallStatus : Message
{
[CCode (cname = "msmcomm_event_call_status_get_caller_id")]
private void _getCallerId(string callerId);
public string getCallerId()
{
string callerId;
_getCallerId(callerId);
return callerId;
}
[CCode (cname = "msmcomm_event_call_status_get_call_id")]
public uint getCallId();
[CCode (cname = "msmcomm_event_call_status_get_reject_type")]
public uint getRejectType();
[CCode (cname = "msmcomm_event_call_status_get_reject_value")]
public uint getRejectValue();
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class CallIncoming : CallStatus
{
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class CallConnect : CallStatus
{
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class CallEnd : CallStatus
{
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class CallOrigination : CallStatus
{
}
[CCode (cname = "struct msmcomm_message", free_function = "")]
public class NetworkStateInfo : Message
{
[CCode (cname = "msmcomm_event_network_state_info_get_change_field")]
public uint getChangeField();
[CCode (cname = "msmcomm_event_network_state_info_get_new_value")]
public uint8 getNewValue();
[CCode (cname = "msmcomm_event_network_state_info_trace_changes")]
public void traceChanges(ChangedFieldTypeCb type_handler);
[CCode (cname = "msmcomm_event_network_state_info_get_operator_name")]
private string _getOperatorName(string operatorName);
public string getOperatorName()
{
string operatorName;
_getOperatorName(operatorName);
return operatorName;
}
[CCode (cname = "msmcomm_event_network_state_info_get_rssi")]
public uint16 getRssi();
[CCode (cname = "msmcomm_event_network_state_info_get_ecio")]
public uint16 getEcio();
[CCode (cname = "msmcomm_event_network_state_info_get_service_domain")]
public uint8 getServiceDomain();
[CCode (cname = "msmcomm_event_network_state_info_get_service_capability")]
public uint8 getServiceCapability();
[CCode (cname = "msmcomm_event_network_state_info_get_gprs_attached")]
public uint8 getGrpsAttached();
[CCode (cname = "msmcomm_event_network_state_info_get_roam")]
public uint16 getRoam();
}
} /* namespace Unsolicited */
}
_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list