1
0
mirror of https://github.com/skot/ESP-Miner.git synced 2025-03-19 14:22:04 +01:00
2024-08-09 23:41:08 +02:00

110 lines
2.4 KiB
C

#ifndef GLOBAL_STATE_H_
#define GLOBAL_STATE_H_
#include <stdbool.h>
#include <stdint.h>
#include "asic_task.h"
#include "bm1368.h"
#include "bm1366.h"
#include "bm1397.h"
#include "common.h"
#include "power_management_task.h"
#include "serial.h"
#include "stratum_api.h"
#include "work_queue.h"
#define STRATUM_USER CONFIG_STRATUM_USER
#define HISTORY_LENGTH 100
#define DIFF_STRING_SIZE 10
typedef enum
{
DEVICE_UNKNOWN = -1,
DEVICE_MAX,
DEVICE_ULTRA,
DEVICE_SUPRA,
} DeviceModel;
typedef enum
{
ASIC_UNKNOWN = -1,
ASIC_BM1397,
ASIC_BM1366,
ASIC_BM1368,
} AsicModel;
typedef struct
{
uint8_t (*init_fn)(uint64_t, uint16_t);
task_result * (*receive_result_fn)(void * GLOBAL_STATE);
int (*set_max_baud_fn)(void);
void (*set_difficulty_mask_fn)(int);
void (*send_work_fn)(void * GLOBAL_STATE, bm_job * next_bm_job);
} AsicFunctions;
typedef struct
{
double duration_start;
int historical_hashrate_rolling_index;
double historical_hashrate_time_stamps[HISTORY_LENGTH];
double historical_hashrate[HISTORY_LENGTH];
int historical_hashrate_init;
double current_hashrate;
int64_t start_time;
uint64_t shares_accepted;
uint64_t shares_rejected;
int screen_page;
char oled_buf[20];
uint64_t best_nonce_diff;
char best_diff_string[DIFF_STRING_SIZE];
uint64_t best_session_nonce_diff;
char best_session_diff_string[DIFF_STRING_SIZE];
bool FOUND_BLOCK;
bool startup_done;
char ssid[32];
char wifi_status[20];
char * pool_url;
uint16_t pool_port;
uint16_t overheat_mode;
uint32_t lastClockSync;
} SystemModule;
typedef struct
{
DeviceModel device_model;
char * device_model_str;
int board_version;
AsicModel asic_model;
char * asic_model_str;
uint16_t asic_count;
uint16_t voltage_domain;
AsicFunctions ASIC_functions;
double asic_job_frequency_ms;
uint32_t initial_ASIC_difficulty;
work_queue stratum_queue;
work_queue ASIC_jobs_queue;
bm1397Module BM1397_MODULE;
SystemModule SYSTEM_MODULE;
AsicTaskModule ASIC_TASK_MODULE;
PowerManagementModule POWER_MANAGEMENT_MODULE;
char * extranonce_str;
int extranonce_2_len;
int abandon_work;
uint8_t * valid_jobs;
pthread_mutex_t valid_jobs_lock;
uint32_t stratum_difficulty;
uint32_t version_mask;
int sock;
} GlobalState;
#endif /* GLOBAL_STATE_H_ */