@@ -376,4 +376,66 @@ int32_t WiFiDrv::getRSSINetoworks(uint8_t networkItem)
376376 return networkRssi;
377377}
378378
379+ uint8_t WiFiDrv::reqHostByName (const char * aHostname)
380+ {
381+ WAIT_FOR_SLAVE_SELECT ();
382+
383+ // Send Command
384+ SpiDrv::sendCmd (REQ_HOST_BY_NAME_CMD, PARAM_NUMS_1);
385+ SpiDrv::sendParam ((uint8_t *)aHostname, strlen (aHostname), LAST_PARAM);
386+
387+ // Wait the reply elaboration
388+ SpiDrv::waitForSlaveReady ();
389+
390+ // Wait for reply
391+ uint8_t _data = 0 ;
392+ uint8_t _dataLen = 0 ;
393+ uint8_t result = SpiDrv::waitResponseCmd (REQ_HOST_BY_NAME_CMD, PARAM_NUMS_1, &_data, &_dataLen);
394+
395+ SpiDrv::spiSlaveDeselect ();
396+
397+ return result;
398+ }
399+
400+ int WiFiDrv::getHostByName (IPAddress& aResult)
401+ {
402+ uint8_t _ipAddr[WL_IPV4_LENGTH];
403+ IPAddress dummy (0xFF ,0xFF ,0xFF ,0xFF );
404+ int result = 0 ;
405+
406+ WAIT_FOR_SLAVE_SELECT ();
407+ // Send Command
408+ SpiDrv::sendCmd (GET_HOST_BY_NAME_CMD, PARAM_NUMS_0);
409+
410+ // Wait the reply elaboration
411+ SpiDrv::waitForSlaveReady ();
412+
413+ // Wait for reply
414+ uint8_t _dataLen = 0 ;
415+ if (!SpiDrv::waitResponseCmd (GET_HOST_BY_NAME_CMD, PARAM_NUMS_1, _ipAddr, &_dataLen))
416+ {
417+ WARN (" error waitResponse" );
418+ }else {
419+ aResult = _ipAddr;
420+ result = (aResult != dummy);
421+ }
422+ SpiDrv::spiSlaveDeselect ();
423+ return result;
424+ }
425+
426+ int WiFiDrv::getHostByName (const char * aHostname, IPAddress& aResult)
427+ {
428+ uint8_t retry = 10 ;
429+ if (reqHostByName (aHostname))
430+ {
431+ while (!getHostByName (aResult) && --retry > 0 )
432+ {
433+ delay (500 );
434+ }
435+ }else {
436+ return 0 ;
437+ }
438+ return 1 ;
439+ }
440+
379441WiFiDrv wiFiDrv;
0 commit comments