Exemplo n.º 1
0
Arquivo: main.c Projeto: Alvw/Ads8Hc05
__interrupt void Port1_ISR(void)
{
  if (P1IFG & AFE_DRDY_PIN) { 
    P1IFG &= ~AFE_DRDY_PIN;      // Clear DRDY flag
    long new_data[12];
    AFE_Read_Data(&new_data[0]);
    loffStat = AFE_getLoffStatus();
    ADC10_Read_Data(&new_data[8]);
    addBatteryData(new_data[11]);
    ADC10_Measure();
    if(packetAddNewData(new_data)){
      packetDataReady = 1;
      __bic_SR_register_on_exit(CPUOFF); // Не возвращаемся в сон при выходе
    }
  }
}
status_t BnMediaPlayerService::onTransact(
    uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
    switch (code) {
        case CREATE: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            sp<IMediaPlayerClient> client =
                interface_cast<IMediaPlayerClient>(data.readStrongBinder());
            int audioSessionId = data.readInt32();
            sp<IMediaPlayer> player = create(client, audioSessionId);
            reply->writeStrongBinder(player->asBinder());
            return NO_ERROR;
        } break;
        case DECODE_URL: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            const char* url = data.readCString();
            uint32_t sampleRate;
            int numChannels;
            audio_format_t format;
            sp<IMemory> player = decode(url, &sampleRate, &numChannels, &format);
            reply->writeInt32(sampleRate);
            reply->writeInt32(numChannels);
            reply->writeInt32((int32_t) format);
            reply->writeStrongBinder(player->asBinder());
            return NO_ERROR;
        } break;
        case DECODE_FD: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            int fd = dup(data.readFileDescriptor());
            int64_t offset = data.readInt64();
            int64_t length = data.readInt64();
            uint32_t sampleRate;
            int numChannels;
            audio_format_t format;
            sp<IMemory> player = decode(fd, offset, length, &sampleRate, &numChannels, &format);
            reply->writeInt32(sampleRate);
            reply->writeInt32(numChannels);
            reply->writeInt32((int32_t) format);
            reply->writeStrongBinder(player->asBinder());
            return NO_ERROR;
        } break;
        case CREATE_MEDIA_RECORDER: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            sp<IMediaRecorder> recorder = createMediaRecorder();
            reply->writeStrongBinder(recorder->asBinder());
            return NO_ERROR;
        } break;
        case CREATE_METADATA_RETRIEVER: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            sp<IMediaMetadataRetriever> retriever = createMetadataRetriever();
            reply->writeStrongBinder(retriever->asBinder());
            return NO_ERROR;
        } break;
        case GET_OMX: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            sp<IOMX> omx = getOMX();
            reply->writeStrongBinder(omx->asBinder());
            return NO_ERROR;
        } break;
        case MAKE_CRYPTO: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            sp<ICrypto> crypto = makeCrypto();
            reply->writeStrongBinder(crypto->asBinder());
            return NO_ERROR;
        } break;
        case MAKE_DRM: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            sp<IDrm> drm = makeDrm();
            reply->writeStrongBinder(drm->asBinder());
            return NO_ERROR;
        } break;
        case MAKE_HDCP: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            bool createEncryptionModule = data.readInt32();
            sp<IHDCP> hdcp = makeHDCP(createEncryptionModule);
            reply->writeStrongBinder(hdcp->asBinder());
            return NO_ERROR;
        } break;
        case ADD_BATTERY_DATA: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            uint32_t params = data.readInt32();
            addBatteryData(params);
            return NO_ERROR;
        } break;
        case PULL_BATTERY_DATA: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            pullBatteryData(reply);
            return NO_ERROR;
        } break;
        case LISTEN_FOR_REMOTE_DISPLAY: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            sp<IRemoteDisplayClient> client(
                    interface_cast<IRemoteDisplayClient>(data.readStrongBinder()));
            String8 iface(data.readString8());
            sp<IRemoteDisplay> display(listenForRemoteDisplay(client, iface));
            reply->writeStrongBinder(display->asBinder());
            return NO_ERROR;
        } break;
        case UPDATE_PROXY_CONFIG:
        {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);

            const char *host = NULL;
            int32_t port = 0;
            const char *exclusionList = NULL;

            if (data.readInt32()) {
                host = data.readCString();
                port = data.readInt32();
                exclusionList = data.readCString();
            }

            reply->writeInt32(updateProxyConfig(host, port, exclusionList));

            return OK;
        }
        default:
            return BBinder::onTransact(code, data, reply, flags);
    }
}
status_t BnMediaPlayerService::onTransact(
    uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
{
    switch(code) {
        case CREATE: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            pid_t pid = data.readInt32();
            sp<IMediaPlayerClient> client =
                interface_cast<IMediaPlayerClient>(data.readStrongBinder());
            int audioSessionId = data.readInt32();
            sp<IMediaPlayer> player = create(pid, client, audioSessionId);
            reply->writeStrongBinder(player->asBinder());
            return NO_ERROR;
        } break;
        case DECODE_URL: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            const char* url = data.readCString();
            uint32_t sampleRate;
            int numChannels;
            int format;
            sp<IMemory> player = decode(url, &sampleRate, &numChannels, &format);
            reply->writeInt32(sampleRate);
            reply->writeInt32(numChannels);
            reply->writeInt32(format);
            reply->writeStrongBinder(player->asBinder());
            return NO_ERROR;
        } break;
        case DECODE_FD: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            int fd = dup(data.readFileDescriptor());
            int64_t offset = data.readInt64();
            int64_t length = data.readInt64();
            uint32_t sampleRate;
            int numChannels;
            int format;
            sp<IMemory> player = decode(fd, offset, length, &sampleRate, &numChannels, &format);
            reply->writeInt32(sampleRate);
            reply->writeInt32(numChannels);
            reply->writeInt32(format);
            reply->writeStrongBinder(player->asBinder());
            return NO_ERROR;
        } break;
        case CREATE_MEDIA_RECORDER: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            pid_t pid = data.readInt32();
            sp<IMediaRecorder> recorder = createMediaRecorder(pid);
            reply->writeStrongBinder(recorder->asBinder());
            return NO_ERROR;
        } break;
        case CREATE_METADATA_RETRIEVER: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            pid_t pid = data.readInt32();
            sp<IMediaMetadataRetriever> retriever = createMetadataRetriever(pid);
            reply->writeStrongBinder(retriever->asBinder());
            return NO_ERROR;
        } break;
        case GET_OMX: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            sp<IOMX> omx = getOMX();
            reply->writeStrongBinder(omx->asBinder());
            return NO_ERROR;
        } break;
        case ADD_BATTERY_DATA: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            uint32_t params = data.readInt32();
            addBatteryData(params);
            return NO_ERROR;
        } break;
        case PULL_BATTERY_DATA: {
            CHECK_INTERFACE(IMediaPlayerService, data, reply);
            pullBatteryData(reply);
            return NO_ERROR;
        } break;
        default:
            return BBinder::onTransact(code, data, reply, flags);
    }
}
Exemplo n.º 4
0
Arquivo: main.c Projeto: Alvw/Ads8Hc05
__interrupt void TimerA_ISR(void)
{ 
  TACTL &= ~TAIFG;
  if(rfResetCntr == 0x01){
    P3OUT |= BIT7;//BT reset pin hi
    rfResetCntr = 0;
  }
  if(isRecording){
    if(resetTimeout){
      pingCntr++;
      if(pingCntr > resetTimeout){//no signal from host for ~ resetTimeout * 4 seconds
        P3OUT &= ~BIT7; //BT reset pin lo
        if (rfResetCntr == 0)rfResetCntr = 1;
        pingCntr = 0;
      }
    }
  }else{//if not recording
    long new_data[4];
    ADC10_Read_Data(&new_data[0]);
    addBatteryData(new_data[3]);
    ADC10_Measure();
  }
  if(!(BIT5 & P2IN)){// if power button pressed
      btnCntr++;
  }else{
      btnCntr = 0;
  }
  if(BIT0 & P1IN){// if rf connected
      rfConStat = 1;
  }else{
      rfConStat = 0;
  }
  if(!(BIT4 & P2IN)){// if charge plug connected
    if(shutDownCntr == 0){
      shutDownCntr = 1;
      rf_send(chargeShutDownMessage,5);
    }
  }
  if(btnCntr >= (4)){ //1 сек задержка перед выключением
        led(1);
        P1OUT &= ~BIT6; //power hold pin
        while(1){} //ждем отпускания кнопки
  }
  
  if(!lowBatteryMessageAlreadySent){    
      if(sumBatteryVoltage < BATT_LOW_TH){
        lowBatteryMessageAlreadySent = 1;
        rf_send(lowBatteryMessage,7);
        if (shutDownCntr == 0) shutDownCntr = 1;
      }
  }
  if(shutDownCntr){
    shutDownCntr++;
    if(shutDownCntr > 4){//wait 1 second before shut down
      P1OUT &= ~BIT6; //power hold pin
    }
  }
  if(powerUpCntr){
    powerUpCntr++;
    if(powerUpCntr >= 2400){//забыли выключить питание (не стартует запись в теечение ~10 минут)
      P1OUT &= ~BIT6; //отключаем питание
    }
    if(powerUpCntr%2){
      led(1);
    }else{
      led(0);
    }
  }
  if(rf_delete_unfinished_incoming_messages()){
    rf_send(unfinishedIncomingMsgError,7);
  }
  if(rf_tx_fail_flag){//debug information maybe delete
    rf_tx_fail_flag = 0;
    rf_send(txFailError,7);
  }
}
Exemplo n.º 5
0
__interrupt void TimerA_ISR(void)
{
  TACTL &= ~TAIFG;

  if (rfResetCntr == 0x01)
  {
    P3OUT |= BIT7;  // BT reset pin hi
    rfResetCntr = 0;
  }

  if (isRecording && rfConStat)
  {
    if (resetTimeout)
    {
      pingCntr++;
      if (pingCntr > resetTimeout)
      { // no signal from host for ~ resetTimeout * 4 seconds
        P3OUT &= ~BIT7;  // BT reset pin lo
        if (rfResetCntr == 0) rfResetCntr = 1;
        pingCntr = 0;
      }
    }
  }
  else
  { // if not recording
    long new_data[4];
    ADC10_Read_Data(&new_data[0]);
    addBatteryData(new_data[3]);
    ADC10_Measure();
  }

  if (BIT0 & P1IN)  // if rf connected
    rfConStat = 1;
  else
    rfConStat = 0;

  if (!lowBatteryMessageAlreadySent)
  {
    if (sumBatteryVoltage < BATT_LOW_TH)
    {
      lowBatteryMessageAlreadySent = 1;
      rf_send(lowBatteryMessage, 7);

      if(shutDownCntr == 0)
        shutDownCntr = 1;
    }
  }

  if (powerUpCntr)
  {
    powerUpCntr++;

    if (powerUpCntr >= 2400)  // забыли выключить питание (не стартует запись в теечение ~10 минут)
    {
      if (shutDownCntr == 0)
        shutDownCntr = 1;
    }

    if (powerUpCntr % 2)
      led(1);
    else
      led(0);
  }

  if (shutDownCntr)
  {
    shutDownCntr++;
    if (shutDownCntr > 4)
    { // wait 1 second before shut down
      AFE_StopRecording();
      P3OUT &= ~BIT7;  // BT reset pin low
      TACCR0 = 0x00;
      led(0);
    }
  }

  if (rf_delete_unfinished_incoming_messages())
    rf_send(unfinishedIncomingMsgError, 7);

  if(rf_tx_fail_flag)
  { // debug information maybe delete
    rf_tx_fail_flag = 0;
    rf_send(txFailError, 7);
  }
}