kopia lustrzana https://github.com/markondej/fm_transmitter
Use of native STL vector data pointer
rodzic
c735b6f834
commit
302e6edc59
|
@ -52,7 +52,7 @@ Sample::Sample(uint8_t *data, uint16_t channels, uint16_t bitsPerChannel)
|
|||
delete[] channelValues;
|
||||
}
|
||||
|
||||
float Sample::getMonoValue()
|
||||
float Sample::getMonoValue() const
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
@ -65,8 +65,8 @@ PreEmphasis::PreEmphasis(uint32_t sampleRate)
|
|||
|
||||
float PreEmphasis::filter(float value)
|
||||
{
|
||||
prevValue = value;
|
||||
value = value + (prevValue - value) / (1.f - timeConst);
|
||||
prevValue = value;
|
||||
return value;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -40,7 +40,7 @@ class Sample
|
|||
{
|
||||
public:
|
||||
Sample(uint8_t *data, uint16_t channels, uint16_t bitsPerChannel);
|
||||
float getMonoValue();
|
||||
float getMonoValue() const;
|
||||
protected:
|
||||
float value;
|
||||
};
|
||||
|
|
|
@ -150,12 +150,12 @@ Transmitter &Transmitter::getInstance()
|
|||
return instance;
|
||||
}
|
||||
|
||||
uint32_t Transmitter::getPeripheralsVirtBaseAddress()
|
||||
uint32_t Transmitter::getPeripheralsVirtBaseAddress() const
|
||||
{
|
||||
return (bcm_host_get_peripheral_size() == BCM2838_PERI_VIRT_BASE) ? BCM2838_PERI_VIRT_BASE : bcm_host_get_peripheral_address();
|
||||
}
|
||||
|
||||
uint32_t Transmitter::getPeripheralsSize()
|
||||
uint32_t Transmitter::getPeripheralsSize() const
|
||||
{
|
||||
uint32_t size = bcm_host_get_peripheral_size();
|
||||
if (size == BCM2838_PERI_VIRT_BASE) {
|
||||
|
@ -164,20 +164,22 @@ uint32_t Transmitter::getPeripheralsSize()
|
|||
return size;
|
||||
}
|
||||
|
||||
float Transmitter::getSourceFreq()
|
||||
float Transmitter::getSourceFreq() const
|
||||
{
|
||||
return (getPeripheralsVirtBaseAddress() == BCM2838_PERI_VIRT_BASE) ? BCM2838_PLLD_FREQ : BCM2835_PLLD_FREQ;
|
||||
}
|
||||
|
||||
uint32_t Transmitter::getPeripheralPhysAddress(volatile void *object) {
|
||||
uint32_t Transmitter::getPeripheralPhysAddress(volatile void *object) const
|
||||
{
|
||||
return PERIPHERALS_PHYS_BASE + (reinterpret_cast<uint32_t>(object) - reinterpret_cast<uint32_t>(peripherals));
|
||||
}
|
||||
|
||||
uint32_t Transmitter::getPeripheralVirtAddress(uint32_t offset) {
|
||||
uint32_t Transmitter::getPeripheralVirtAddress(uint32_t offset) const
|
||||
{
|
||||
return reinterpret_cast<uint32_t>(peripherals) + offset;
|
||||
}
|
||||
|
||||
uint32_t Transmitter::getMemoryPhysAddress(AllocatedMemory &memory, volatile void *object)
|
||||
uint32_t Transmitter::getMemoryPhysAddress(AllocatedMemory &memory, volatile void *object) const
|
||||
{
|
||||
return memory.physicalBase + (reinterpret_cast<uint32_t>(object) - memory.virtualBase);
|
||||
}
|
||||
|
|
|
@ -55,12 +55,12 @@ class Transmitter
|
|||
void stop();
|
||||
private:
|
||||
Transmitter();
|
||||
uint32_t getPeripheralsVirtBaseAddress();
|
||||
uint32_t getPeripheralsSize();
|
||||
float getSourceFreq();
|
||||
uint32_t getPeripheralPhysAddress(volatile void *object);
|
||||
static uint32_t getPeripheralVirtAddress(uint32_t offset);
|
||||
uint32_t getMemoryPhysAddress(AllocatedMemory &memory, volatile void *object);
|
||||
uint32_t getPeripheralsVirtBaseAddress() const;
|
||||
uint32_t getPeripheralsSize() const;
|
||||
float getSourceFreq() const;
|
||||
uint32_t getPeripheralPhysAddress(volatile void *object) const;
|
||||
static uint32_t getPeripheralVirtAddress(uint32_t offset) const;
|
||||
uint32_t getMemoryPhysAddress(AllocatedMemory &memory, volatile void *object) const;
|
||||
AllocatedMemory allocateMemory(uint32_t size);
|
||||
void freeMemory(AllocatedMemory &memory);
|
||||
volatile PWMRegisters *initPwmController();
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
WaveReader::WaveReader(std::string filename, bool &continueFlag) :
|
||||
WaveReader::WaveReader(const std::string &filename, bool &continueFlag) :
|
||||
filename(filename), headerOffset(0), currentDataOffset(0)
|
||||
{
|
||||
if (!filename.empty()) {
|
||||
|
@ -126,7 +126,7 @@ std::vector<uint8_t> WaveReader::readData(uint32_t bytesToRead, bool headerBytes
|
|||
if (!continueFlag) {
|
||||
throw std::runtime_error("Cannot obtain header, program interrupted");
|
||||
}
|
||||
std::memcpy(&(reinterpret_cast<uint8_t *>(&header))[headerOffset], &data[0], bytesRead);
|
||||
std::memcpy(&(reinterpret_cast<uint8_t *>(&header))[headerOffset], data.data(), bytesRead);
|
||||
headerOffset += bytesRead;
|
||||
} else {
|
||||
currentDataOffset += bytesRead;
|
||||
|
@ -144,7 +144,7 @@ std::vector<Sample> WaveReader::getSamples(uint32_t quantity, bool &continueFlag
|
|||
quantity = bytesToRead / bytesPerSample;
|
||||
}
|
||||
|
||||
std::vector<uint8_t> data = readData(bytesToRead, false, continueFlag);
|
||||
std::vector<uint8_t> data(std::move(readData(bytesToRead, false, continueFlag)));
|
||||
if (data.size() < bytesToRead) {
|
||||
quantity = data.size() / bytesPerSample;
|
||||
}
|
||||
|
@ -166,12 +166,12 @@ bool WaveReader::setSampleOffset(uint32_t offset) {
|
|||
return true;
|
||||
}
|
||||
|
||||
std::string WaveReader::getFilename()
|
||||
std::string WaveReader::getFilename() const
|
||||
{
|
||||
return fileDescriptor != STDIN_FILENO ? filename : "STDIN";
|
||||
}
|
||||
|
||||
PCMWaveHeader WaveReader::getHeader()
|
||||
PCMWaveHeader WaveReader::getHeader() const
|
||||
{
|
||||
return header;
|
||||
}
|
||||
|
|
|
@ -42,13 +42,13 @@
|
|||
class WaveReader
|
||||
{
|
||||
public:
|
||||
WaveReader(std::string filename, bool &continueFlag);
|
||||
WaveReader(const std::string &filename, bool &continueFlag);
|
||||
virtual ~WaveReader();
|
||||
WaveReader(const WaveReader &) = delete;
|
||||
WaveReader(WaveReader &&) = delete;
|
||||
WaveReader &operator=(const WaveReader &) = delete;
|
||||
std::string getFilename();
|
||||
PCMWaveHeader getHeader();
|
||||
std::string getFilename() const;
|
||||
PCMWaveHeader getHeader() const;
|
||||
std::vector<Sample> getSamples(uint32_t quantity, bool &continueFlag);
|
||||
bool setSampleOffset(uint32_t offset);
|
||||
private:
|
||||
|
|
Ładowanie…
Reference in New Issue