void mspmsg_RAW_GPS_parse(struct S_MSP_RAW_GPS *target, struct S_MSG *msg) { dbg(DBG_MSP|DBG_VERBOSE,"Parsing MSP_RAW_GPS\n"); target->fix = *msg->data; target->num_sat = *(msg->data+1); target->lat = *reverse32(msg->data+2); target->lon = *reverse32(msg->data+6); target->alt = *reverse16(msg->data+10); target->speed = *reverse16(msg->data+12); target->ground_course = *reverse16(msg->data+14); }
void mspmsg_WP_parse(struct S_MSP_WP *target, struct S_MSG *msg) { dbg(DBG_MSP|DBG_VERBOSE,"Parsing MSP_WP\n"); target->wp_no = *msg->data; target->action = *(msg->data+1); target->lat = *reverse32(msg->data+2); target->lon = *reverse32(msg->data+6); target->alt_hold = *reverse32(msg->data+10); target->param1 = *reverse16(msg->data+14); target->param2 = *reverse16(msg->data+16); target->param3 = *reverse16(msg->data+18); target->flag = *reverse16(msg->data+20); }
bool TessdataManager::Init(const char *data_file_name, int debug_level) { int i; debug_level_ = debug_level; data_file_ = fopen(data_file_name, "rb"); if (data_file_ == NULL) { tprintf("Error opening data file %s\n", data_file_name); tprintf("Please make sure the TESSDATA_PREFIX environment variable is set " "to the parent directory of your \"tessdata\" directory.\n"); return false; } fread(&actual_tessdata_num_entries_, sizeof(inT32), 1, data_file_); swap_ = (actual_tessdata_num_entries_ > kMaxNumTessdataEntries); if (swap_) { actual_tessdata_num_entries_ = reverse32(actual_tessdata_num_entries_); } ASSERT_HOST(actual_tessdata_num_entries_ <= TESSDATA_NUM_ENTRIES); fread(offset_table_, sizeof(inT64), actual_tessdata_num_entries_, data_file_); if (swap_) { for (i = 0 ; i < actual_tessdata_num_entries_; ++i) { offset_table_[i] = reverse64(offset_table_[i]); } } if (debug_level_) { tprintf("TessdataManager loaded %d types of tesseract data files.\n", actual_tessdata_num_entries_); for (i = 0; i < actual_tessdata_num_entries_; ++i) { tprintf("Offset for type %d is %lld\n", i, offset_table_[i]); } } return true; }
DictionaryReader::DictionaryReader(IBitStream *bstr) : _bstr(bstr), _isSupported(true), _decoderLoaded(false) { _bstr->readSome(&_header, sizeof(LSDHeader)); if (strcmp("LingVo", _header.magic) != 0) throw NotLSDException(); if (_header.version == 0x142001 || _header.version == 0x152001) { _decoder.reset(new UserDictionaryDecoder()); } else if (_header.version == 0x141004) { _decoder.reset(new SystemDictionaryDecoder(false)); } else if (_header.version == 0x145001 || _header.version == 0x155001) { _decoder.reset(new AbbreviationDictionaryDecoder()); } else if (_header.version == 0x151005) { _decoder.reset(new SystemDictionaryDecoder(true)); } else { _isSupported = false; return; } uint8_t nameLen; bstr->readSome(&nameLen, 1); _name = readUnicodeString(bstr, nameLen, false); auto firstHeading = readUnicodeString(bstr, bstr->read(8), false); (void)firstHeading; auto lastHeading = readUnicodeString(bstr, bstr->read(8), false); (void)lastHeading; auto capitals = readUnicodeString(bstr, reverse32(bstr->read(32)), false); (void)capitals; uint16_t iconLen; bstr->readSome(&iconLen, 2); _icon.resize(iconLen); bstr->readSome(&_icon[0], iconLen); bstr->seek(bstr->tell() + 4); // checksum bstr->readSome(&_pagesEnd, 4); bstr->readSome(&_overlayData, 4); }
bool TessdataManager::Init(const char *data_file_name, int debug_level) { int i; debug_level_ = debug_level; data_file_ = fopen(data_file_name, "rb"); if (data_file_ == NULL) { // WILLUS MOD: Insert "if (debug_level_)" line below to avoid printing error msg. if (debug_level_) tprintf("Error opening data file %s\n", data_file_name); return false; } fread(&actual_tessdata_num_entries_, sizeof(inT32), 1, data_file_); bool swap = (actual_tessdata_num_entries_ > kMaxNumTessdataEntries); if (swap) { actual_tessdata_num_entries_ = reverse32(actual_tessdata_num_entries_); } ASSERT_HOST(actual_tessdata_num_entries_ <= TESSDATA_NUM_ENTRIES); fread(offset_table_, sizeof(inT64), actual_tessdata_num_entries_, data_file_); if (swap) { for (i = 0 ; i < actual_tessdata_num_entries_; ++i) { offset_table_[i] = reverse64(offset_table_[i]); } } if (debug_level_) { tprintf("TessdataManager loaded %d types of tesseract data files.\n", actual_tessdata_num_entries_); for (i = 0; i < actual_tessdata_num_entries_; ++i) { tprintf("Offset for type %d is %lld\n", i, offset_table_[i]); } } return true; }
static ERL_NIF_TERM tree_pair_dsha256_hash_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { ErlNifBinary bin1, bin2; if (!enif_inspect_binary(env, argv[0], &bin1) || bin1.size != 32 || !enif_inspect_binary(env, argv[1], &bin2) || bin2.size != 32) return enif_make_badarg(env); ERL_NIF_TERM ret; unsigned char in[64]; unsigned char *final_hash = enif_make_new_binary(env, 32, &ret); reverse32(&in[0], bin1.data); reverse32(&in[32], bin2.data); double_sha256(in, 64, final_hash); reverse32(final_hash, final_hash); return ret; }
/** * Transfer a 25bit packet to RTC6705 * This will just send it as a 32bit packet LSB meaning * extra 0's get truncated on RTC6705 end */ static void rtc6705Transfer(uint32_t command) { command = reverse32(command); ENABLE_RTC6705; spiTransferByte(RTC6705_SPI_INSTANCE, (command >> 24) & 0xFF); spiTransferByte(RTC6705_SPI_INSTANCE, (command >> 16) & 0xFF); spiTransferByte(RTC6705_SPI_INSTANCE, (command >> 8) & 0xFF); spiTransferByte(RTC6705_SPI_INSTANCE, (command >> 0) & 0xFF); DISABLE_RTC6705; }
static ERL_NIF_TERM scrypt_hash_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { ErlNifBinary bin; if (!enif_inspect_binary(env, argv[0], &bin) || bin.size != 80) return enif_make_badarg(env); ERL_NIF_TERM ret; unsigned char *final_hash = enif_make_new_binary(env, 32, &ret); scrypt_1024_1_1_256(bin.data, final_hash); reverse32(final_hash, final_hash); return ret; }
static ERL_NIF_TERM dsha256_hash_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { ErlNifBinary bin; if (!enif_inspect_binary(env, argv[0], &bin)) return enif_make_badarg(env); ERL_NIF_TERM ret; unsigned char *final_hash = enif_make_new_binary(env, 32, &ret); double_sha256(bin.data, bin.size, final_hash); reverse32(final_hash, final_hash); return ret; }
void mspmsg_MISC_parse(struct S_MSP_MISC *misc, struct S_MSG *msg) { dbg(DBG_MSP|DBG_VERBOSE,"Parsing MSP_MISC\n"); misc->intPowerTrigger1 = *reverse16(msg->data); misc->minthrottle = *reverse16(msg->data+2); misc->maxthrottle = *reverse16(msg->data+4); misc->mincommand = *reverse16(msg->data+6); misc->failsafe_throttle = *reverse16(msg->data+8); misc->arm = *reverse16(msg->data+10); misc->lifetime = *reverse32(msg->data+12); misc->mag_declination = *reverse16(msg->data+16); misc->vbatscale = *(msg->data+18); misc->vbatlevel_warn1 = *(msg->data+19); misc->vbatlevel_warn2 = *(msg->data+20); misc->vbatlevel_crit = *(msg->data+21); }
void mspmsg_SET_MISC_serialize(struct S_MSG *target, struct S_MSP_MISC *src) { dbg(DBG_MSP|DBG_VERBOSE,"Preparing MSP_SET_MISC\n"); target->message_id = MSP_SET_MISC; if (src==NULL) { target->size = 0; return; } memcpy(target->data,reverse16(&src->intPowerTrigger1),2); memcpy(target->data+2,reverse16(&src->minthrottle),2); memcpy(target->data+4,reverse16(&src->maxthrottle),2); memcpy(target->data+6,reverse16(&src->mincommand),2); memcpy(target->data+8,reverse16(&src->failsafe_throttle),2); memcpy(target->data+10,reverse16(&src->arm),2); memcpy(target->data+12,reverse32(&src->lifetime),4); memcpy(target->data+16,reverse16(&src->mag_declination),2); target->data[18] = src->vbatscale; target->data[19] = src->vbatlevel_warn1; target->data[20] = src->vbatlevel_warn2; target->data[21] = src->vbatlevel_crit; target->size = 22; }
void mspmsg_ALTITUDE_parse(struct S_MSP_ALTITUDE *target, struct S_MSG *msg) { dbg(DBG_MSP|DBG_VERBOSE,"Parsing MSP_ALTITUDE\n"); target->EstAlt = *reverse32(msg->data); target->vario = *reverse16(msg->data+4); }