#ifndef __BAMBU_NETWORKING_HPP__ #define __BAMBU_NETWORKING_HPP__ #include #include #include extern std::string g_log_folder; extern std::string g_log_start_time; namespace BBL { #define BAMBU_NETWORK_SUCCESS 0 #define BAMBU_NETWORK_ERR_INVALID_HANDLE -1 #define BAMBU_NETWORK_ERR_CONNECT_FAILED -2 #define BAMBU_NETWORK_ERR_DISCONNECT_FAILED -3 #define BAMBU_NETWORK_ERR_SEND_MSG_FAILED -4 #define BAMBU_NETWORK_ERR_BIND_FAILED -5 #define BAMBU_NETWORK_ERR_UNBIND_FAILED -6 #define BAMBU_NETWORK_ERR_REQUEST_SETTING_FAILED -7 #define BAMBU_NETWORK_ERR_PUT_SETTING_FAILED -8 #define BAMBU_NETWORK_ERR_GET_SETTING_LIST_FAILED -9 #define BAMBU_NETWORK_ERR_DEL_SETTING_FAILED -10 #define BAMBU_NETWORK_ERR_GET_USER_PRINTINFO_FAILED -11 #define BAMBU_NETWORK_ERR_QUERY_BIND_INFO_FAILED -12 #define BAMBU_NETWORK_ERR_MODIFY_PRINTER_NAME_FAILED -13 #define BAMBU_NETWORK_ERR_FILE_NOT_EXIST -14 #define BAMBU_NETWORK_ERR_FILE_OVER_SIZE -15 #define BAMBU_NETWORK_ERR_CHECK_MD5_FAILED -16 #define BAMBU_NETWORK_ERR_TIMEOUT -17 #define BAMBU_NETWORK_ERR_CANCELED -18 #define BAMBU_NETWORK_ERR_INVALID_RESULT -19 #define BAMBU_NETWORK_ERR_FTP_UPLOAD_FAILED -20 #define BAMBU_NETWORK_ERR_GET_RATING_ID_FAILED -21 #define BAMBU_NETWORK_ERR_OPEN_FILE_FAILED -22 #define BAMBU_NETWORK_ERR_PARSE_CONFIG_FAILED -23 #define BAMBU_NETWORK_ERR_NO_CORRESPONDING_BUCKET -24 #define BAMBU_NETWORK_ERR_GET_INSTANCE_ID_FAILED -25 //bind error #define BAMBU_NETWORK_ERR_BIND_CREATE_SOCKET_FAILED -1010 //failed to create socket #define BAMBU_NETWORK_ERR_BIND_SOCKET_CONNECT_FAILED -1020 //failed to socket connect #define BAMBU_NETWORK_ERR_BIND_PUBLISH_LOGIN_REQUEST -1030 //failed to publish login request #define BAMBU_NETWORK_ERR_BIND_GET_PRINTER_TICKET_TIMEOUT -1040 //timeout to get ticket from printer #define BAMBU_NETWORK_ERR_BIND_GET_CLOUD_TICKET_TIMEOUT -1050 //timeout to get ticket from cloud server #define BAMBU_NETWORK_ERR_BIND_POST_TICKET_TO_CLOUD_FAILED -1060 //failed to post ticket to cloud server #define BAMBU_NETWORK_ERR_BIND_PARSE_LOGIN_REPORT_FAILED -1070 //failed to parse login report reason no error code #define BAMBU_NETWORK_ERR_BIND_ECODE_LOGIN_REPORT_FAILED -1080 //failed to parse login report reason has error code #define BAMBU_NETWORK_ERR_BIND_RECEIVE_LOGIN_REPORT_TIMEOUT -1090 //timeout to receive login report //start_local_print_with_record error #define BAMBU_NETWORK_ERR_PRINT_WR_REQUEST_PROJECT_ID_FAILED -2010 //failed to request project id #define BAMBU_NETWORK_ERR_PRINT_WR_CHECK_MD5_FAILED -2020 //failed to check md5 for upload 3mf to oss #define BAMBU_NETWORK_ERR_PRINT_WR_UPLOAD_3MF_CONFIG_TO_OSS_FAILED -2030 //failed to upload 3mf config to oss #define BAMBU_NETWORK_ERR_PRINT_WR_FILE_OVER_SIZE -2040 //the size of the uploaded file cannot exceed 1 GB #define BAMBU_NETWORK_ERR_PRINT_WR_PUT_NOTIFICATION_FAILED -2050 //timeout to get notification #define BAMBU_NETWORK_ERR_PRINT_WR_GET_NOTIFICATION_TIMEOUT -2060 //timeout to get notification #define BAMBU_NETWORK_ERR_PRINT_WR_GET_NOTIFICATION_FAILED -2070 //failed to get notification #define BAMBU_NETWORK_ERR_PRINT_WR_PATCH_PROJECT_FAILED -2080 //failed to patch project #define BAMBU_NETWORK_ERR_PRINT_WR_GET_MY_SETTING_FAILED -2090 //failed to get my setting #define BAMBU_NETWORK_ERR_PRINT_WR_FILE_NOT_EXIST -2100 //3mf file is not exists #define BAMBU_NETWORK_ERR_PRINT_WR_UPLOAD_3MF_TO_OSS_FAILED -2110 //failed to upload 3mf to oss #define BAMBU_NETWORK_ERR_PRINT_WR_POST_TASK_FAILED -2120 //failed to post task #define BAMBU_NETWORK_ERR_PRINT_WR_UPLOAD_FTP_FAILED -2130 //failed to upload to ftp #define BAMBU_NETWORK_ERR_PRINT_WR_GET_USER_UPLOAD_FAILED -2140 //failed to get_user_upload //start_print error #define BAMBU_NETWORK_ERR_PRINT_SP_REQUEST_PROJECT_ID_FAILED -3010 //failed to request project id #define BAMBU_NETWORK_ERR_PRINT_SP_CHECK_MD5_FAILED -3020 //failed to check md5 for upload 3mf to oss #define BAMBU_NETWORK_ERR_PRINT_SP_UPLOAD_3MF_CONFIG_TO_OSS_FAILED -3030 //failed to upload 3mf config to oss #define BAMBU_NETWORK_ERR_PRINT_SP_PUT_NOTIFICATION_FAILED -3040 //failed to put notification #define BAMBU_NETWORK_ERR_PRINT_SP_GET_NOTIFICATION_TIMEOUT -3050 //timeout to get notification #define BAMBU_NETWORK_ERR_PRINT_SP_GET_NOTIFICATION_FAILED -3060 //failed to get notification #define BAMBU_NETWORK_ERR_PRINT_SP_FILE_NOT_EXIST -3070 //3mf file is not exists #define BAMBU_NETWORK_ERR_PRINT_SP_GET_USER_UPLOAD_FAILED -3080 //failed to get_user_upload #define BAMBU_NETWORK_ERR_PRINT_SP_FILE_OVER_SIZE -3090 //the size of the uploaded file cannot exceed 1 GB #define BAMBU_NETWORK_ERR_PRINT_SP_UPLOAD_3MF_TO_OSS_FAILED -3100 //failed to upload 3mf to oss #define BAMBU_NETWORK_ERR_PRINT_SP_PATCH_PROJECT_FAILED -3110 //failed to patch project #define BAMBU_NETWORK_ERR_PRINT_SP_POST_TASK_FAILED -3120 //failed to post task #define BAMBU_NETWORK_ERR_PRINT_SP_WAIT_PRINTER_FAILED -3130 //failed to wait the ack from printer //start_local_print error #define BAMBU_NETWORK_ERR_PRINT_LP_FILE_OVER_SIZE -4010 //the size of the uploaded file cannot exceed 1 GB #define BAMBU_NETWORK_ERR_PRINT_LP_UPLOAD_FTP_FAILED -4020 //failed to upload ftp #define BAMBU_NETWORK_ERR_PRINT_LP_PUBLISH_MSG_FAILED -4030 //failed to send mqtt message to device //start_send_gcode_to_sdcard error #define BAMBU_NETWORK_ERR_PRINT_SG_UPLOAD_FTP_FAILED -5010 //failed to upload ftp //connection to printer failed #define BAMBU_NETWORK_ERR_CONNECTION_TO_PRINTER_FAILED -6010 //Connection to printer failed #define BAMBU_NETWORK_ERR_CONNECTION_TO_SERVER_FAILED -6020 //Connection to server failed #define BAMBU_NETWORK_LIBRARY "bambu_networking" #define BAMBU_NETWORK_AGENT_NAME "bambu_network_agent" #define BAMBU_NETWORK_AGENT_VERSION "01.09.02.05" //iot preset type strings #define IOT_PRINTER_TYPE_STRING "printer" #define IOT_FILAMENT_STRING "filament" #define IOT_PRINT_TYPE_STRING "print" #define IOT_JSON_KEY_VERSION "version" #define IOT_JSON_KEY_NAME "name" #define IOT_JSON_KEY_TYPE "type" #define IOT_JSON_KEY_UPDATE_TIME "update_time" #define IOT_JSON_KEY_UPDATED_TIME "updated_time" #define IOT_JSON_KEY_BASE_ID "base_id" #define IOT_JSON_KEY_SETTING_ID "setting_id" #define IOT_JSON_KEY_FILAMENT_ID "filament_id" #define IOT_JSON_KEY_USER_ID "user_id" // user callbacks typedef std::function OnUserLoginFn; // printer callbacks typedef std::function OnPrinterConnectedFn; typedef std::function OnLocalConnectedFn; typedef std::function OnServerConnectedFn; typedef std::function OnMessageFn; // http callbacks typedef std::function OnHttpErrorFn; typedef std::function GetCountryCodeFn; typedef std::function GetSubscribeFailureFn; // print callbacks typedef std::function OnUpdateStatusFn; typedef std::function WasCancelledFn; typedef std::function OnWaitFn; // local callbacks typedef std::function OnMsgArrivedFn; // queue call to main thread typedef std::function)> QueueOnMainFn; typedef std::function ProgressFn; typedef std::function LoginFn; typedef std::function ResultFn; typedef std::function CancelFn; typedef std::function info)> CheckFn; enum SendingPrintJobStage { PrintingStageCreate = 0, PrintingStageUpload = 1, PrintingStageWaiting = 2, PrintingStageSending = 3, PrintingStageRecord = 4, PrintingStageWaitPrinter = 5, PrintingStageFinished = 6, PrintingStageERROR = 7, PrintingStageLimit = 8, }; enum PublishingStage { PublishingCreate = 0, PublishingUpload = 1, PublishingWaiting = 2, PublishingJumpUrl = 3, }; enum BindJobStage { LoginStageConnect = 0, LoginStageLogin = 1, LoginStageWaitForLogin = 2, LoginStageGetIdentify = 3, LoginStageWaitAuth = 4, LoginStageFinished = 5, }; enum ConnectStatus { ConnectStatusOk = 0, ConnectStatusFailed = 1, ConnectStatusLost = 2, }; /* print job*/ struct PrintParams { /* basic info */ std::string dev_id; std::string task_name; std::string project_name; std::string preset_name; std::string filename; std::string config_filename; int plate_index; std::string ftp_folder; std::string ftp_file; std::string ftp_file_md5; std::string ams_mapping; std::string ams_mapping_info; std::string connection_type; std::string comments; int origin_profile_id = 0; int stl_design_id = 0; std::string origin_model_id; std::string print_type; std::string dst_file; std::string dev_name; /* access options */ std::string dev_ip; bool use_ssl_for_ftp; bool use_ssl_for_mqtt; std::string username; std::string password; /*user options */ bool task_bed_leveling; /* bed leveling of task */ bool task_flow_cali; /* flow calibration of task */ bool task_vibration_cali; /* vibration calibration of task */ bool task_layer_inspect; /* first layer inspection of task */ bool task_record_timelapse; /* record timelapse of task */ bool task_use_ams; std::string task_bed_type; std::string extra_options; }; struct TaskQueryParams { std::string dev_id; int status = 0; int offset = 0; int limit = 20; }; struct PublishParams { std::string project_name; std::string project_3mf_file; std::string preset_name; std::string project_model_id; std::string design_id; std::string config_filename; }; struct CertificateInformation { std::string issuer; std::string sub_name; std::string start_date; std::string end_date; std::string serial_number; }; } #endif