Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
RAWSIGNAL_MULTI restored my 1.0 modifications on 1.2 structure for ra…
…wsignal details printing:

Total time, pulses,net pulses spikes
  • Loading branch information
rinie committed Jul 19, 2011
1 parent fa3f470 commit 9ecc86c
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 69 deletions.
10 changes: 9 additions & 1 deletion Event_processing.pde
Expand Up @@ -51,8 +51,16 @@ boolean ProcessEvent(unsigned long IncommingEvent, byte Direction, byte Port, un
// dan de pulsenreeks weergeven en er verder niets mee doen
if(RawsignalGet)
{
#ifndef RAWSIGNAL_MULTI
PrintRawSignal(0);
RawsignalGet=false;
#else
for(int RawSignalStart = 0; RawSignal[RawSignalStart] != 0; RawSignalStart = RawSignalStart + RawSignal[RawSignalStart] + 1) {
PrintRawSignal(RawSignalStart);
}
#endif
#ifndef RAWSIGNAL_TOGGLE // RKR repeat until toggle off
RawsignalGet=false;
#endif
return true;
}

Expand Down
86 changes: 60 additions & 26 deletions Nodo_Due.pde
Expand Up @@ -355,7 +355,8 @@ PROGMEM prog_uint16_t DLSDate[]={2831,2730,2528,3127,3026,2925,2730,2629,2528,31
#define MIN_PULSE_LENGTH 100 // pulsen korter dan deze tijd uSec. worden als stoorpulsen beschouwd.
#define MIN_RAW_PULSES 16 // =8 bits. Minimaal aantal ontvangen bits*2 alvorens cpu tijd wordt besteed aan decodering, etc. Zet zo hoog mogelijk om CPU-tijd te sparen en minder 'onzin' te ontvangen.
#define SHARP_TIME 500 // tijd in milliseconden dat de nodo gefocust moet blijven luisteren naar één dezelfde poort na binnenkomst van een signaal

#define RAWSIGNAL_TOGGLE // RKR instead of just one rawsignal, repeat until you send RawSignalGet; again...
#define RAWSIGNAL_MULTI // RKR Rawsignal can be multiple signals: <count> <timinig data> <count> <timing data> etc...
//****************************************************************************************************************************************

struct Settings
Expand Down Expand Up @@ -396,7 +397,7 @@ byte QueuePort[EVENT_QUEUE_MAX];
byte QueuePos;

// Overige globals
boolean Simulate,RawsignalGet;
boolean Simulate,RawsignalGet=false;
boolean WiredInputStatus[4],WiredOutputStatus[4]; // Wired variabelen
unsigned int RawSignal[RAW_BUFFER_SIZE+2]; // Tabel met de gemeten pulsen in microseconden. eerste waarde is het aantal bits*2
int BusyNodo; // in deze variabele de status van het event 'Busy' van de betreffende units 1 t/m 15. bit-1 = unit-1
Expand Down Expand Up @@ -517,6 +518,9 @@ void loop()
{
if(FetchSignal(IR_ReceiveDataPin,LOW,S.AnalyseTimeOut, 0))// Als het een duidelijk IR signaal was
{
#ifdef RAWSIGNAL_MULTI
RawSignal[RawSignal[0] + 1] = 0; // next count 0
#endif
Content=AnalyzeRawSignal(); // Bereken uit de tabel met de pulstijden de 32-bit code.
if(Content)// als AnalyzeRawSignal een event heeft opgeleverd
{
Expand All @@ -533,30 +537,60 @@ void loop()
}
}while(StaySharpTimer>millis());


// RF: *************** kijk of er data start op RF en genereer een event als er een code ontvangen is **********************
do// met StaySharp wordt focus gezet op luisteren naar RF, doordat andere input niet wordt opgepikt
{
if((*portInputRegister(RFport)&RFbit)==RFbit)// Kijk if er iets op de RF poort binnenkomt. (Pin=HOOG als signaal in de ether).
{
if(FetchSignal(RF_ReceiveDataPin,HIGH,SIGNAL_TIMEOUT_RF, 0))// Als het een duidelijk RF signaal was
{
Content=AnalyzeRawSignal(); // Bereken uit de tabel met de pulstijden de 32-bit code.
if(Content)// als AnalyzeRawSignal een event heeft opgeleverd
{
StaySharpTimer=millis()+SHARP_TIME;
if(Content==Checksum && (millis()>SupressRepeatTimer || Content!=ContentPrevious))// tweede maal ontvangen als checksum
{
SupressRepeatTimer=millis()+ENDSIGNAL_TIME; // zodat herhalingen niet opnieuw opgepikt worden
ProcessEvent(Content,VALUE_DIRECTION_INPUT,VALUE_SOURCE_RF,0,0); // verwerk binnengekomen event.
ContentPrevious=Content;
}
Checksum=Content;
}
}
}
}while(millis()<StaySharpTimer);

if (!RawsignalGet) {
// RF: *************** kijk of er data start op RF en genereer een event als er een code ontvangen is **********************
do// met StaySharp wordt focus gezet op luisteren naar RF, doordat andere input niet wordt opgepikt
{
if((*portInputRegister(RFport)&RFbit)==RFbit)// Kijk if er iets op de RF poort binnenkomt. (Pin=HOOG als signaal in de ether).
{
if(FetchSignal(RF_ReceiveDataPin,HIGH,SIGNAL_TIMEOUT_RF, 0))// Als het een duidelijk RF signaal was
{
#ifdef RAWSIGNAL_MULTI
RawSignal[RawSignal[0] + 1] = 0; // next count 0
#endif
Content=AnalyzeRawSignal(); // Bereken uit de tabel met de pulstijden de 32-bit code.
if(Content)// als AnalyzeRawSignal een event heeft opgeleverd
{
StaySharpTimer=millis()+SHARP_TIME;
if(Content==Checksum && (millis()>SupressRepeatTimer || Content!=ContentPrevious))// tweede maal ontvangen als checksum
{
SupressRepeatTimer=millis()+ENDSIGNAL_TIME; // zodat herhalingen niet opnieuw opgepikt worden
ProcessEvent(Content,VALUE_DIRECTION_INPUT,VALUE_SOURCE_RF,0,0); // verwerk binnengekomen event.
ContentPrevious=Content;
}
Checksum=Content;
}
}
}
}while(millis()<StaySharpTimer);
}
else { // RKR RawsignalGet measure repetitions
int RawSignalStart = 0;

// RF: *************** kijk of er data start op RF en genereer een event als er een code ontvangen is **********************
do// met StaySharp wordt focus gezet op luisteren naar RF, doordat andere input niet wordt opgepikt
{
while((*portInputRegister(RFport)&RFbit)==RFbit)// Kijk if er iets op de RF poort binnenkomt. (Pin=HOOG als signaal in de ether).
{
if(FetchSignal(RF_ReceiveDataPin,HIGH,SIGNAL_TIMEOUT_RF, RawSignalStart))// Als het een duidelijk RF signaal was
{
RawSignalStart = RawSignalStart + RawSignal[RawSignalStart] + 1;
StaySharpTimer=millis()+SHARP_TIME;
}
else {
break;
}
}
} while(millis()<StaySharpTimer);
RawSignal[RawSignalStart]=0; // next count 0
if (RawSignalStart > 0){
Content=AnalyzeRawSignal(); // Bereken uit de tabel met de pulstijden de 32-bit code.
if(Content)// als AnalyzeRawSignal een event heeft opgeleverd
{
ProcessEvent(Content,VALUE_DIRECTION_INPUT,VALUE_SOURCE_RF,0,0); // verwerk binnengekomen event.
}
}
}
// 2: niet tijdkritische processen die periodiek uitgevoerd moeten worden
if(LoopIntervalTimer_2<millis()) // lange interval
{
Expand Down
4 changes: 2 additions & 2 deletions Print.pde
Expand Up @@ -532,8 +532,8 @@ void PrintText(prog_char* text)
do
{
buffer[x]=pgm_read_byte_near(text+x);
}while(buffer[x++]!=0);

}while(x < 60 && (buffer[x++]!=0)); // RKR prevent overflow
buffer[59] = 0;
Serial.print(buffer);
}

0 comments on commit 9ecc86c

Please sign in to comment.