fix for sim and pinMode

This commit is contained in:
Oliver Schneider 2015-03-29 22:31:42 +02:00
parent cddd33b8c9
commit 2b27635f73
5 changed files with 51 additions and 62 deletions

View File

@ -535,7 +535,7 @@ void RFControl::sendByCompressedTimings(int transmitterPin,unsigned long* bucket
void RFControl::sendByTimings(int transmitterPin, unsigned int *timings, unsigned int timings_size, unsigned int repeats) {
listenBeforeTalk();
pinMode(transmitterPin, OUTPUT);
hw_pinMode(transmitterPin, OUTPUT);
for(unsigned int i = 0; i < repeats; i++) {
hw_digitalWrite(transmitterPin, LOW);
int state = LOW;

View File

@ -1,3 +1,2 @@
#!/bin/sh
g++ -DRF_CONTROL_SIMULATE_ARDUINO=1 -Wall simulate.cpp ../RFControl.cpp -o simulate
g++ -DRF_CONTROL_SIMULATE_ARDUINO=1 -Wall simulate.cpp -o simulate

Binary file not shown.

View File

@ -1,8 +1,24 @@
#include <cstdio>
#include "../RFControl.h"
#include "../RFControl.cpp"
#include <sys/stat.h>
#include <sys/time.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
void (*interruptCallback)(void);
#define RF_CONTROL_VARDUINO
#define MAX_RECORDINGS 255
#include "../RFControl.h"
static char sate2string[6][255] = {
"STATUS_WAITING",
"STATUS_RECORDING_0",
"STATUS_RECORDING_1",
"STATUS_RECORDING_2",
"STATUS_RECORDING_3",
"STATUS_RECORDING_END"
};
void (*sim_interruptCallback)(void);
unsigned int sim_timings[] = {
@ -205,12 +221,12 @@ int main(int argc, const char* argv[])
{
sim_timings_pos = 0;
sim_timings_size = sizeof(sim_timings)/sizeof(unsigned int);
unsigned int pulse_length_divider = RFControl::getPulseLengthDivider();
RFControl::startReceiving(0);
while(sim_timings_pos < sim_timings_size) {
interruptCallback();
sim_interruptCallback();
if(RFControl::hasData()) {
unsigned int *timings;
@ -218,7 +234,8 @@ int main(int argc, const char* argv[])
RFControl::getRaw(&timings, &timings_size);
printf("result: \n");
for(size_t i=0; i < timings_size; i++) {
printf("%i ", timings[i]);
unsigned long timing = timings[i] * pulse_length_divider;
printf("%lu ", timing);
if((i+1)%16 == 0) {
printf("\n");
}
@ -227,11 +244,12 @@ int main(int argc, const char* argv[])
unsigned int buckets[8];
RFControl::compressTimings(buckets, timings, timings_size);
printf("compressed: ");
for(int i=0; i < 8; i++) {
printf("%i ", buckets[i]);
for(size_t i=0; i < 8; i++) {
unsigned long bucket = buckets[i] * pulse_length_divider;
printf("%lu ", bucket);
}
printf(" t: ");
for(int i=0; i < timings_size; i++) {
for(size_t i=0; i < timings_size; i++) {
printf("%i", timings[i]);
}
printf("\n");
@ -244,11 +262,11 @@ int main(int argc, const char* argv[])
}
void attachInterrupt(uint8_t, void (*ic)(void), int mode) {
interruptCallback = ic;
void hw_attachInterrupt(uint8_t, void (*ic)(void)) {
sim_interruptCallback = ic;
}
unsigned long micros(void) {
unsigned long hw_micros(void) {
static unsigned long duration = 0;
if(sim_timings_pos < sim_timings_size) {
duration += sim_timings[sim_timings_pos++];
@ -260,12 +278,22 @@ unsigned long micros(void) {
}
void pinMode(uint8_t, uint8_t){}
void digitalWrite(uint8_t, uint8_t){}
int digitalRead(uint8_t){return 0;}
int analogRead(uint8_t){return 0;}
void analogReference(uint8_t mode){}
void analogWrite(uint8_t, int){}
void delay(unsigned long){}
void delayMicroseconds(unsigned int us){}
void detachInterrupt(uint8_t){}
void hw_pinMode(uint8_t, uint8_t){}
void hw_digitalWrite(uint8_t, uint8_t){}
int hw_digitalRead(uint8_t){return 0;}
int hw_analogRead(uint8_t){return 0;}
void hw_analogReference(uint8_t mode){}
void hw_analogWrite(uint8_t, int){}
void hw_delayMicroseconds(unsigned int us){}
void hw_detachInterrupt(uint8_t){}
#define HIGH 0x1
#define LOW 0x0
#define INPUT 0x0
#define OUTPUT 0x1
#define CHANGE 1
#define FALLING 2
#define RISING 3
#include "../RFControl.cpp"

View File

@ -1,38 +0,0 @@
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <stdint.h>
#include <cstdio>
#define RF_CONTROL_SIMULATE_ARDUINO
#define HIGH 0x1
#define LOW 0x0
#define INPUT 0x0
#define OUTPUT 0x1
#define CHANGE 1
#define FALLING 2
#define RISING 3
void pinMode(uint8_t, uint8_t);
void digitalWrite(uint8_t, uint8_t);
int digitalRead(uint8_t);
int analogRead(uint8_t);
void analogReference(uint8_t mode);
void analogWrite(uint8_t, int);
unsigned long millis(void);
unsigned long micros(void);
void delay(unsigned long);
void delayMicroseconds(unsigned int us);
void attachInterrupt(uint8_t, void (*)(void), int mode);
void detachInterrupt(uint8_t);
static char sate2string[6][255] = {
"STATUS_WAITING",
"STATUS_RECORDING_0",
"STATUS_RECORDING_1",
"STATUS_RECORDING_2",
"STATUS_RECORDING_3",
"STATUS_RECORDING_END"
};