diff options
author | Janos Kovacs <janos.f.kovacs@nokia.com> | 2010-06-28 13:06:53 +0300 |
---|---|---|
committer | Janos Kovacs <janos.f.kovacs@nokia.com> | 2010-06-28 13:06:53 +0300 |
commit | 466532bb2258ea22e7ac96e73aa8d88f4dd155d6 (patch) | |
tree | 54fd5533fad7a2a6fcd99c28fdb85791ab24b340 | |
parent | 646638a1d8d5e7eccbb4b8488d8857231d34cbaf (diff) |
merged with the 'harmattan-fmradio-test' branch
-rw-r--r-- | client/client.c | 52 | ||||
-rw-r--r-- | src/res-msg.c | 1 | ||||
-rw-r--r-- | src/res-msg.h | 1 | ||||
-rw-r--r-- | src/res-proto.c | 7 | ||||
-rw-r--r-- | src/res-set-private.h | 2 | ||||
-rw-r--r-- | src/res-set.c | 15 | ||||
-rw-r--r-- | src/res-types.h | 2 |
7 files changed, 59 insertions, 21 deletions
diff --git a/client/client.c b/client/client.c index fb93e1d..251f8db 100644 --- a/client/client.c +++ b/client/client.c @@ -30,6 +30,7 @@ typedef struct { resmsg_rset_t rset; int verbose; DBusBusType bustype; + int allow_unknown; } conf_t; typedef struct { @@ -665,7 +666,7 @@ static void print_message(char *fmt, ...) static void usage(int exit_code) { - printf("usage: %s [-h] [-t] [-v] [-d bus-type] [-f mode-values]" + printf("usage: %s [-h] [-t] [-v] [-u] [-d bus-type] [-f mode-values]" "[-o optional-resources] [-s shared-resources -m shared-mask] " "class all-resources\n", exe_name); @@ -673,6 +674,7 @@ static void usage(int exit_code) printf("\t h\tprint this help message and exit\n"); printf("\t t\ttrace messages\n"); printf("\t v\tverbose printouts\n"); + printf("\t u\tallow 'unknown' (ie. other than listed below) classes"); printf("\t d\tbus-type. Either 'system' or 'session'\n"); printf("\t f\tmode values. See 'modes' below for the " "\n\t\tsyntax of <mode-values>\n"); @@ -684,6 +686,7 @@ static void usage(int exit_code) "syntax of\n\t\t<shared-mask>\n"); printf("\tclass:\n"); printf("\t\tcall\t - for native or 3rd party telephony\n"); + printf("\t\tvideoeditor\t - for video editing/MMS\n"); printf("\t\tcamera\t - for photo applications\n"); printf("\t\tringtone - for ringtones\n"); printf("\t\talarm\t - for alarm clock\n"); @@ -706,10 +709,12 @@ static void usage(int exit_code) printf("\t\tScaleButton\n"); printf("\t\tSnapButton\n"); printf("\t\tLensCover\n"); + printf("\t\tHeadsetButtons\n"); printf("\t no whitespace allowed in the resource list.\n"); printf("\tmodes:\n"); - printf("\t comma separated lis of the following modes\n"); + printf("\t comma separated list of the following modes\n"); printf("\t\tAutoRelease\n"); + printf("\t\tAlwaysReply\n"); exit(exit_code); } @@ -723,19 +728,20 @@ static void parse_options(int argc, char **argv) config.trace = FALSE; config.id = 1; - while ((option = getopt(argc, argv, "htvd:f:s:o:m:")) != -1) { + while ((option = getopt(argc, argv, "htvud:f:s:o:m:")) != -1) { switch (option) { - case 'h': usage(0); break; - case 't': config.trace = TRUE; break; - case 'v': config.verbose = TRUE; break; - case 'd': config.bustype = parse_bustype(optarg, 1); break; - case 'f': config.mode = parse_mode_values(optarg, 1); break; - case 'o': config.rset.opt = parse_resource_list(optarg, 1); break; - case 's': config.rset.share = parse_resource_list(optarg, 1); break; - case 'm': config.rset.mask = parse_resource_list(optarg, 1); break; - default: usage(EINVAL); break; + case 'h': usage(0); break; + case 't': config.trace = TRUE; break; + case 'v': config.verbose = TRUE; break; + case 'd': config.bustype = parse_bustype(optarg, 1); break; + case 'f': config.mode = parse_mode_values(optarg, 1); break; + case 'o': config.rset.opt = parse_resource_list(optarg, 1); break; + case 's': config.rset.share = parse_resource_list(optarg, 1); break; + case 'm': config.rset.mask = parse_resource_list(optarg, 1); break; + case 'u': config.allow_unknown = TRUE; break; + default: usage(EINVAL); break; } } @@ -762,15 +768,17 @@ static void parse_options(int argc, char **argv) static char *parse_class_string(char *str) { - if (strcmp(str, "call" ) && - strcmp(str, "camera" ) && - strcmp(str, "ringtone" ) && - strcmp(str, "alarm" ) && - strcmp(str, "navigator" ) && - strcmp(str, "game" ) && - strcmp(str, "player" ) && - strcmp(str, "event" ) && - strcmp(str, "background") ) + if (strcmp(str, "call" ) && + strcmp(str, "camera" ) && + strcmp(str, "ringtone" ) && + strcmp(str, "alarm" ) && + strcmp(str, "navigator" ) && + strcmp(str, "game" ) && + strcmp(str, "player" ) && + strcmp(str, "event" ) && + strcmp(str, "background" ) && + strcmp(str, "videoeditor") && + !config.allow_unknown ) { print_error("invalid class '%s'", str); } @@ -793,6 +801,7 @@ static uint32_t parse_resource_list(char *rlist_str, int exit_if_error) { RESMSG_SCALE_BUTTON , "ScaleButton" }, { RESMSG_SNAP_BUTTON , "SnapButton" }, { RESMSG_LENS_COVER , "LensCover" }, + { RESMSG_HEADSET_BUTTONS, "HeadsetButtons" }, { 0 , NULL } }; @@ -840,6 +849,7 @@ static uint32_t parse_mode_values(char *mval_str, int exit_if_error) { static rdef_t mdef[] = { { RESMSG_MODE_AUTO_RELEASE , "AutoRelease" }, + { RESMSG_MODE_ALWAYS_REPLY , "AlwaysReply" }, { 0 , NULL } }; diff --git a/src/res-msg.c b/src/res-msg.c index 76a8dfb..87be0da 100644 --- a/src/res-msg.c +++ b/src/res-msg.c @@ -240,6 +240,7 @@ static char *flag_str(uint32_t flag) case RESMSG_SCALE_BUTTON: str = "scale_button"; break; case RESMSG_SNAP_BUTTON: str = "snap_button"; break; case RESMSG_LENS_COVER: str = "lens_cover"; break; + case RESMSG_HEADSET_BUTTONS: str = "lens_cover"; break; default: str = NULL; break; } diff --git a/src/res-msg.h b/src/res-msg.h index 16e3d56..b654505 100644 --- a/src/res-msg.h +++ b/src/res-msg.h @@ -23,6 +23,7 @@ extern "C" { #define RESMSG_SCALE_BUTTON RESOURCE_SCALE_BUTTON #define RESMSG_SNAP_BUTTON RESOURCE_SNAP_BUTTON #define RESMSG_LENS_COVER RESOURCE_LENS_COVER +#define RESMSG_HEADSET_BUTTONS RESOURCE_HEADSET_BUTTONS #define RESMSG_MODE_AUTO_RELEASE RESOURCE_AUTO_RELEASE #define RESMSG_MODE_ALWAYS_REPLY RESOURCE_ALWAYS_REPLY diff --git a/src/res-proto.c b/src/res-proto.c index 8d6585f..095767f 100644 --- a/src/res-proto.c +++ b/src/res-proto.c @@ -53,6 +53,7 @@ EXPORT int resproto_send_message(resset_t *rset, { resconn_t *rcon = rset->resconn; resmsg_type_t type = resmsg->type; + resmsg_rset_t *flags; int success; if (rset->state != RESPROTO_RSET_STATE_CONNECTED || @@ -61,6 +62,12 @@ EXPORT int resproto_send_message(resset_t *rset, else { resmsg->any.id = rset->id; success = rcon->any.send(rset, resmsg, status); + + if (success && type == RESMSG_UPDATE) { + flags = &resmsg->record.rset; + resset_update_flags(rset, flags->all, flags->opt, + flags->share, flags->mask); + } } return success; diff --git a/src/res-set-private.h b/src/res-set-private.h index b5a9230..9206c78 100644 --- a/src/res-set-private.h +++ b/src/res-set-private.h @@ -9,6 +9,8 @@ resset_t *resset_create(union resconn_u*, const char*, uint32_t, void resset_destroy(resset_t *); void resset_ref(resset_t *); void resset_unref(resset_t *); +void resset_update_flags(resset_t *, uint32_t, uint32_t, + uint32_t,uint32_t); resset_t *resset_find(union resconn_u *, const char *, uint32_t); #endif /* __RES_SET_PRIVATE_H__ */ diff --git a/src/res-set.c b/src/res-set.c index f89e184..c27a745 100644 --- a/src/res-set.c +++ b/src/res-set.c @@ -76,6 +76,21 @@ void resset_unref(resset_t *rset) } } +void resset_update_flags(resset_t *rset, + uint32_t all, + uint32_t opt, + uint32_t share, + uint32_t mask) +{ + if (rset != NULL) { + rset->flags.all = all; + rset->flags.opt = opt; + rset->flags.share = share; + rset->flags.mask = mask; + } +} + + resset_t *resset_find(resconn_t *rcon, const char *peer, uint32_t id) { resset_t *rset; diff --git a/src/res-types.h b/src/res-types.h index ebcd9c8..5fb0e28 100644 --- a/src/res-types.h +++ b/src/res-types.h @@ -20,6 +20,7 @@ typedef enum { resource_scale_button = 10, resource_snap_button = 11, resource_lens_cover = 12, + resource_headset_buttons = 13, } resource_type_t; @@ -35,6 +36,7 @@ typedef enum { #define RESOURCE_SCALE_BUTTON RESOURCE_BIT( resource_scale_button ) #define RESOURCE_SNAP_BUTTON RESOURCE_BIT( resource_snap_button ) #define RESOURCE_LENS_COVER RESOURCE_BIT( resource_lens_cover ) +#define RESOURCE_HEADSET_BUTTONS RESOURCE_BIT( resource_headset_buttons ) typedef enum { resource_auto_release = 0, |