/****************************************************************************
 * Function:        DRV_EXTPHY_WOLConfiguration
 *
 * PreCondition:    EthInit and EthPhyInit should have been called.
 *
 * Input:          hClientObj - A valid open-instance handle, returned from the driver's open routine
 *                    bAddr[] -  Source Mac Address , or a Magic Packet MAC address
 *
 * Output:         none
 *
 *
 * Side Effects:    None
 *
 * Overview:       Configure WOL for SMSC8740 with a Source MAC address or a 6 byte magic packet mac address.
 *                      wuFrame = Frame type need to be set.
 *
 * Note:            None
 *****************************************************************************/
void  DRV_EXTPHY_WOLConfiguration(DRV_HANDLE hClientObj,unsigned char bAddr[])
{
    unsigned char bAddr1[6] = {0x11,0x22,0x33,0x44,0x55,0x66};
    //eWOL_WAKEUP_FRAME wuframe = REMOTE_WAKEUP_FRAME;
    eWOL_WAKEUP_FRAME wuframe = MAGIC_PKT_RECEIVED;
   // eWOL_WAKEUP_FRAME wuframe = BROADCAST_FRAME_RCVD;    
    //eWOL_WAKEUP_FRAME wuframe = PERFECT_DA_FRAME;
    
#if defined (HARMONY_INT)
    INT_SOURCE src = DRV_ETHPHY_INTERRUPT_SOURCE;
#else
    SYS_INT_SOURCE src = SYS_INT_Source(SYS_MODULE_ETH_PHY);
#endif
    DRV_EXTPHY_WOLWakeUpFrameClear(hClientObj,PERFECT_DA_FRAME);
    DRV_EXTPHY_WOLWakeUpFrameClear(hClientObj,MAGIC_PKT_RECEIVED);
    DRV_EXTPHY_WOLWakeUpFrameClear(hClientObj,REMOTE_WAKEUP_FRAME);
    DRV_EXTPHY_WOLWakeUpFrameClear(hClientObj,BROADCAST_FRAME_RCVD);
    
    DRV_EXTPHY_WOLMACAddressSet(hClientObj,bAddr1);
    if(wuframe == REMOTE_WAKEUP_FRAME)
    {
        DRV_EXTPHY_WOLWakeupFrameSetup(hClientObj,bAddr);
    }
    DRV_EXTPHY_WOLWakeUpFrameSet(hClientObj,wuframe);
    DRV_EXTPHY_WOLInterruptMaskSet(hClientObj,WOL_INT_ENABLED);
	DRV_EXTPHY_IntInit(hClientObj,src,3,0);
}
static void LAN8740WOLIsr(void *p)
{
    DRV_HANDLE hClientObj = (DRV_HANDLE)p;

    eWOL_WAKEUP_FRAME wuframe = REMOTE_WAKEUP_FRAME;
    //eWOL_WAKEUP_FRAME wuframe = MAGIC_PKT_RECEIVED;
    // eWOL_WAKEUP_FRAME wuframe = BROADCAST_FRAME_RCVD;    
    //eWOL_WAKEUP_FRAME wuframe = PERFECT_DA_FRAME;
    bool wol_status;
    wol_status = DRV_EXTPHY_WOLWakeUpFrameRXStatusGet(hClientObj,wuframe);
   
    INT_SOURCE src = DRV_ETHPHY_INTERRUPT_SOURCE;

    LEDstate ^= SYS_USERIO_LED_ASSERTED;
    SYS_USERIO_SetLED(SYS_USERIO_LED_1, LEDstate);
    DRV_EXTPHY_WOLInterruptMaskSet(hClientObj,WOL_INT_DISABLED);
    // clear the WOL wake up frame
    DRV_EXTPHY_WOLWakeUpFrameClear(hClientObj,wuframe);
    SYS_INT_SourceDisable(src);
}