#include "SmartcontrolOS.h"
#include "Apps.h"
#include "CMSIS.h"
void Temperature_Humidity(ui32 dt){

    static bool ini_OK = false;


     LCD__write(_,"%2.0f",wf(dd));

      if(!ini_OK) Scheduler__wait(_,3*sec); // start signal block
      DO__write_open_drain(_,PA4,1);
      DO__write_open_drain(_,PA4,0);
      Scheduler__wait(_,10*ms);
      DO__write_open_drain(_,PA4,1);
      Scheduler__wait(_,40*us);
      DI__read(_,PA4);



Scheduler__wait(_,40*us);            //check sensor reply block

if(DI__read(_,PA4) == 0)  Scheduler__wait(_,90*us);


while(DI__read(_,PA4) == 0);


ui8 sum = 0;
ui8 temp1 = 0, temp2 = 0;
ui8 feucht1 = 0, feucht2 = 0;
int i;


for(i = 39; i >= 0; i = i - 1)  //read data block
  {

  while(DI__read(_,PA4) != 1);

  Scheduler__wait(_,40*us);

    if(DI__read(_,PA4) == 1)
     {
       if     (i >= 32) feucht1 |= 1 << (i - 32);
       else if(i >= 24) feucht2 |= 1 << (i - 24);
       else if(i >= 16) temp1   |= 1 << (i - 16);
       else if(i >= 8)  temp2   |= 1 << (i-8);
       else             sum     |= 1 << i;
     }

  while(DI__read(_,PA4) == 0);

  }



 ui16 Temperature = 0, RH = 0;

 RH = (feucht1 << 8) | feucht2;

 Temperature = (temp1 << 8) | temp2;




LCD__write(_,"%8.1f\n%8.1f   %5.0f",wf(RH/10.0f),wf(Temperature/10.0f),wf(sum));



Scheduler__wait(_,3*sec);
ini_OK = true;
}


  void CPE_App__Wetterstation_T_RH(){

   Resources__ExBoard_init(_,"");

   while(1){
     const ui32 dt = 1*ms;
    Scheduler__wait(_,dt);



   Temperature_Humidity(dt);


   }

  }
