Go Down

Topic: Issue including EEPROM.h function calls within class (Read 2178 times) previous topic - next topic

Chrisms

Hi guys, I've been searching a lot and can't seem to get a solid answer on this. I'm trying to use EEPROM.read() and write() in a class. Can someone tell me where I'm going so terribly wrong? Thanks.

Code: [Select]
#ifndef _PHONEMEMORY_H_
#define _PHONEMEMORY_H_

#include <Arduino.h>
#include <string.h>
#include <EEPROM.h>


class PhoneMemory
{
  public:
   PhoneMemory();
   int addPhone(char *number);
};

#endif


Code: [Select]
#include "PhoneMemory.h"

int PhoneMemory::addPhone(char *number)
{
EEPROM.read(1);
}


Error:
Code: [Select]
PhoneMemory.cpp: In member function 'int PhoneMemory::addPhone(char*)':
PhoneMemory.cpp:12: error: 'EEPROM' was not declared in this scope


I appreciate any help.

Thanks.

PaulS

What does your sketch look like? You can't hide the fact that you need EEPROM.h from the sketch.

Chrisms

The main .ino includes looks a like this:

Code: [Select]
#include <SoftwareSerial.h>       //Include the NewSoftSerial library to send serial commands to the cellular module.
#include <string.h>               //Used for string manipulations
#include "CircularBuffer.h"
#include "PhoneMemory.h"
#include <EEPROM.h>


I've tried it with both EEPROM.h being included and not included in the .ino. I find it weird that Serial will work just fine in the class but EEPROM won't.

Thanks for your help.


Bob Applegate

Has anyone resolved this?  I'm having exactly the same problem.

pYro_65

This code works under IDE 1.0.4

make sure you have "#include <EEPROM.h>" in the sketch ( not just library ).

Chrisms


Has anyone resolved this?  I'm having exactly the same problem.



I have no idea if what Pyro said is true, if it was fixed in a new IDE version. In case it isn't though, here is the work around I used:

Code: [Select]
uint8_t eepromRead(int address)
{
  return eeprom_read_byte((unsigned char *) address);
}

void eepromWrite(int address, uint8_t value)
{
  eeprom_write_byte((unsigned char *) address, value);
}


You just use those functions to read/write to the EEPROM if it won't work right any other way.

Hope that helps!

Go Up