;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Leilão do 5G vai afetar quem tem parabólica; entenda o que ficou decidido

Antena parabólica instalada no telhado de uma casa - Pixabay
Antena parabólica instalada no telhado de uma casa Imagem: Pixabay

Guilherme Tagiaroli

De Tilt. em São Paulo

26/02/2021 13h39

A Anatel (Agência Nacional de Telecomunicações) agora tem um edital de 5G, cujo leilão deve rolar ainda no primeiro semestre deste ano. Isso quer dizer que começa a ficar mais claro o que vai acontecer com quem tem parabólica —uma das "avenidas" no céu da nova tecnologia ocupa a mesma banda das antenas, causando interferências.

Não há prazos ainda definidos, mas o edital estabelece que operadoras que comprarem lotes da banda de 3,5 GHz, a mais cobiçada do 5G, deverão distribuir antenas menores e receptores para quem tem antenas parabólicas. O documento, inclusive, diz que os aparelhos serão instalados —os clientes não vão receber o fazer isso por conta própria.

"O processo todo vai ser similar ao da mudança de TV analógica para digital. As pessoas vão receber um kit gratuito, que vai conter uma antena menor, como a da Sky, pois a parabólica vai parar de funcionar", explicou o conselheiro da Anatel Carlos Baigorri, durante coletiva de imprensa sobre o edital do 5G, realizada nesta sexta-feira (26).

Segundo Anatel, parabólicas serão substituídas por antenas menores, como esta - iStock - iStock
Segundo Anatel, parabólicas serão substituídas por antenas menores, como esta
Imagem: iStock

De acordo com a Anatel, o processo será coordenado por uma entidade a ser criada e que cuidará da distribuição e instalação desses equipamentos.

Interferência

A banda C, que transmite TV via parabólica, atua na frequência de 3,7 GHz a 6,45 GHz. Já o 5G na verdade usa a frequência que vai de 3,3 GHz a 3,7 GHz. Essa sobreposição poderia atrapalhar a nova conexão.

Para resolver isso, há duas possibilidades:

  • "redução" do problema com filtros instalados nas TVs
  • migração da parabólica para outra frequência, a banda Ku (15,35 GHz a 17,25 GHz)

As operadoras sugeriram o uso de filtros. Já a associação de empresas de rádio e TV defendiam a migração, liberando de vez a faixa. No fim das contas, a Anatel optou pela migração.

A Anatel chegou a testar o uso filtros, mas teve de suspender o trabalho devido à pandemia em março. Desde então, conduziu simulações de computador que mostraram que os filtros não eram o bastante para impedir a interferência.

O dinheiro para a migração virá do valor pago na licitação do 5G —o que diminuirá a parte que sobra para investir em infraestrutura de banda larga em lugares com conexão ruim. A escolha, portanto, foi vista como uma disputa entre usar o dinheiro para ampliar a inclusão digital no Brasil ou manter uma operação considerada antiquada por alguns.

O levantamento mais recente do IBGE (Instituto Brasileiro de Geografia e Estatística), feito em 2017, informa que 6,5 milhões de residências no Brasil contam apenas com antena parabólica para ver TV.