Esempio n. 1
0
static void
req_start(uint8 chan, bool coord)
  /* this function configures the coordinator.
   * NOTE: when in periodic mode, active scan will NOT be answered immediatly.
   */
{
  void      *mac = pvAppApiGetMacHandle();
  MAC_Pib_s *pib = MAC_psPibGetHandle(mac);

  MAC_MlmeReqRsp_s  mlmereq;
  MAC_MlmeSyncCfm_s mlmecfm;

  MAC_vPibSetShortAddr(mac, 0x0000);
  pib->bAssociationPermit = true;
  memcpy(&pib->sCoordExtAddr, ieee_get_mac(), sizeof(MAC_ExtAddr_s));

  mlmereq.u8Type = MAC_MLME_REQ_START;
  mlmereq.u8ParamLength = sizeof(MAC_MlmeReqScan_s);
  mlmereq.uParam.sReqStart.u16PanId          = IEEE802154_PANDID;
  mlmereq.uParam.sReqStart.u8Channel         = chan;
  mlmereq.uParam.sReqStart.u8BeaconOrder     = BEACON_ORDER;
  mlmereq.uParam.sReqStart.u8SuperframeOrder = SUPERFRAME_ORDER;
  mlmereq.uParam.sReqStart.u8PanCoordinator  = coord;
  mlmereq.uParam.sReqStart.u8BatteryLifeExt  = false;
  mlmereq.uParam.sReqStart.u8Realignment     = false;
  mlmereq.uParam.sReqStart.u8SecurityEnable  = false;

  vAppApiMlmeRequest(&mlmereq, &mlmecfm);
}
Esempio n. 2
0
int
start_sniffer(int channel) {
    void      *mac;
    MAC_Pib_s *pib;
    int res;

    rxq_init();

    /* setup mac <-> app interface */
    u32AppApiInit((PR_GET_BUFFER) rxq_mlme_alloc, (PR_POST_CALLBACK) dummy, NULL,
                  (PR_GET_BUFFER) rxq_mcps_alloc, (PR_POST_CALLBACK) dummy, NULL);

    /* get mac and pib handles */
    mac   = pvAppApiGetMacHandle();
    pib   = MAC_psPibGetHandle(mac);

    /* do a full reset */
    req_reset(true);
    MAC_vPibSetShortAddr(mac, 0x0001);
    MAC_vPibSetPromiscuousMode(mac, true, true);
    res = req_start(channel, true);
    MAC_vPibSetPromiscuousMode(mac, true, false);
    return res;
}