/******************************************************************************* * Copyright (c) 2011, 2016 Eurotech and/or its affiliates * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eurotech *******************************************************************************/ package org.eclipse.kura.windows.clock; import java.util.Date; import org.eclipse.kura.KuraErrorCode; import org.eclipse.kura.KuraException; import org.eclipse.kura.core.util.ProcessUtil; import org.eclipse.kura.core.util.SafeProcess; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class NtpdClockSyncProvider extends AbstractNtpClockSyncProvider { private static final Logger s_logger = LoggerFactory.getLogger(NtpdClockSyncProvider.class); // ---------------------------------------------------------------- // // Concrete Methods // // ---------------------------------------------------------------- @Override protected boolean syncClock() throws KuraException { boolean ret = false; SafeProcess proc = null; try { proc = ProcessUtil.exec("w32tm /config /manualpeerlist:" + this.m_ntpHost + ",0x8 /syncfromflags:MANUAL"); proc.waitFor(); if (proc.exitValue() == 0) { s_logger.info("System Clock Synchronized with " + this.m_ntpHost); this.m_lastSync = new Date(); // Call update method with 0 offset to ensure the clock event gets fired and the HW clock // is updated if desired. this.m_listener.onClockUpdate(0); ret = true; } else { s_logger.warn( "Error while synchronizing System Clock with NTP host {}. Please verify network connectivity ...", this.m_ntpHost); } } catch (Exception e) { throw new KuraException(KuraErrorCode.INTERNAL_ERROR, e); } finally { ProcessUtil.destroy(proc); } return ret; } }