Esta bibloteca (libsatprotocol.so) implementa as funções de comunicação entre o aplicativo AC e o equipamento SAT através de chamadas de funções de alto nível. A API desta biblioteca, segue as definições da especificação de requisitos do SAT publicado pela SEFAZ-SP.
A libsatprotocol.so foi testada nas seguintes versões de Linux:
Os tempos de respostas da biblioteca seguem a especificação de requisitos que define o tempo máximo de timeout para cada função da API, portanto, nada precisa ser feito em relação a gerencia de timeout que fica totalmente a cargo da biblioteca.
É muito importante atentar para que os xmls de entrada gerados pelo aplicativo de automação (AC) codifiquem os XMLs sempre em UTF-8. Arquivos XMLs coficados em outro formato poderá ser rejeitado pela retaguarda da SEFAZ. A biblioteca não consiste estes aquirvos de entrada, portanto é de responsabilidade do AC garantir a correta codificação dos mesmos.
A libsatprotocol.so deve ser instalado na toochain e referenciada no linker da aplicação.
gcc main.c -o app -lsatprotocol
O arquivo de header
enum codes { __NOERROR__ =0, __NOCONNECT__=1, __READERROR__, __CHKERROR__, __CMDUNKERROR__, __TIMEOUT__ = 0x8000 , __SEMCTS__ }; extern "C" { /** * @name TrocarCodigoDeAtivacaoSAT * @brief O Aplicativo Comercial ou outro software fornecido pelo Fabricante * @brief poderá realizar a troca do código de ativação a qualquer momento * @param numeroSessao * @param CodigoAtivacao * @param opcao * @param novoCodigo * @param confNovoCodigo * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * TrocarCodigoDeAtivacao(int nSessao,char *CodigoAtivacao,int opcao, char *novoCodigo, char * confNovoCodigo ) ; /** * @name GeraNumeroessao * @brief Gera o numero de sessao para o AC * */ int GeraNumeroSessao (void) ; /** * @name CloseSerial * @brief Fecha a porta serial * */ void CloseSerial(void); /** * @name AtivarSAT * @brief Metodo para ativar o uso do SAT * @param subComando * @param codigoDeAtivacao * @param CNPJ * @param cUF * @return CSR */ char * AtivarSAT(int nSessao,int subComando, char *codigoDeAtivacao, char *CNPJ, int cUF); /** * @name ComunicarCertificadoICPBRASIL * @brief Comunica o certificado icp Brasil * @param numeroSessao * @param codigoDeAtivacao * @param Certificado * @return pointer para area com retorno do comando enviado pelo dispositivo SAT **/ char * ComunicarCertificadoICPBRASIL (int nSessao,char *codigoDeAtivacao, char *Certificado) ; /** * @name EnviaDadosVenda * @brief Responsavel pelo comando de envio de dados de vendas * @param codigoDeAtivacao * @param numeroSessao * @param dadosVenda * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * EnviarDadosVenda(int nSessao,char *codigoDeAtivacao,char *dadosVenda); /** * @name CanclearUltimaVenda * @brief cancela o ultimo cupom fiscal * @param codigoDeAtivacao * @param chave * @param dadosCancelamento * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * CancelarUltimaVenda(int nSessao,char *codigoDeAtivacao, char *chave, char *dadosCancelamento); /** * @name AbreSerialSAT * @brief Configura os parametros de comunicacao da porta serial apontada por commPort * @param commPort - Porta Serial 0 COM1 , 1 COM2, .... * @param baud : baudrate * @param nBits: Numero de stop bits * @param paridade: Paridade 0-Sem paridade, 1-Paridade par, 2- Impar * @param nStops * @return COMM_ERROR */ int AbreSerialSAT (int commPort, int baud, int nBits, int paridade, int nStops) ; /** * @name ConsultarSAT * @brief consultar SAT * @param numeroSessao * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * ConsultarSAT (int sessao) ; /** * @name TesteFimAFim * @brief Esta função consiste em um teste de comunicação entre o AC, o Equipamento SAT e a SEFAZ * @param numeroSessao * @param codigoAtivacao * @param dadosVenda * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * TesteFimAFim(int nSessao,char *codigoDeAtivacao, char *dadosVenda) ; /** * @name ConsultarStatusOperacional * @brief Essa função é responsável por verificar a situação de funcionamento do Equipamento SAT * @param numeroSessao * @param codigoAtivacao * @return pointer para area com retorno do comando enviado pelo dispositivo SAT * */ char * ConsultarStatusOperacional(int nSessao,char *codigoDeAtivacao) ; /** * @name ConsultarNumeroSessao * @brief O AC poderá verificar se a última sessão requisitada foi processada em caso de não * @brief recebimento do retorno da operação. O equipamento SAT-CF-e retornará exatamente o resultado da * @brief sessão consultada * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * ConsultarNumeroSessao(int nSessao,char *CodAtivacao,int numeroSessao) ; /** * @name ConfigurarInterfaceDeRede * @brief Responsavel pela configuracao da interface de rede do SAT (Ver espec:2.6.10) * @param numeroSessao * @param codigoDeAtivacao * @param dadosVenda * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * ConfigurarInterfaceDeRede (int nSessao,char *codigoDeAtivacao, char *DadosConfiguracao) ; /** * @name AssociarAssinatura * @brief Responsavel pelo comando de associar o AC ao SAT * @param numeroSessao * @param CodigoAtivacao * @param CNPJ * @param assinaturaCNPJs * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * AssociarAssinatura(int nSessao,char *codativacao,char *CNPJvalue, char *assinaturaCNPJs) ; /** * @name AtualizarSoftwateSAT * @brief O Contribuinte utilizará a função AtualizarSoftwareSAT para a atualização imediata do * @brief software básico do Equipamento SAT * @param numeroSessao * @param codigoAtivacao * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * AtualizarSoftwareSAT(int nSessao,char *CodigoAtivacao) ; /** * @name ExtrairLogs * @brief O Aplicativo Comercial poderá extrair os arquivos de registro do * @brief Equipamento SAT por meio da função ExtrairLogs * @param numeroSessao * @param codigoAtivacao * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * ExtrairLogs(int nSessao,char *CodigoAtivacao) ; /** * @name BloquearSAT * @brief O Aplicativo Comercial ou outro software fornecido pelo Fabricante poderá * @brief realizar o bloqueio operacional do Equipamento SAT * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * BloquearSAT(int nSessao,char *CodigoAtivacao); /** * @name DesbloquearSAT * @brief O Aplicativo Comercial ou outro software fornecido pelo * @brief Fabricante poderá realizar o desbloqueio operacional do Equipamento SAT * @param numeroSessao * @param codigoAtivacao * @return pointer para area com retorno do comando enviado pelo dispositivo SAT */ char * DesbloquearSAT(int nSessao,char *CodigoAtivacao) ; }
DIMEP Sistemas Ltda. <