Example #1
0
void FileEntry::Print(const StringRef& indent) const
{
	auto opStr = ConvertToString(mOperations);
	auto perStr = ConvertToString(mPermission);

	Log::FormatInfo("{}{}:{}\t{}\t{}\t{}", indent, mName, mSize,perStr,opStr,mSignature);
}
bool ACreatureActor::InitCreatureRender()
{
	FString cur_creature_filename = creature_filename;
	bool does_exist = FPlatformFileManager::Get().GetPlatformFile().FileExists(*cur_creature_filename);
	if (!does_exist)
	{
		// see if it is in the content directory
		cur_creature_filename = FPaths::GameContentDir() + FString(TEXT("/")) + cur_creature_filename;
		does_exist = FPlatformFileManager::Get().GetPlatformFile().FileExists(*cur_creature_filename);
	}

	if (does_exist)
	{
		auto load_filename = ConvertToString(cur_creature_filename);
		// try to load creature
		ACreatureActor::LoadDataPacket(load_filename);
		LoadCreature(load_filename);

		// try to load all animations
		auto all_animation_names = creature_manager->GetCreature()->GetAnimationNames();
		auto first_animation_name = all_animation_names[0];
		for (auto& cur_name : all_animation_names)
		{
			ACreatureActor::LoadAnimation(load_filename, cur_name);
			AddLoadedAnimation(load_filename, cur_name);
		}

		auto cur_str = ConvertToString(start_animation_name);
		for (auto& cur_name : all_animation_names)
		{
			if (cur_name == cur_str)
			{
				first_animation_name = cur_name;
				break;
			}
		}

		SetActiveAnimation(first_animation_name);

		if (smooth_transitions)
		{
			creature_manager->SetAutoBlending(true);
		}

		FillBoneData();

		return true;
	}
	else {
		UE_LOG(LogTemp, Warning, TEXT("ACreatureActor::BeginPlay() - ERROR! Could not load creature file: %s"), *creature_filename);
	}


	return false;
}
//Джх╬╤сап
void DisplayManager::AddTime(Real deltaTime)
{

	lifetText->msg->setCaption("Life: "+ConvertToString(INSTANCE(PlayerManager)->lifeNum));
	bombText->msg->setCaption("Bomb: "+ConvertToString(INSTANCE(PlayerManager)->bombNum));
	scoreText->msg->setCaption("Score: "+ConvertToString(INSTANCE(ScoreManager)->displayScore));
	lifetText->node->setVisible(true);
	bombText->node->setVisible(true);
	scoreText->node->setVisible(true);

}
void
ACreatureSwitchItemActor:: InitSwitchRenderData()
{
	if (creature_actor)
	{
		auto creature_manager = creature_actor->GetCreatureManager();
		if (creature_manager)
		{
			auto cur_creature = creature_manager->GetCreature();
			auto& regions_map = cur_creature->GetRenderComposition()->getRegionsMap();
			std::string find_name = ConvertToString(creature_switch_region);

			for (auto& cur_region_pair : regions_map)
			{
				auto cur_region = cur_region_pair.second;
				if (cur_region->getName() == find_name)
				{
					// init render mesh
					real_switch_region = cur_region;
					InitRealSwitchRegion();

					switch_init_done = true;
					break;
				}
			}

		}
	}
}
Example #5
0
void ConfigManager::SetConfigV(int flag, int val){
	DBUtil::initDB("save.db"); 
	string sqlstr = "update config_save set value=" + ConvertToString(val) + " where id = " + ConvertToString(flag);
	((ConfigStruct*) cvs->objectForKey(flag))->value = val;
	DBUtil::updateData(sqlstr);
	DBUtil::closeDB(); 
}
Example #6
0
std::string ConfigManager::getZBState(int aiZBID)
{
	string ts_ret = "";

	stringstream tSqlS;
	tSqlS << "select * from zb_list ";
	tSqlS << "where id = ";
	tSqlS << ConvertToString(aiZBID);

	CCLog(">[ConfigManager] getZBState() | %s", tSqlS.str().c_str());
	vector<map<string, string>> vdata;
	DBUtil::initDB("save.db");
	vdata = DBUtil::getDataInfo(tSqlS.str(), NULL);
	int m_number = vdata.size();

	for (int i = 0; i < m_number; i++){
		ts_ret = ((map<string, string>) vdata.at(i)).at("config");
		if (ts_ret.length()>0){
			break;
		}
	}

	DBUtil::closeDB();
	return ts_ret;
}
void ACreatureCollectionActor::SetBluePrintActiveClip(FString clipName)
{
	if (AreAllActorsReady() == false)
	{
		delay_set_clip_name = ConvertToString(clipName);
		return;
	}

	active_clip_name = ConvertToString(clipName);

	if (collection_clips.count(active_clip_name))
	{
		auto& cur_collection = collection_clips[active_clip_name];
		cur_collection.ref_index = 0;
		UpdateActorAnimationToStart(cur_collection);
	}
}
Example #8
0
char * xlw::XlfOper4::AsString(int * pxlret) const
{
    char * s;
    int xlret = ConvertToString(s);
    if (pxlret)
        *pxlret=xlret;
    else
        ThrowOnError(xlret);
    return s;
};
Example #9
0
char * xlw::XlfOper4::AsString(const std::string& ErrorId, int * pxlret) const
{
    char * s;
    int xlret = ConvertToString(s);
    if (pxlret)
        *pxlret=xlret;
    else
        ThrowOnError(xlret,ErrorId+" conversion to char* failed");
    return s;
};
Example #10
0
bool LWOFile::LoadUVMap(unsigned int iChunkSize)
{
  Layer *pLayer=GetLastLayer();

  const char *pChunkEndPos=m_pData+iChunkSize-4;

  unsigned short iDimension=0;
  if(!ReadU2(iDimension))
  {
    return false;
  }

  // not 2 floats per vertex
  if(iDimension!=2)
  {
    // just skip
    m_pData+=iChunkSize-4-2;
    AddError("Warning: UVMap has "+ConvertToString(iDimension)+" floats per vertex (2 expected)");
    return true;
  }

  unsigned int iStrBytes=0;
  std::string strName;
  if(!ReadS0(strName,iStrBytes))
  {
    return false;
  }


  // VMAP { type[ID4], dimension[U2], name[S0],
  //  ( vert[VX], value[F4] # dimension )* }

  UVMap *pUVMap=new UVMap();
  pUVMap->m_strName=strName;
  pUVMap->m_Values.resize(2*pLayer->m_iPoints);
  pLayer->m_UVMaps.push_back(pUVMap);

  float *pValues=&(pUVMap->m_Values[0]);
  memset(pValues,0,sizeof(float)*2*pLayer->m_iPoints);

  while(m_pData<pChunkEndPos)
  {
    unsigned int iVertexID=0;
    if(!ReadVX(iVertexID)) return false;
    if(iVertexID>=pLayer->m_iPoints) return false;

    if(!ReadF4(pValues[iVertexID*2+0])) return false;
    if(!ReadF4(pValues[iVertexID*2+1])) return false;

    // flip v coordinate
    pValues[iVertexID*2+1]=1-pValues[iVertexID*2+1];
  }

  return true;
}
Example #11
0
ErrnoError HttpClient::SendRequest(common::http::http_method method,
                                   const uri::Url& url,
                                   common::http::http_protocol protocol,
                                   const char* extra_header,
                                   bool is_keep_alive) {
  CHECK(protocol <= common::http::HP_1_1);

  if (!url.IsValid()) {
    return make_errno_error_inval();
  }

  uri::Url::scheme sc = url.GetScheme();
  if (!(sc == uri::Url::http || sc == uri::Url::https)) {
    return make_errno_error_inval();
  }

  const std::string method_str = ConvertToString(method);
  time_t now = time(nullptr);
  char timebuf[100];
  strftime(timebuf, sizeof(timebuf), RFC1123FMT, gmtime(&now));

  uri::Upath path = url.GetPath();
  char header_data[1024] = {0};
  int cur_pos = SNPrintf(header_data, sizeof(header_data),
                         protocol == common::http::HP_2_0 ? "%s /%s " HTTP_2_0_PROTOCOL_NAME
                                                            "\r\n"
                                                            "Host: %s\r\n"
                                                            "Date: %s\r\n"
                                                          : "%s /%s " HTTP_1_1_PROTOCOL_NAME
                                                            "\r\n"
                                                            "Host: %s\r\n"
                                                            "Date: %s\r\n",
                         method_str, path.GetHpath(), url.GetHost(), timebuf);

  if (extra_header) {
    int exlen = SNPrintf(header_data + cur_pos, sizeof(header_data) - cur_pos, "%s\r\n", extra_header);
    cur_pos += exlen;
  }

  if (!is_keep_alive) {
#define CONNECTION_CLOSE "Connection: close\r\n\r\n"
    const int last_len = sizeof(CONNECTION_CLOSE) - 1;
    memcpy(header_data + cur_pos, CONNECTION_CLOSE, last_len);
    cur_pos += last_len;
  } else {
#define CONNECTION_KEEP_ALIVE "Keep-Alive: timeout=15, max=100\r\n\r\n"
    const int last_len = sizeof(CONNECTION_KEEP_ALIVE) - 1;
    memcpy(header_data + cur_pos, CONNECTION_KEEP_ALIVE, last_len);
    cur_pos += last_len;
  }

  DCHECK(strlen(header_data) == static_cast<size_t>(cur_pos));
  size_t nwrite = 0;
  return Write(header_data, cur_pos, &nwrite);
}
void 
ACreatureActor::SetBluePrintAnimationCustomTimeRange(FString name_in, int32 start_time, int32 end_time)
{
	auto cur_str = ConvertToString(name_in);
	auto all_animations = creature_manager->GetAllAnimations();
	if (all_animations.count(cur_str) > 0)
	{
		all_animations[cur_str]->setStartTime(start_time);
		all_animations[cur_str]->setEndTime(end_time);
	}
}
Example #13
0
void 
CreatureCore::ClearBluePrintPointCache(FString name_in, int32 approximation_level)
{
	auto cur_creature_manager = GetCreatureManager();
	if (!cur_creature_manager)
	{
		UE_LOG(LogTemp, Warning, TEXT("ACreatureActor::MakeBluePrintPointCache() - ERROR! Could not generate point cache for %s"), *name_in);
		return;
	}

	cur_creature_manager->ClearPointCache(ConvertToString(name_in));
}
void ACreatureCollectionActor::AddBluePrintCollectionClipData(FString clipName, ACreatureActor * creatureActor, FString creatureActorClipName)
{
	if (creatureActor == NULL)
	{
		return;
	}

	std::string new_clip_name = ConvertToString(clipName);
	std::string real_actor_clip_name = ConvertToString(creatureActorClipName);

	if (collection_clips.count(new_clip_name) < 0)
	{
		collection_clips[new_clip_name] = ACreatureCollectionClip();
	}

	creatureActor->SetIsDisabled(true);
	creatureActor->SetDriven(false);
	creatureActor->SetBluePrintAnimationLoop(false);
	ACreatureCollectionClip& cur_collection_clip = collection_clips[new_clip_name];
	cur_collection_clip.actor_sequence.push_back(std::make_pair(creatureActor, real_actor_clip_name));
}
Example #15
0
std::string ConvertToString(const fastonosql::core::upscaledb::Config& conf) {
  auto argv = conf.Args();

  if (conf.create_if_missing) {
    argv.push_back("-c");
  }

  if (conf.dbnum) {
    argv.push_back("-n");
    argv.push_back(ConvertToString(conf.dbnum));
  }

  return fastonosql::core::ConvertToStringConfigArgs(argv);
}
	FRenderMaterialRef GetRenderMaterial(eastl::wstring const & ShaderName) {
		eastl::wstring wShaderNameFinal = ConvertToResourceString(ShaderName);
		eastl::string ShaderNameFinal = ConvertToString(wShaderNameFinal);

		u64 Key = MurmurHash2_64(ShaderNameFinal.data(), sizeof(ShaderNameFinal[0]) * ShaderNameFinal.length(), 0);

		auto RenderMaterialIter = RenderMaterialsMap.find(Key);
		if (RenderMaterialIter != RenderMaterialsMap.end()) {
			return RenderMaterialIter->second;
		}

		FRenderMaterialRef Ref = eastl::make_shared<FRenderMaterial>(ShaderNameFinal);
		RenderMaterialsMap[Key] = Ref;
		return Ref;
	}
Example #17
0
void CreatureCore::ParseEvents(float deltaTime)
{
	SCOPE_CYCLE_COUNTER(STAT_CreatureCore_ParseEvents);

	float cur_runtime = (creature_manager->getActualRunTime());
	animation_frame = cur_runtime;

	auto load_filename = ConvertToString(absolute_creature_filename);

	auto cur_animation_name = creature_manager->GetActiveAnimationName();

	auto cur_token = GetAnimationToken(load_filename, cur_animation_name);
	CreatureModule::CreatureAnimation * cur_animation = NULL;
	if (global_animations.count(cur_token) > 0)
	{
		cur_animation = global_animations[cur_token].get();
	}


	if (cur_animation)
	{
		int cur_start_time = cur_animation->getStartTime();
		int cur_end_time = cur_animation->getEndTime();

		float diff_val_start = fabs(cur_runtime - cur_start_time);
		const float cutoff = 0.01f;

		if ((diff_val_start <= cutoff)
			&& !is_looping
			&& !play_start_done
			&& should_play)
		{
			play_start_done = true;
			should_process_animation_start = true;
		}

		if ((cur_runtime + 1.0f >= cur_end_time)
			&& !is_looping
			&& !play_end_done
			&& should_play)
		{
			play_end_done = true;
			should_play = false;
			should_process_animation_end = true;
		}
	}

}
Example #18
0
/*******************************************************************************
* Function Name  : ShowFPS
* Description    : отрисовка показаний количества кадров за сек.
* Input          : uint8_t FPS_counter
* Return         : None
*******************************************************************************/
void UI_ShowFPS(uint8_t FPS_counter)
{   
    static char FPS_TEXT[3] = {' ', ' ', 0};

    /* установить цвет фона, шрифт */
    LCD_SetBackColor(globalBackColor);
    LCD_SetFont(&lucidaConsole10ptFontInfo);
        
    /* очищаем старые показания */
    LCD_PutColorStrig(349, 224, 0, &FPS_TEXT[0], globalBackColor);
	
    /* verify limit */
	if(FPS_counter >= 100) FPS_counter = 99;
	ConvertToString(FPS_counter, &FPS_TEXT[0], 2);

	/* выводим новые показания */
    LCD_PutColorStrig(349, 224, 0, &FPS_TEXT[0], LightGray);
    
    /* сбрасываем флаг */
    show_FPS_flag = 0;
}
Example #19
0
void 
CreatureCore::MakeBluePrintPointCache(FString name_in, int32 approximation_level)
{
	auto cur_creature_manager = GetCreatureManager();
	if (!cur_creature_manager)
	{
		UE_LOG(LogTemp, Warning, TEXT("ACreatureActor::MakeBluePrintPointCache() - ERROR! Could not generate point cache for %s"), *name_in);
		return;
	}

	int32 real_approximation_level = approximation_level;
	if (real_approximation_level <= 0)
	{
		real_approximation_level = 1;
	}
	else if (real_approximation_level > 10)
	{
		real_approximation_level = 10;
	}

	cur_creature_manager->MakePointCache(ConvertToString(name_in), real_approximation_level);
}
Example #20
0
ErrnoError HttpClient::SendError(common::http::http_protocol protocol,
                                 common::http::http_status status,
                                 const char* extra_header,
                                 const char* text,
                                 bool is_keep_alive,
                                 const HttpServerInfo& info) {
  CHECK(protocol <= common::http::HP_1_1);
  const std::string title = ConvertToString(status);

  char err_data[1024] = {0};
  off_t err_len = SNPrintf(err_data, sizeof(err_data), HTML_PATTERN_ISISSSS7, status, title, status, title, text,
                           info.server_url, info.server_name);
  ErrnoError err = SendHeaders(protocol, status, extra_header, "text/html", &err_len, nullptr, is_keep_alive, info);
  if (err) {
    DEBUG_MSG_ERROR(err, logging::LOG_LEVEL_ERR);
  }

  size_t nwrite = 0;
  err = Write(err_data, err_len, &nwrite);
  if (err) {
    DEBUG_MSG_ERROR(err, logging::LOG_LEVEL_ERR);
  }
  return err;
}
Example #21
0
void CreatureCore::ProcessRenderRegions()
{
	auto cur_creature = creature_manager->GetCreature();
	auto& regions_map = cur_creature->GetRenderComposition()->getRegionsMap();
	int num_triangles = cur_creature->GetTotalNumIndices() / 3;

	// process alphas
	if (region_alphas.Num() != cur_creature->GetTotalNumPoints())
	{
		region_alphas.Init(255, cur_creature->GetTotalNumPoints());
	}

	// fill up animation alphas
	for (auto& cur_region_pair : regions_map)
	{
		auto cur_region = cur_region_pair.second;
		auto start_pt_index = cur_region->getStartPtIndex();
		auto end_pt_index = cur_region->getEndPtIndex();
		auto cur_alpha = FMath::Clamp(cur_region->getOpacity() / 100.0f, 0.0f, 1.0f) * 255.0f;


		for (auto i = start_pt_index; i <= end_pt_index; i++)
		{
			region_alphas[i] = (uint8)cur_alpha;
		}
	}

	// user overwrite alphas
	if (region_alpha_map.Num() > 0)
	{
		// fill up the alphas for specific regions with alpha overwrites
		for (auto cur_iter : region_alpha_map)
		{
			auto cur_name = ConvertToString(cur_iter.Key);
			auto cur_alpha = cur_iter.Value;

			if (regions_map.count(cur_name) > 0)
			{
				meshRenderRegion * cur_region = regions_map[cur_name];
				auto start_pt_index = cur_region->getStartPtIndex();
				auto end_pt_index = cur_region->getEndPtIndex();

				for (auto i = start_pt_index; i <= end_pt_index; i++)
				{
					region_alphas[i] = cur_alpha;
				}
			}
		}
	}

	// now write out alphas into render triangles
	/*
	glm::uint32 * cur_idx = cur_creature->GetGlobalIndices();
	for (int i = 0; i < num_triangles; i++)
	{
		int real_idx_1 = cur_idx[0];
		int real_idx_2 = cur_idx[1];
		int real_idx_3 = cur_idx[2];

		auto& cur_tri = draw_tris[i];
		auto set_alpha_1 = region_alphas[real_idx_1];
		auto set_alpha_2 = region_alphas[real_idx_2];
		auto set_alpha_3 = region_alphas[real_idx_3];

		cur_tri.Vertex0.Color = FColor(set_alpha_1, set_alpha_1, set_alpha_1, set_alpha_1);
		cur_tri.Vertex1.Color = FColor(set_alpha_2, set_alpha_2, set_alpha_1, set_alpha_2);
		cur_tri.Vertex2.Color = FColor(set_alpha_3, set_alpha_3, set_alpha_1, set_alpha_3);

		cur_idx += 3;
	}
	*/
}
Example #22
0
const char* CGameToken::GetValueAsString() const
{
	static string temp;
	temp = ConvertToString(m_value);
	return temp;
}
Example #23
0
void ArgumentList::GenerateThrow(std::string message, unsigned long row, unsigned long column)
{
	throw(StructureName+" "+message+" row:"+ConvertToString(row)+"; column:"+ConvertToString(column)+".");
}
void 
UCreatureMeshComponent::RunCollectionTick(float DeltaTime)
{
	UpdateCoreValues();

	if (bHiddenInGame)
	{
		return;
	}

	if (active_collection_clip == nullptr)
	{
		return;
	}

	float true_delta_time = DeltaTime * animation_speed;
	auto cur_data = GetCollectionDataFromClip(active_collection_clip);
	if (cur_data == nullptr)
	{
		return;
	}

	if (cur_data->animation_speed > 0)
	{
		true_delta_time = DeltaTime * cur_data->animation_speed;
	}

	if (active_collection_play == false)
	{
		true_delta_time = 0;
	}

	TArray<FProceduralMeshTriangle>& write_triangles = cur_data->ProceduralMeshTris;
	auto& cur_core = cur_data->creature_core;
	if (cur_core.GetCreatureManager() == nullptr)
	{
		return;
	}

	cur_core.should_play = true;
	bool can_tick = cur_core.RunTick(true_delta_time);

	if (can_tick) {
		// Events
		bool announce_start = cur_core.GetAndClearShouldAnimStart();
		bool announce_end = cur_core.GetAndClearShouldAnimEnd();

		float cur_runtime = (cur_core.GetCreatureManager()->getActualRunTime());

		bool is_collection_start = (active_collection_clip->active_index == 0) && announce_start;
		bool is_collection_end = (active_collection_clip->active_index == active_collection_clip->sequence_clips.Num() - 1) && announce_end;

		if (is_collection_start)
		{
			CreatureAnimationStartEvent.Broadcast(cur_runtime);
		}

		if (is_collection_end)
		{
			CreatureAnimationEndEvent.Broadcast(cur_runtime);
		}

		// Process Collection Clip
		auto cur_manager = cur_core.GetCreatureManager();
		auto& all_animations = cur_manager->GetAllAnimations();
		auto& cur_token = active_collection_clip->sequence_clips[active_collection_clip->active_index];
		std::string anim_string = ConvertToString(cur_token.animation_name);
		if (all_animations.count(anim_string) == 0)
		{
			return;
		}

		auto clip_animation = all_animations.at(anim_string).get();
		float next_time = cur_runtime + true_delta_time;

		if (next_time >= clip_animation->getEndTime())
		{
			// At the end of current clip, see if we should switch to the next clip
			int next_active_index = active_collection_clip->active_index + 1;
			int seq_num = active_collection_clip->sequence_clips.Num();
			bool do_switch = false;
			if (next_active_index >= seq_num)
			{
				if (active_collection_loop)
				{
					active_collection_clip->active_index = 0;
					do_switch = true;
				}
			}
			else {
				active_collection_clip->active_index++;
				do_switch = true;
			}

			if (do_switch)
			{
				SetActiveCollectionAnimation(active_collection_clip);
			}
		}

		DoCreatureMeshUpdate(GetCollectionDataIndexFromClip(active_collection_clip));
	}
}
/**
 * Convert int value to string.
 */
const char* CDeviceUtils::ConvertToString(int intVal)
{
   return ConvertToString((long)intVal);
}
void ACreatureActor::SetBluePrintBlendActiveAnimation(FString name_in, float factor)
{
	auto cur_str = ConvertToString(name_in);
	SetAutoBlendActiveAnimation(cur_str, factor);
}
void ACreatureActor::SetBluePrintActiveAnimation(FString name_in)
{
	auto cur_str = ConvertToString(name_in);
	SetActiveAnimation(cur_str);
}
Example #28
0
/**
  * @brief  LoadPreference
  * @param  None
  * @retval None
  */
void LoadPreference(void)
{
	uint16_t i, j = 0;
	uint8_t load_success = 0;
	char m_txt[50] = "param ";
	uint16_t m_color;

	Settings_Message("For skip load settings push 'DOWN'", Red);

	/* Init data massive */
	for(i = 0; i < 800; i ++)
	{
		INFO_A.DATA[i] = INFO_B.DATA[i] = 0;
		INFO_A.visDATA[i] = INFO_B.visDATA[i] = 120;
	}

	delay_ms(1000);

	if(EPM570_Read_Keys() == DOWN)
	{
		Settings_Message("Load Preference SKIPED", White);
		delay_ms(1000);
	}
	else
	{
		/* Load all params */
		for(i = 0; i < PARAM_NUM; i++)
		{
			load_success = Settings_LoadParam(SettingsParams[i]);

			memset(&m_txt[6], 0, 49 - 6);
			ConvertToString(i, &m_txt[6], 3);
			j = strlen(m_txt);

			if(load_success != 0)
			{
				strcat(&m_txt[j], " failed, erased");
				m_color = Red;
			}
			else
			{
				strcat(&m_txt[j], " load");
				m_color = LighGreen;
			}

			Settings_Message(m_txt, m_color);
			if(load_success != 0) delay_ms(200);
		}


		/* ------------------------------------- Update States, Modes, Texts and other ------------------------------------- */

		/* вид интерполяции */
		ActiveMode = (InterpolationMode_TypeDef*)InterpModes[Interpolate_AciveMode_Index];	//
		if(ActiveMode == &FFT_MODE)
		{
			gOSC_MODE.autoMeasurments = ON;
			mModeActive = (MeasMode_TypeDef*)&MeasurmentsMode[2];
		}

		/* чтение значения времени автоотключения */
		if( (AutoOff_Timer.Work_Minutes != 0) && (AutoOff_Timer.Work_Minutes != (int8_t)-1) )
		{
			AutoOff_Timer.State = ENABLE;
			AutoOff_Timer.ResetTime = RTC_GetCounter();

			sprintf (&AutoPowerOFF_btnTxt[10], "%d", AutoOff_Timer.Work_Minutes);
			AutoPowerOFF.Text = AutoPowerOFF_btnTxt;
		}

		/* Samples num points */
		if(gOSC_MODE.oscNumPoints == 0) gOSC_MODE.oscNumPoints = 388;

		/* Update sync */
		gInterfaceMenu.Buttons[4]->Text = (char*)&sweepMODE_text[gSyncState.Mode];
		TrigMenu.Buttons[4]->Text = TriggShowInfo.triggType_Name[gSyncState.Type];
		TrigMenu.Buttons[5]->Text = (char*)&Trigg_Sourse_Sync_Text[gSyncState.Sourse][0];

		gSyncState.foops->SetTrigg_X(trigPosX_cursor.Position - leftLimit);
		gSyncState.foops->StateUpdate();

		/* AC/DC inputs state */
		setActiveButton(gInterfaceMenu.Buttons[8]);
		ON_OFF_Channels(&INFO_A, TRUE);
		setActiveButton(gInterfaceMenu.Buttons[9]);
		ON_OFF_Channels(&INFO_B, TRUE);

		/* Autodivider for analog inputs */
		Set_AutoDivider_State(param_auto_div, ENABLE);

		/* PWM correction zero for analog inputs */
		*(INFO_A.AD_Type.Analog.corrZ) = INFO_A.AD_Type.Analog.Zero_PWM_values[INFO_A.AD_Type.Analog.Div];
		*(INFO_B.AD_Type.Analog.corrZ) = INFO_B.AD_Type.Analog.Zero_PWM_values[INFO_B.AD_Type.Analog.Div];

		/*  */
		gInterfaceMenu.Buttons[1]->Text = Change_AnalogDivider(CHANNEL_A, INFO_A.AD_Type.Analog.Div);		// btnVDIV_A
		gInterfaceMenu.Buttons[2]->Text = Change_AnalogDivider(CHANNEL_B, INFO_B.AD_Type.Analog.Div);		// btnVDIV_B

		/* Interpolation */
		changeInterpolation(ActiveMode);
		Interpolation.Text = (char*)ActiveMode->Text;

		/* Update sweep state, scale coeffs */
		Sweep_UpdateState();

		/* Update UI elements */
		UI_LoadPreferenceUpdate();

		/*Set LCD backlight*/
		EPM570_Set_BackLight(gOSC_MODE.BackLight);
	}
}
Example #29
0
/**
  * @brief  This function handles External lines 9 to 5 interrupt request.
  * 		Zero cross 220 line motor input
  * @param  None
  * @retval None
  */
void EXTI9_5_IRQHandler(void)
{
	static FlagStatus start = SET;

#ifdef __MOTOR_REGULATE_RELAY_METHOD
	static uint8_t period_count = 0;
	static uint8_t skip_periods_num = 0;
	static uint8_t period_div = 0;
#else
	static int speed = 0;
	static float period_delay_ms = 0;
#endif

	uint32_t interrupt_status = EXTI->IMR & GPIO_MOTOR_ZC_A1;

#ifdef __DBUG_INTR_MOTOR
	char dbg_str[10] = "\r\n ";
	static uint8_t dbg_full_period_cnt = 0;
#endif

	if (((EXTI->PR & GPIO_MOTOR_ZC_A1) != (uint32_t)RESET) && (interrupt_status != (uint32_t)RESET))
	{
		EXTI->PR = GPIO_MOTOR_ZC_A1;		/* Clear the EXTI line pending bit */

		if(CU_Motor_GetState()->state == 1)
		{

#ifdef __MOTOR_REGULATE_RELAY_METHOD

			if((start == SET) || (skip_periods_num != CU_Motor_GetState()->speed))
			{
#ifdef __DBUG_INTR_MOTOR
				Debug_Send_String("\r\n intr: start");
				dbg_full_period_cnt = 0;
#endif
				start = RESET;
				skip_periods_num = CU_Motor_GetState()->speed;
				period_count = 0;
				period_div = 0;

				if(skip_periods_num >= 100)
				{
#ifdef __DBUG_INTR_MOTOR
					Debug_Send_String("\r\n intr: skip_periods_num >= 100");
#endif
					CU_Motor_GetState()->state = 0;
					GPIO_ResetBits(GPIO_MOTOR_OUT_PORT, GPIO_MOTOR_OUT_PWM);
					return;
				}
				else
				{
					if(skip_periods_num == 0)
					{
						//						period_div = 0;
						CU_Motor_GetState()->state = 0;
						GPIO_ResetBits(GPIO_MOTOR_OUT_PORT, GPIO_MOTOR_OUT_PWM);
						return;
					}
					else period_div = (uint8_t)(100.0 / (float)skip_periods_num);

#ifdef __DBUG_INTR_MOTOR
					ConvertToString(skip_periods_num, &dbg_str[2], 3);
					Debug_Send_String("\r\n intr: skip_per_num ");
					Debug_Send_String(dbg_str);

					ConvertToString(period_div, &dbg_str[2], 3);
					Debug_Send_String("\r\n intr: period_div ");
					Debug_Send_String(dbg_str);
#endif
				}
			}

			period_count++;
			if(period_count > 100)
			{
				period_count = 0;

#ifdef __DBUG_INTR_MOTOR
				dbg_full_period_cnt++;
				ConvertToString(dbg_full_period_cnt, &dbg_str[2], 3);
				Debug_Send_String("\r\n intr: *** dbg period_cnt ***");
				Debug_Send_String(dbg_str);
#endif
			}

			// full ON
			if(period_div == 0)
			{
				GPIO_SetBits(GPIO_MOTOR_OUT_PORT, GPIO_MOTOR_OUT_PWM);
			}
			else
			{
#ifdef __DBUG_INTR_MOTOR
				ConvertToString(period_count, &dbg_str[2], 3);
				Debug_Send_String("\r\n intr: period_cnt ");
				Debug_Send_String(dbg_str);
#endif
				if((period_count % period_div) == 0)
				{
#ifdef __DBUG_INTR_MOTOR
					Debug_Send_String("\r\n intr: triac ON");
#endif
					GPIO_SetBits(GPIO_MOTOR_OUT_PORT, GPIO_MOTOR_OUT_PWM);
				}
				else
				{
#ifdef __DBUG_INTR_MOTOR
					Debug_Send_String("\r\n intr: triac OFF");
#endif
					GPIO_ResetBits(GPIO_MOTOR_OUT_PORT, GPIO_MOTOR_OUT_PWM);
				}
			}

#else	/*__MOTOR_REGULATE_PHASE_METHOD */

			GPIO_MOTOR_OUT_PORT->BRR = GPIO_MOTOR_OUT_PWM;		// RESET

			if((start == SET) || (speed != CU_Motor_GetTachoSpeed()))
			{
#ifdef __DBUG_INTR_MOTOR
				Debug_Send_String("\r\n intr: start");
				dbg_full_period_cnt = 0;
#endif
				start = RESET;
				speed = CU_Motor_GetTachoSpeed();

				if((speed == 0) || (speed >= 1000))
				{
#ifdef __DBUG_INTR_MOTOR
					Debug_Send_String("\r\n intr: speed == 0 || speed >= 1000");
#endif
					CU_Motor_GetState()->state = 0;
					return;
				}
				else
				{
					period_delay_ms = __220_HALF_PERIOD__ - (__220_HALF_PERIOD__ / (1000.0 / (float)speed));
					if(period_delay_ms > __220_HALF_PERIOD__ - 1) period_delay_ms = __220_HALF_PERIOD__ - 1;

#ifdef __DBUG_INTR_MOTOR
					ConvertToString(speed, &dbg_str[2], 4);
					Debug_Send_String("\r\n intr: speed ");
					Debug_Send_String(dbg_str);

					ConvertToString(period_delay_ms, &dbg_str[2], 3);
					Debug_Send_String("\r\n intr: period_delay ");
					Debug_Send_String(dbg_str);
#endif
				}
			}

			if(period_delay_ms != 0)
			{
				/* set autoreload counter, (500 - 1) = 0.5ms, (1000 - 1) = 1ms */
				TIM4->ARR = (uint32_t)(period_delay_ms * 999.0);
				TIM4->CR1 |= TIM_CR1_CEN;
			}
			else
			{
				TIM4->CR1 &= (uint16_t)(~((uint16_t)TIM_CR1_CEN));
				GPIO_MOTOR_OUT_PORT->BSRR = GPIO_MOTOR_OUT_PWM;		// SET
			}
#endif /*__MOTOR_REGULATE_METHOD */

		}
		else
		{
#ifdef __DBUG_INTR_MOTOR
			Debug_Send_String("\r\n intr: motor status OFF, disable intr");
#endif

			NVIC_DisableIRQ(EXTI9_5_IRQn);
			GPIO_MOTOR_OUT_PORT->BRR = GPIO_MOTOR_OUT_PWM;		// RESET

			/* set start flag status for the next motor starts */
			start = SET;
		}
	}


	/* tacho interrupt */
	interrupt_status = EXTI->IMR & GPIO_MOTOR_TACHO_A63;

	if (((EXTI->PR & GPIO_MOTOR_TACHO_A63) != (uint32_t)RESET) && (interrupt_status != (uint32_t)RESET))
	{
		EXTI->PR = GPIO_MOTOR_TACHO_A63;		/* Clear the EXTI line pending bit */
//		if ((GPIOA->IDR & GPIO_Pin_8) != (uint32_t)Bit_RESET) tachometr_counter++;

		 tachometr_counter++;
	}
}
Example #30
0
bool CreatureCore::InitCreatureRender()
{
	FString cur_creature_filename = creature_filename;
	bool init_success = false;
	std::string load_filename;

	//////////////////////////////////////////////////////////////////////////
	//Changed by God of Pen
	//////////////////////////////////////////////////////////////////////////
	if (pJsonData != nullptr)
	{
		if (cur_creature_filename.IsEmpty())
		{
			cur_creature_filename = creature_asset_filename;
		}

		absolute_creature_filename = cur_creature_filename;
		load_filename = ConvertToString(cur_creature_filename);

		// try to load creature
		init_success = CreatureCore::LoadDataPacket(load_filename, pJsonData);;
	}
	else{
		bool does_exist = FPlatformFileManager::Get().GetPlatformFile().FileExists(*cur_creature_filename);
		if (!does_exist)
		{
			// see if it is in the content directory
			cur_creature_filename = FPaths::GameContentDir() + FString(TEXT("/")) + cur_creature_filename;
			does_exist = FPlatformFileManager::Get().GetPlatformFile().FileExists(*cur_creature_filename);
		}

		if (does_exist)
		{
			absolute_creature_filename = cur_creature_filename;
			load_filename = ConvertToString(cur_creature_filename);

			// try to load creature
			CreatureCore::LoadDataPacket(load_filename);
			init_success = true;
		}
		else {

			if (do_file_warning && (!load_filename.empty())) {
				UE_LOG(LogTemp, Warning, TEXT("ACreatureActor::BeginPlay() - ERROR! Could not load creature file: %s"), *creature_filename);
				GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("ACreatureActor::BeginPlay() - ERROR! Could not load creature file: %s"), *creature_filename));
			}
		}
	}
	
	if (init_success)
	{
		LoadCreature(load_filename);

		// try to load all animations
		auto all_animation_names = creature_manager->GetCreature()->GetAnimationNames();
		auto first_animation_name = all_animation_names[0];
		for (auto& cur_name : all_animation_names)
		{
			CreatureCore::LoadAnimation(load_filename, cur_name);
			AddLoadedAnimation(load_filename, cur_name);
		}

		auto cur_str = ConvertToString(start_animation_name);
		for (auto& cur_name : all_animation_names)
		{
			if (cur_name == cur_str)
			{
				first_animation_name = cur_name;
				break;
			}
		}

		SetActiveAnimation(first_animation_name);

		if (smooth_transitions)
		{
			creature_manager->SetAutoBlending(true);
		}

		FillBoneData();
	}


	return init_success;
}