Skip to content

Commit

Permalink
Further C++ refactoring.
Browse files Browse the repository at this point in the history
  • Loading branch information
gkoh committed Sep 18, 2024
1 parent a1c22d5 commit a4a3d66
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 18 deletions.
20 changes: 8 additions & 12 deletions lib/furble/CameraList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
namespace Furble {

std::vector<std::unique_ptr<Furble::Camera>> CameraList::m_ConnectList;
static Preferences m_Prefs;
Preferences CameraList::m_Prefs;

/**
* Non-volatile storage index entry.
Expand All @@ -26,19 +26,20 @@ typedef struct {
Camera::Type type;
} index_entry_t;

static void fillSaveName(index_entry_t &entry, Camera *camera) {
void CameraList::fillSaveEntry(CameraList::index_entry_t &entry, Camera *camera) {
snprintf(entry.name, 16, "%08llX", (uint64_t)camera->getAddress());
entry.type = camera->getType();
}

static void save_index(std::vector<index_entry_t> &index) {
void CameraList::save_index(std::vector<CameraList::index_entry_t> &index) {
if (index.size() > 0) {
m_Prefs.putBytes(FURBLE_PREF_INDEX, index.data(), sizeof(index[0]) * index.size());
} else {
m_Prefs.remove(FURBLE_PREF_INDEX);
}
}

static std::vector<index_entry_t> load_index(void) {
std::vector<CameraList::index_entry_t> CameraList::load_index(void) {
std::vector<index_entry_t> index;

size_t bytes = m_Prefs.getBytesLength(FURBLE_PREF_INDEX);
Expand All @@ -58,7 +59,7 @@ static std::vector<index_entry_t> load_index(void) {
return index;
}

static void add_index(std::vector<index_entry_t> &index, index_entry_t &entry) {
void CameraList::add_index(std::vector<CameraList::index_entry_t> &index, index_entry_t &entry) {
bool exists = false;
for (size_t i = 0; i < index.size(); i++) {
ESP_LOGI(LOG_TAG, "[%d] %s : %s", i, index[i].name, entry.name);
Expand All @@ -81,8 +82,7 @@ void CameraList::save(Furble::Camera *camera) {
std::vector<index_entry_t> index = load_index();

index_entry_t entry = {0};
fillSaveName(entry, camera);
entry.type = camera->getType();
fillSaveEntry(entry, camera);

add_index(index, entry);

Expand All @@ -104,7 +104,7 @@ void CameraList::remove(Furble::Camera *camera) {
std::vector<index_entry_t> index = load_index();

index_entry_t entry = {0};
fillSaveName(entry, camera);
fillSaveEntry(entry, camera);

size_t i = 0;
for (i = 0; i < index.size(); i++) {
Expand Down Expand Up @@ -184,10 +184,6 @@ Furble::Camera *CameraList::get(size_t n) {
return m_ConnectList[n].get();
}

Furble::Camera *CameraList::back(void) {
return m_ConnectList.back().get();
}

bool CameraList::match(NimBLEAdvertisedDevice *pDevice) {
if (Fujifilm::matches(pDevice)) {
m_ConnectList.push_back(std::unique_ptr<Furble::Camera>(new Furble::Fujifilm(pDevice)));
Expand Down
18 changes: 13 additions & 5 deletions lib/furble/CameraList.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#ifndef CAMERALIST_H
#define CAMERALIST_H

#include <Preferences.h>
#include <memory>

#include "Camera.h"
Expand Down Expand Up @@ -58,16 +59,23 @@ class CameraList {
*/
static Furble::Camera *get(size_t n);

/**
* Retrieve last entry.
*/
static Furble::Camera *back(void);

private:
typedef struct {
char name[16];
Camera::Type type;
} index_entry_t;

static void fillSaveEntry(index_entry_t &entry, Camera *camera);
static std::vector<index_entry_t> load_index(void);
static void save_index(std::vector<index_entry_t> &index);
static void add_index(std::vector<index_entry_t> &index, index_entry_t &entry);

/**
* List of connectable devices.
*/
static std::vector<std::unique_ptr<Furble::Camera>> m_ConnectList;

static Preferences m_Prefs;
};
} // namespace Furble

Expand Down
2 changes: 1 addition & 1 deletion lib/furble/MobileDevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class MobileDevice: public Camera {
void updateGeoData(const gps_t &gps, const timesync_t &timesync) override;
void disconnect(void) override;

bool isConnected(void);
bool isConnected(void) override;

private:
typedef struct _mobile_device_t {
Expand Down

0 comments on commit a4a3d66

Please sign in to comment.