/* * UEFI Stop() function * */ EFI_STATUS EFIAPI SnpStop ( IN EFI_SIMPLE_NETWORK_PROTOCOL* Snp ) { // Check Snp Instance if (Snp == NULL) { return EFI_INVALID_PARAMETER; } // Check state of the driver if (Snp->Mode->State == EfiSimpleNetworkStopped) { return EFI_NOT_STARTED; } // Stop the Tx and Rx StopTx (STOP_TX_CFG | STOP_TX_MAC, Snp); StopRx (0, Snp); // Change the state switch (Snp->Mode->State) { case EfiSimpleNetworkStarted: case EfiSimpleNetworkInitialized: Snp->Mode->State = EfiSimpleNetworkStopped; break; default: return EFI_DEVICE_ERROR; } // Put the device into a power saving mode ? return EFI_SUCCESS; }
// Receive full frame int SerialIntrf::Rx(int DevAddr, uint8_t *pBuff, int BuffLen) { int count = 0; if (pBuff && StartRx(DevAddr)) { count = RxData(pBuff, BuffLen); StopRx(); } return count; }