On 03/13/2013 03:25 AM, Wolf-Bastian Pöttner wrote:
>  This allows setting up a network without a PAN
>  coordinator. Necessary if you want to be compatible
>  with the contiki implementation.
>
> Signed-off-by: Stefan Schmidt <ste...@datenfreihafen.org>
> ---
>  src/iz-mac.c |   91 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 91 insertions(+)
>
> diff --git a/src/iz-mac.c b/src/iz-mac.c
> index 7c1e616..be980d6 100644
> --- a/src/iz-mac.c
> +++ b/src/iz-mac.c
> @@ -253,6 +253,88 @@ static struct iz_cmd_event list_response_event[] = {
>       {},
>  };
>  
> +/******************/
> +/* SET handling  */
> +/******************/
> +
> +static iz_res_t set_parse(struct iz_cmd *cmd)
> +{
> +     cmd->flags = NLM_F_REQUEST;
> +     return IZ_CONT_OK;
> +}
> +
> +static iz_res_t set_request(struct iz_cmd *cmd, struct nl_msg *msg)
> +{
> +     char *dummy;
> +     uint16_t pan_id, short_addr;
> +     uint8_t chan;
> +
> +     if (!cmd->argv[1])
> +             return IZ_STOP_ERR;
> +     NLA_PUT_STRING(msg, IEEE802154_ATTR_DEV_NAME, cmd->argv[1]);
> +
> +     if (!cmd->argv[2])
> +             return IZ_STOP_ERR;
> +     pan_id = strtol(cmd->argv[2], &dummy, 16);
> +     if (*dummy) {
> +             printf("Bad PAN ID!\n");
> +             return IZ_STOP_ERR;
> +     }
> +     NLA_PUT_U16(msg, IEEE802154_ATTR_COORD_PAN_ID, pan_id);
> +
> +     if (!cmd->argv[3])
> +             return IZ_STOP_ERR;
> +     short_addr = strtol(cmd->argv[3], &dummy, 16);
> +     if (*dummy) {
> +             printf("Bad short address!\n");
> +             return IZ_STOP_ERR;
> +     }
> +     NLA_PUT_U16(msg, IEEE802154_ATTR_COORD_SHORT_ADDR, short_addr);
> +
> +     if (!cmd->argv[4])
> +             return IZ_STOP_ERR;
> +     chan = strtol(cmd->argv[4], &dummy, 10);
> +     if (*dummy) {
> +             printf("Bad channel number!\n");
> +             return IZ_STOP_ERR;
> +     }
> +     NLA_PUT_U8(msg, IEEE802154_ATTR_CHANNEL, chan);
> +
> +     /* set all unneeded attributes to 0*/
> +     NLA_PUT_U8(msg, IEEE802154_ATTR_PAN_COORD, 0);
> +     NLA_PUT_U8(msg, IEEE802154_ATTR_BCN_ORD, 0);
> +     NLA_PUT_U8(msg, IEEE802154_ATTR_SF_ORD, 0);
> +     NLA_PUT_U8(msg, IEEE802154_ATTR_BAT_EXT, 0);
> +     NLA_PUT_U8(msg, IEEE802154_ATTR_COORD_REALIGN, 0);
> +
> +     return IZ_CONT_OK;
> +
> +nla_put_failure:
> +     return IZ_STOP_ERR;
> +}
> +
> +static iz_res_t set_response(struct iz_cmd *cmd, struct genlmsghdr *ghdr, 
> struct nlattr **attrs)
> +{
> +     if (!attrs[IEEE802154_ATTR_SHORT_ADDR] ||
> +             !attrs[IEEE802154_ATTR_STATUS] )
> +             return IZ_STOP_ERR;
> +
> +     printf("Set PAN ID %04hx, short address %04hx, status %i\n",
> +             nla_get_u16(attrs[IEEE802154_ATTR_COORD_PAN_ID]),
> +             nla_get_u16(attrs[IEEE802154_ATTR_SHORT_ADDR]),
> +             nla_get_u8(attrs[IEEE802154_ATTR_CHANNEL]));
> +
> +     return IZ_STOP_OK;
> +}
> +
> +static struct iz_cmd_event set_response_event[] = {
> +     {
> +             .call = set_response,
> +             .nl = IEEE802154_START_CONF,
> +     },
> +     {},
> +};
> +
>  /************************/
>  /* ASSOCIATE handling   */
>  /************************/
> @@ -473,6 +555,15 @@ const struct iz_module iz_mac = {
>               .response       = list_response_event,
>               .finish         = list_finish,
>       },
> +     {
> +             .name           = "set",
> +             .usage          = "<iface> <pan> <addr> <channel>",
> +             .doc            = "Set address, channel and pan for an 
> interface.",
> +             .nl_cmd         = IEEE802154_START_REQ,
> +             .parse          = set_parse,
> +             .request        = set_request,
> +             .response       = set_response_event,
> +     },
>       {}}
>  };
>  

Where did this patch come from? Signed-off-by Stefan Schmidt ? If he
wrote it, then it needs to have
    From: Name <email>
as the first line of the long description so that git-am will credit him
as the author. git format-patch will generate that for you if he's the
author and you export that commit from git.

Other than that, this patch looks like a good idea.

Alan.


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Linux-zigbee-devel mailing list
Linux-zigbee-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel

Reply via email to